SlideShare a Scribd company logo
Grafová databáze
neo4j

Josef Holý
@holyj
Josef.Holy@Proactify.com
NOSQL
     =
Not Only SQL
NOSQL Databáze

Komplexita




                              Objem



                   3
NOSQL Databáze

Komplexita




                           Key-value
                          (Cassandra)


                                    Objem



                   4
NOSQL Databáze

Komplexita




                       Column-family
                         (HBase)
                                        Key-value
                                       (Cassandra)


                                                 Objem



                   5
NOSQL Databáze

Komplexita




                   Document
                  (MongoDB)

                          Column-family
                            (HBase)
                                           Key-value
                                          (Cassandra)


                                                    Objem



                   6
NOSQL Databáze

Komplexita


                RDBMS

                         Document
                        (MongoDB)

                                Column-family
                                  (HBase)
                                                 Key-value
                                                (Cassandra)


                                                          Objem



                         7
NOSQL Databáze

Komplexita


                Graph

                         Document
                        (MongoDB)

                                Column-family
                                  (HBase)
                                                 Key-value
                                                (Cassandra)


                                                          Objem



                         8
NOSQL Databáze

Komplexita


                   Graph

                            Document
                           (MongoDB)

                                   Column-family
                                     (HBase)
                                                    Key-value
                                                   (Cassandra)



               90%                                           Objem
             Use Cases

                            9
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
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
(Social) Graph v RDBMS
id     name

1      Adam

2     Bedřich

3     Čenda

4      David

5     Eduard



        ...


     PERSON



                12
(Social) Graph v RDBMS
id     name     start      type        start

1      Adam       1       KNOWS         2

2     Bedřich     2       KNOWS         5

3     Čenda       3       KNOWS         4

4      David                   ...

5     Eduard            RELATIONSHIP



        ...


     PERSON



                          13
Social Graph v RDBMS
id     name     start      type        start   id     name

1      Adam       1       KNOWS         2      1      Adam

2     Bedřich     2       KNOWS         5      2     Bedřich

3     Čenda       3       KNOWS         4      3     Čenda

4      David                   ...             4      David

5     Eduard            RELATIONSHIP           5     Eduard



        ...                                            ...


     PERSON                                         PERSON



                          14
Problém:

           Najdi všechny
              přátele
                přátel
                  ...
                přátel
         Čendových přátel
                   ~
V RDBMS = 'multiple JOINs' => time cost
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: KNOWS




Name:Čenda                           Name:David



                       20
Graph DB?


                         =
              Explicitně Definované
             Uzly A Hrany A Property

                   Type: KNOWS




Name:Čenda              Since:1992     Name:David



                        21
RDBMS vs. GraphDB
id     name     start         label    start   id     name

1      Adam         1     KNOWS         2      1      Adam

2     Bedřich       2     KNOWS         5      2     Bedřich

3     Čenda         3     KNOWS         4      3     Čenda

4      David        3     KNOWS         5      4      David

5     Eduard            RELATIONSHIP           5     Eduard



        ...     1         2            3               ...


     PERSON                                         PERSON
                          5            4


                          22
Výhoda Graph DB
V 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
Grafové databáze
●
    AllegroGraph – 'Quad Store'
●
    OrientDB – 'Document-graph'
●
    FlockDB – 'Adjacency lists store'
●
    …
●
    Neo4j




                        24
Neo4j
●
    'Property Graph Database'
●
    Edice a Licence:
    ●
        Community ~ (A)GPL
    ●
        Advanced ~ Commercial
    ●
        Enterprise ~ Commercial
●
    Nasazení:
    ●
        Embedded Mode (Java, JAR)
    ●
        Standalone Mode (REST API)

                          25
Neo4j
●
    'Property Graph Database'
●
    Edice a Licence:
    ●
        Community ~ (A)GPL
    ●
        Advanced ~ Commercial
    ●
        Enterprise ~ Commercial
●
    Nasazení:
    ●
        Embedded Mode (Java, JAR)
    ●
        Standalone Mode (REST API)

                          26
Write: ACID

GraphDabaseService gdb = new
EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);




                               27
Write: ACID

GraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);

Transaction tx = gdb.beginTx(); //FULL ACID TX support




                                               28
Write: ACID

GraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS);

Transaction tx = gdb.beginTx();

try{


       tx.success();
}catch(SomeException ex){
       tx.failure();
}finally{
       tx.finish();
}




                                               29
Write: ACID
GraphDabaseService 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
Read: (Lucene) Index




         31
Read: Pattern-matching


CYPHER:Najdi všechny Čendovy přátele
START cenda=node:node_auto_index(name = 'Čenda')
MATCH (cenda)-[:KNOWS]->(friend)
RETURN friend




                        32
Read: Pattern-matching


CYPHER:Najdi všechny Čendovy přátele do hloubky 5
START cenda=node:node_auto_index(name = 'Čenda')
MATCH (cenda)-[:KNOWS*5]->(friend)
RETURN friend




                        33
Read: Traversal


Gremlin:Najdi všechny Čendovy přátele
result = []
cenda = ...najdi v indexu...
cenda.outE('KNOWS').inV.aggregate(result)
return result




                        34
Read: Traversal + closure


Gremlin:Najdi všechny Čendovy přátele do hloubky 5
result = []
cenda = ...najdi v indexu...
cenda.outE('KNOWS').inV.loop(2){it.loops   <
5}.aggergate(result)
return result




                         35
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
                                              1MNodes
