Lynintroduksjon til grafdatabaser og Neo4j

60 %
40 %
Information about Lynintroduksjon til grafdatabaser og Neo4j
Technology

Published on March 20, 2014

Author: astensby

Source: slideshare.net

Description

Lightningtalk about neo4j and graph databases, given at the javaBin Vestfold meetup on the 19th of March. (In Norwegian)

En lynintroduksjon til grafdatabaser og Neo4j Aleksander M. Stensby aleksander (dot) stensby (at) gmail (dot) com

Agenda • Intro til grafdatabaser og modellering • Intro til neo4j og Cypher • (Intro til SpringData Neo4j)

... på 15 minutter!

Relasjondatabaser suger...

...på relasjoner

Relasjondatabaser er fantastisk på aggregering av data, mapping av skjemaer og tabell data!

MEN

vi har en tendens til å tvinge _alle_ problemstillinger inn i relasjondatabasene våre!

Join-hell.. Rekursjon... Null-sjekking...

NoSQLStørrelse Kompleksitet Grafer Dokument BigTable KV

NoSQLStørrelse Kompleksitet Grafer Dokument BigTable KV 90% Milliarder av noder og relasjoner

Venner av venner...

Person ID Navn Venner PersonID VennID «Aleks» sine venners venner? SELECT p1.Person AS PERSON, p2.Person AS VENN_AV_VENN FROM Venner v1 JOIN Person p1 ON v1.PersonID = p1.ID JOIN Venner v2 ON v2.VennID = v1.VennID JOIN Person p2 ON v2.VennID = p2. ID WHERE p1.Navn = 'Aleks‘ AND v2.VennID <> p1.ID

Kilde: Neo4j in Action 1,000,000 personer Dybde RDBMS Neo4j Antall rader 2 0.016 0.01 ~ 2500 3 30.267 0.168 ~ 110,000 4 1543.505 1.359 ~ 600,000 5 DNF 2.132 ~ 800,000

En grafdatabase... • benytter grafstrukturer med – Noder – Relasjoner – Attributter • til å lagre informasjon! • Ypperlig til relasjoner – men ikke best på aggregering av data

En graf lagrer data i noder ALEKS RAYMOND

Relasjoner knytter noder sammen FRIENDS_WITH ALEKS RAYMOND

Noder har attributter ALEKS RAYMOND Age: 29 First Name: Aleksander Last Name: Stensby Age: 31 First Name: Raymond Last Name: Koteng FRIENDS_WITH

Relasjoner kan også ha attributter ALEKS RAYMOND Age: 29 First Name: Aleksander Last Name: Stensby Age: 31 First Name: Raymond Last Name: Koteng FRIENDS_WITH Since: 01.01.2004

Relasjoner kan gå flere veier ALEKS RAYMOND Age: 29 First Name: Aleksander Last Name: Stensby Age: 31 First Name: Raymond Last Name: Koteng FRIENDS_WITH Since: 01.01.2004 FRIENDS_WITH Since: 01.01.2004

ALEKS RAYMOND Age: 29 First Name: Aleksander Last Name: Stensby Age: 31 First Name: Raymond Last Name: Koteng FRIENDS_WITH Since: 01.01.2004

ALEKS RAYMOND Age: 29 First Name: Aleksander Last Name: Stensby Type: Person Age: 31 First Name: Raymond Last Name: Koteng Type: Person FRIENDS_WITH Since: 01.01.2004 forskjellige typer av noder

Person Person Sport Programmeringspråk Drikke Person

Neo4j – [ER_EN] -> Property Graph

Cypher "Make the simple things simple, and the complex things possible"

Intro til Cypher • START • MATCH • WHERE • RETURN • CREATE • DELETE • SET • FOREACH • WITH

Beskriv hva du ønsker å hente ut med PATTERNS (a)-[r]->(b)

(Aleks) – [FRIENDS_WITH] -> (Raymond)

MATCH MATCH (movie:Movie) RETURN movie

WHERE MATCH movie WHERE move.title = ‘Blade Runner' RETURN movie

Venner... MATCH (aleks)-[:KNOWS]->(friend) WHERE aleks.firstName= 'Aleks' RETURN friend.firstName

Venners venner... MATCH (aleks)-[:KNOWS]->(friend)-[:KNOWS]->(friend_of_friend) WHERE aleks.firstName= 'Aleks' RETURN friend_of_friend.firstName

Venners venner... MATCH (aleks)-[:KNOWS*2]->(friend_of_friend) WHERE aleks.firstName= 'Aleks' RETURN friend_of_friend.firstName

Venners venner... MATCH (aleks)-[:KNOWS*2..2]->(friend_of_friend) WHERE aleks.firstName= 'Aleks' AND NOT (aleks)-[:KNOWS]->(friend_of_friend) RETURN friend_of_friend.firstName

på 1-2-3 DEMO

Og mye mye mer... • Traversals navigerer grafen • Traversals identifiserer paths • Paths ordner noder • Cypher parametere • Indexes • Neo4j embedded, Neo4j REST • Neo4j 2.x – Labels og automatiske indekser • Gremlin (procedural) – Cypher (declarative) • Enterprise (multi-instance cluster, online backup) • Neo4j Spatial

Lessons Learned • Vær forsiktig med versjoner og oppgraderinger… – Neo 1.9.x -> Neo 2.x kan by på mange problemer – Spring Data Neo4j != Neo4j • Noder er “first-class” citizens I grafen – Hyperedges støttes ikke -> kan bruke “event nodes” • Dyrt å aggregere - caching av stats på noder! • Unike og ekspressive relasjonstyper

Add a comment

Related presentations

Related pages

Lynintroduksjon til grafdatabaser og Neo4j - Technology

1. En lynintroduksjon til grafdatabaser og Neo4j Aleksander M. Stensby aleksander (dot) stensby (at) gmail (dot) com
Read more

Grafdatabaser lockade många till Neo4j GraphDay i ...

Grafdatabaser lockade många till Neo4j GraphDay i Stockholm ... Introduktion till grafdatabaser av Jim Webber; ... ri ce in k@ ne ot tu rd ec hn ol az og ...
Read more

Navigationsseddel - Tips Og Tricks Til Revit - Documents

Share Navigationsseddel - Tips Og Tricks Til ... Lynintroduksjon til grafdatabaser og Neo4j. ... Content Marketing + cases og ideer til content produktion ...
Read more

Abakus: Introduksjon til grafdatabaser

Introduksjon til grafdatabaser; Vis ... og ulemper knyttet til forskjellige bruksområder. Neo4j er en ... videre til intervju og ...
Read more

Grafdatabaser löser nya former av bedrägeribrott – innan ...

Gamesys är Europas största operatör för sociala spel och de transaktioner som hör till. ... om Neo4j och grafdatabaser ... hn qf cs xm pb ol og wk y ...
Read more

Microsoft Danmark Case: Microsoft Azure - Neo Technology AB

Detta till skillnad från grafdatabaser där ... Det finns många områden där grafdatabaser som Neo4j är särskilt ... Personlige oplysninger og ...
Read more

Altran Norge

... Content Management og hjelper bedrifter med å foredle informasjon til kunnskap. Vi kan grafdatabaser. ... Neo4J er en grafdatabase som er spesielt ...
Read more

Neo4j - en graf-database by L Jantzen on Prezi

Hvordan kan man bruke Neo4j? Neo4j 2.0 ... Intro til Neo4j Leif @Jantzen Relasjonsdatabasen lagrer data i tabeller og kolonner
Read more