0
Grafová databázeneo4jJosef Holý@holyjJosef.Holy@Proactify.com
NOSQL     =Not Only SQL
NOSQL DatabázeKomplexita                              Objem                   3
NOSQL DatabázeKomplexita                           Key-value                          (Cassandra)                         ...
NOSQL DatabázeKomplexita                       Column-family                         (HBase)                              ...
NOSQL DatabázeKomplexita                   Document                  (MongoDB)                          Column-family     ...
NOSQL DatabázeKomplexita                RDBMS                         Document                        (MongoDB)           ...
NOSQL DatabázeKomplexita                Graph                         Document                        (MongoDB)           ...
NOSQL DatabázeKomplexita                   Graph                            Document                           (MongoDB)  ...
NOSQL Databáze Key-value, Column, Document, Tables              ~ agregační problémy ~Jaký je průměrný věk lidí na této př...
NOSQL Databáze  Key-value, Column, Document, Tables                 ~ agregační problémy ~Jaký je průměrný věk lidí na tét...
(Social) Graph v RDBMSid     name1      Adam2     Bedřich3     Čenda4      David5     Eduard        ...     PERSON        ...
(Social) Graph v RDBMSid     name     start      type        start1      Adam       1       KNOWS         22     Bedřich  ...
Social Graph v RDBMSid     name     start      type        start   id     name1      Adam       1       KNOWS         2   ...
Problém:           Najdi všechny              přátele                přátel                  ...                přátel    ...
Graph DB?           =Explicitně Definované         Uzly         16
Graph DB?           =Explicitně Definované    Uzly A Hrany         17
Graph DB?           =Explicitně Definované    Uzly A Hrany         18
Graph DB?           =Explicitně Definované    Uzly A Hrany         19
Graph DB?                        =             Explicitně Definované                 Uzly A Hrany                  Type: K...
Graph DB?                         =              Explicitně Definované             Uzly A Hrany A Property                ...
RDBMS vs. GraphDBid     name     start         label    start   id     name1      Adam         1     KNOWS         2      ...
Výhoda Graph DBV Graph DB platíme cenu za vztah při              vytváření.V Ostatních Databázích se cena platí při       ...
Grafové databáze●    AllegroGraph – Quad Store●    OrientDB – Document-graph●    FlockDB – Adjacency lists store●    …●   ...
Neo4j●    Property Graph Database●    Edice a Licence:    ●        Community ~ (A)GPL    ●        Advanced ~ Commercial   ...
Neo4j●    Property Graph Database●    Edice a Licence:    ●        Community ~ (A)GPL    ●        Advanced ~ Commercial   ...
Write: ACIDGraphDabaseService gdb = newEmbeddedGraphDatabase(„/data/graph/test“, PARAMS);                               27
Write: ACIDGraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);Transaction tx = gdb.beginTx(); ...
Write: ACIDGraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);Transaction tx = gdb.beginTx();t...
Write: ACIDGraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);Transaction tx = gdb.beginTx();t...
Read: (Lucene) Index         31
Read: Pattern-matchingCYPHER:Najdi všechny Čendovy přáteleSTART cenda=node:node_auto_index(name = Čenda)MATCH (cenda)-[:KN...
Read: Pattern-matchingCYPHER:Najdi všechny Čendovy přátele do hloubky 5START cenda=node:node_auto_index(name = Čenda)MATCH...
Read: TraversalGremlin:Najdi všechny Čendovy přáteleresult = []cenda = ...najdi v indexu...cenda.outE(KNOWS).inV.aggregate...
Read: Traversal + closureGremlin:Najdi všechny Čendovy přátele do hloubky 5result = []cenda = ...najdi v indexu...cenda.ou...
Traversals vs. JOINs       3-step traversal: Gremlin  g.V(?).outE.inV.outE.inV.outE.inV             1         2           ...
Zkušenosti: „Interest Graph“                                      weight: 0.83                                      LIKES ...
Zkušenosti: „Interest Graph“●    po 10 měsících pilotního provozu    ●        Embedded mode (Java, Linux, Amazon EC2)    ●...
PozorV Graph DB platíme cenu za vztah při              vytváření.V Ostatních Databázích se cena platí při             vyhl...
Pozor●    Super-nodes = (10k+ relationships)    ●        Index-free traversal → time    ●        Write performance – node ...
For anything withmultiple relationships, multiple connections,          Neo4j absolutely ROCKS!                           ...
Josef Holý@holyjJosef.Holy@Proactify.com
Upcoming SlideShare
Loading in...5
×

Grafová databáze neo4j

730

Published on

Prezentace o grafové databázi neo4J z CZJUGU z května 2012.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
730
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Grafová databáze neo4j"

  1. 1. Grafová databázeneo4jJosef Holý@holyjJosef.Holy@Proactify.com
  2. 2. NOSQL =Not Only SQL
  3. 3. NOSQL DatabázeKomplexita Objem 3
  4. 4. NOSQL DatabázeKomplexita Key-value (Cassandra) Objem 4
  5. 5. NOSQL DatabázeKomplexita Column-family (HBase) Key-value (Cassandra) Objem 5
  6. 6. NOSQL DatabázeKomplexita Document (MongoDB) Column-family (HBase) Key-value (Cassandra) Objem 6
  7. 7. NOSQL DatabázeKomplexita RDBMS Document (MongoDB) Column-family (HBase) Key-value (Cassandra) Objem 7
  8. 8. NOSQL DatabázeKomplexita Graph Document (MongoDB) Column-family (HBase) Key-value (Cassandra) Objem 8
  9. 9. NOSQL DatabázeKomplexita Graph Document (MongoDB) Column-family (HBase) Key-value (Cassandra) 90% Objem Use Cases 9
  10. 10. NOSQL Databáze Key-value, Column, Document, Tables ~ agregační problémy ~Jaký je průměrný věk lidí na této přednášce? 10
  11. 11. NOSQL Databáze Key-value, Column, Document, Tables ~ agregační problémy ~Jaký je průměrný věk lidí na této přednášce? Graph DB ~ strukturální, vztahové, problémy ~S kým z lidí na této přednášce bych měl jít na pivo? 11
  12. 12. (Social) Graph v RDBMSid name1 Adam2 Bedřich3 Čenda4 David5 Eduard ... PERSON 12
  13. 13. (Social) Graph v RDBMSid name start type start1 Adam 1 KNOWS 22 Bedřich 2 KNOWS 53 Čenda 3 KNOWS 44 David ...5 Eduard RELATIONSHIP ... PERSON 13
  14. 14. Social Graph v RDBMSid name start type start id name1 Adam 1 KNOWS 2 1 Adam2 Bedřich 2 KNOWS 5 2 Bedřich3 Čenda 3 KNOWS 4 3 Čenda4 David ... 4 David5 Eduard RELATIONSHIP 5 Eduard ... ... PERSON PERSON 14
  15. 15. Problém: Najdi všechny přátele přátel ... přátel Čendových přátel ~V RDBMS = multiple JOINs => time cost
  16. 16. Graph DB? =Explicitně Definované Uzly 16
  17. 17. Graph DB? =Explicitně Definované Uzly A Hrany 17
  18. 18. Graph DB? =Explicitně Definované Uzly A Hrany 18
  19. 19. Graph DB? =Explicitně Definované Uzly A Hrany 19
  20. 20. Graph DB? = Explicitně Definované Uzly A Hrany Type: KNOWSName:Čenda Name:David 20
  21. 21. Graph DB? = Explicitně Definované Uzly A Hrany A Property Type: KNOWSName:Čenda Since:1992 Name:David 21
  22. 22. RDBMS vs. GraphDBid name start label start id name1 Adam 1 KNOWS 2 1 Adam2 Bedřich 2 KNOWS 5 2 Bedřich3 Čenda 3 KNOWS 4 3 Čenda4 David 3 KNOWS 5 4 David5 Eduard RELATIONSHIP 5 Eduard ... 1 2 3 ... PERSON PERSON 5 4 22
  23. 23. Výhoda Graph DBV Graph DB platíme cenu za vztah při vytváření.V Ostatních Databázích se cena platí při vyhledávání. 23
  24. 24. Grafové databáze● AllegroGraph – Quad Store● OrientDB – Document-graph● FlockDB – Adjacency lists store● …● Neo4j 24
  25. 25. Neo4j● Property Graph Database● Edice a Licence: ● Community ~ (A)GPL ● Advanced ~ Commercial ● Enterprise ~ Commercial● Nasazení: ● Embedded Mode (Java, JAR) ● Standalone Mode (REST API) 25
  26. 26. Neo4j● Property Graph Database● Edice a Licence: ● Community ~ (A)GPL ● Advanced ~ Commercial ● Enterprise ~ Commercial● Nasazení: ● Embedded Mode (Java, JAR) ● Standalone Mode (REST API) 26
  27. 27. Write: ACIDGraphDabaseService gdb = newEmbeddedGraphDatabase(„/data/graph/test“, PARAMS); 27
  28. 28. Write: ACIDGraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);Transaction tx = gdb.beginTx(); //FULL ACID TX support 28
  29. 29. Write: ACIDGraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);Transaction tx = gdb.beginTx();try{ tx.success();}catch(SomeException ex){ tx.failure();}finally{ tx.finish();} 29
  30. 30. Write: ACIDGraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);Transaction tx = gdb.beginTx();try{ Node c = gdb.createNode(); c.setProperty(„name“, „ enda“); Node e = gdb.createNode(); e.setProperty(„name“, „Eduard“); Relationship rel = c.setRelationshipTo(e, KNOWS); tx.success();}catch(SomeException ex){ tx.failure();}finally{ tx.finish();} 30
  31. 31. Read: (Lucene) Index 31
  32. 32. Read: Pattern-matchingCYPHER:Najdi všechny Čendovy přáteleSTART cenda=node:node_auto_index(name = Čenda)MATCH (cenda)-[:KNOWS]->(friend)RETURN friend 32
  33. 33. Read: Pattern-matchingCYPHER:Najdi všechny Čendovy přátele do hloubky 5START cenda=node:node_auto_index(name = Čenda)MATCH (cenda)-[:KNOWS*5]->(friend)RETURN friend 33
  34. 34. Read: TraversalGremlin:Najdi všechny Čendovy přáteleresult = []cenda = ...najdi v indexu...cenda.outE(KNOWS).inV.aggregate(result)return result 34
  35. 35. Read: Traversal + closureGremlin:Najdi všechny Čendovy přátele do hloubky 5result = []cenda = ...najdi v indexu...cenda.outE(KNOWS).inV.loop(2){it.loops <5}.aggergate(result)return result 35
  36. 36. Traversals vs. JOINs 3-step traversal: Gremlin g.V(?).outE.inV.outE.inV.outE.inV 1 2 3 3-step traversal v MySQL – table JOINs 1MNodesSELECT c.inV /FROM graph as a, graph as b, graph as c 4MEdgesWHEREa.inV=b.outV AND b.inV=c.outV AND a.outV=? 1 2 3 36
  37. 37. Zkušenosti: „Interest Graph“ weight: 0.83 LIKES LIKES LIKES weight: 0.745 Weight: 0.3 LIKES weight: 0.5 LIKES 0.6 weight: LIKES weight: 0.2 37
  38. 38. Zkušenosti: „Interest Graph“● po 10 měsících pilotního provozu ● Embedded mode (Java, Linux, Amazon EC2) ● 100M+ nodes ● 200M+relationships ● avg <50ms recommendations response time, 100 reads per second 38
  39. 39. PozorV Graph DB platíme cenu za vztah při vytváření.V Ostatních Databázích se cena platí při vyhledávání. 39
  40. 40. Pozor● Super-nodes = (10k+ relationships) ● Index-free traversal → time ● Write performance – node locked při vytvoření relationshipu● Lucene Index ● Write performance – index locking ● Vendor Lock-in – messy JTA/JTS implementace● Horizontální škálovatelnost pro Write ● Sharding support se připravuje 40
  41. 41. For anything withmultiple relationships, multiple connections, Neo4j absolutely ROCKS! ~ Werner Vogels Amazon CTO 41
  42. 42. Josef Holý@holyjJosef.Holy@Proactify.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×