SELECT c.inV                                     /
FROM graph as a, graph as b, graph as c       4MEdges
WHERE
a.inV=b.outV AND b.inV=c.outV AND a.outV=?
      1                2                3



                                       36
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
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
Pozor
V 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
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
For anything with
multiple relationships, multiple connections,
          Neo4j absolutely ROCKS!

                                  ~ Werner Vogels
                                     Amazon CTO




                     41
Josef Holý
@holyj
Josef.Holy@Proactify.com

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Grafová databáze neo4j

  • 2. NOSQL = Not Only SQL
  • 4. NOSQL Databáze Komplexita Key-value (Cassandra) Objem 4
  • 5. NOSQL Databáze Komplexita Column-family (HBase) Key-value (Cassandra) Objem 5
  • 6. NOSQL Databáze Komplexita Document (MongoDB) Column-family (HBase) Key-value (Cassandra) Objem 6
  • 7. NOSQL Databáze Komplexita RDBMS Document (MongoDB) Column-family (HBase) Key-value (Cassandra) Objem 7
  • 8. NOSQL Databáze Komplexita Graph Document (MongoDB) Column-family (HBase) Key-value (Cassandra) Objem 8
  • 9. NOSQL Databáze Komplexita Graph Document (MongoDB) Column-family (HBase) Key-value (Cassandra) 90% Objem Use Cases 9
  • 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. 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. (Social) Graph v RDBMS id name 1 Adam 2 Bedřich 3 Čenda 4 David 5 Eduard ... PERSON 12
  • 13. (Social) Graph v RDBMS id name start type start 1 Adam 1 KNOWS 2 2 Bedřich 2 KNOWS 5 3 Čenda 3 KNOWS 4 4 David ... 5 Eduard RELATIONSHIP ... PERSON 13
  • 14. Social Graph v RDBMS id name start type start id name 1 Adam 1 KNOWS 2 1 Adam 2 Bedřich 2 KNOWS 5 2 Bedřich 3 Čenda 3 KNOWS 4 3 Čenda 4 David ... 4 David 5 Eduard RELATIONSHIP 5 Eduard ... ... PERSON PERSON 14
  • 15. Problém: Najdi všechny přátele přátel ... přátel Čendových přátel ~ V RDBMS = 'multiple JOINs' => time cost
  • 16. Graph DB? = Explicitně Definované Uzly 16
  • 17. Graph DB? = Explicitně Definované Uzly A Hrany 17
  • 18. Graph DB? = Explicitně Definované Uzly A Hrany 18
  • 19. Graph DB? = Explicitně Definované Uzly A Hrany 19
  • 20. Graph DB? = Explicitně Definované Uzly A Hrany Type: KNOWS Name:Čenda Name:David 20
  • 21. Graph DB? = Explicitně Definované Uzly A Hrany A Property Type: KNOWS Name:Čenda Since:1992 Name:David 21
  • 22. RDBMS vs. GraphDB id name start label start id name 1 Adam 1 KNOWS 2 1 Adam 2 Bedřich 2 KNOWS 5 2 Bedřich 3 Čenda 3 KNOWS 4 3 Čenda 4 David 3 KNOWS 5 4 David 5 Eduard RELATIONSHIP 5 Eduard ... 1 2 3 ... PERSON PERSON 5 4 22
  • 23. Výhoda Graph DB V 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. Grafové databáze ● AllegroGraph – 'Quad Store' ● OrientDB – 'Document-graph' ● FlockDB – 'Adjacency lists store' ● … ● Neo4j 24
  • 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. 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. Write: ACID GraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS); 27
  • 28. Write: ACID GraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS); Transaction tx = gdb.beginTx(); //FULL ACID TX support 28
  • 29. Write: ACID GraphDabaseService gdb = new EmbeddedGraphDatabase(„/data/graph/test“, PARAMS); Transaction tx = gdb.beginTx(); try{ tx.success(); }catch(SomeException ex){ tx.failure(); }finally{ tx.finish(); } 29
  • 30. Write: ACID GraphDabaseService 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
  • 32. Read: Pattern-matching CYPHER:Najdi všechny Čendovy přátele START cenda=node:node_auto_index(name = 'Čenda') MATCH (cenda)-[:KNOWS]->(friend) RETURN friend 32
  • 33. Read: Pattern-matching CYPHER:Najdi všechny Čendovy přátele do hloubky 5 START cenda=node:node_auto_index(name = 'Čenda') MATCH (cenda)-[:KNOWS*5]->(friend) RETURN friend 33
  • 34. Read: Traversal Gremlin:Najdi všechny Čendovy přátele result = [] cenda = ...najdi v indexu... cenda.outE('KNOWS').inV.aggregate(result) return result 34
  • 35. Read: Traversal + closure Gremlin:Najdi všechny Čendovy přátele do hloubky 5 result = [] cenda = ...najdi v indexu... cenda.outE('KNOWS').inV.loop(2){it.loops < 5}.aggergate(result) return result 35
  • 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 1MNodes SELECT c.inV / FROM graph as a, graph as b, graph as c 4MEdges WHERE a.inV=b.outV AND b.inV=c.outV AND a.outV=? 1 2 3 36
  • 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. 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. Pozor V 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. 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. For anything with multiple relationships, multiple connections, Neo4j absolutely ROCKS! ~ Werner Vogels Amazon CTO 41