SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Вогонь думок повік не згасне
Вогонь думок повік не згаснеВогонь думок повік не згасне
Вогонь думок повік не згаснеНБУ для дітей
 
Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...
Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...
Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...Rivne Regional Universal Scientific Library
 
читаємо речення і тексти з малюнками.
читаємо речення і тексти з малюнками.читаємо речення і тексти з малюнками.
читаємо речення і тексти з малюнками.Наталья Шадуро
 
мовні ігри
мовні ігримовні ігри
мовні ігриelen elen
 
здоровя збережувальні технології
здоровя збережувальні технологіїздоровя збережувальні технології
здоровя збережувальні технологіїMaryana Bigun
 
сторінка музичного керівника
сторінка музичного керівникасторінка музичного керівника
сторінка музичного керівникаAnton Bokovnya
 
Казка про цифру 4
Казка про цифру 4Казка про цифру 4
Казка про цифру 4margaritakomp
 
Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...
Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...
Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...Ковпитська ЗОШ
 
Corona virus infection
Corona virus infectionCorona virus infection
Corona virus infectionGamal Agmy
 
Моніторинг 1.10 (1).pdf
Моніторинг 1.10  (1).pdfМоніторинг 1.10  (1).pdf
Моніторинг 1.10 (1).pdfolha1koval
 
Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...
Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...
Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...12Балів ГДЗ
 
сучасні цінності сімейного виховання та їх вплив на формування особистості ди...
сучасні цінності сімейного виховання та їх вплив на формування особистості ди...сучасні цінності сімейного виховання та їх вплив на формування особистості ди...
сучасні цінності сімейного виховання та їх вплив на формування особистості ди...Смілянський відділ освіти
 
Changing Concepts Of Health
Changing Concepts Of HealthChanging Concepts Of Health
Changing Concepts Of HealthManali Akolkar
 
4 klas-ukrayinska-mova-kravtsova-2021-1
4 klas-ukrayinska-mova-kravtsova-2021-14 klas-ukrayinska-mova-kravtsova-2021-1
4 klas-ukrayinska-mova-kravtsova-2021-1cgf gfgfg
 
План роботи на 2023-2024 н.р..pdf
План роботи на 2023-2024 н.р..pdfПлан роботи на 2023-2024 н.р..pdf
План роботи на 2023-2024 н.р..pdfssuser09eb931
 

Tendances (20)

Вогонь думок повік не згасне
Вогонь думок повік не згаснеВогонь думок повік не згасне
Вогонь думок повік не згасне
 
Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...
Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...
Гридін Сергій Володимирович. "Читаймо, бо ми того варті!". Письменницький мар...
 
читаємо речення і тексти з малюнками.
читаємо речення і тексти з малюнками.читаємо речення і тексти з малюнками.
читаємо речення і тексти з малюнками.
 
О.Є.Матвійчук. Видатні педагоги про роль сім’ї у формуванні особистості дитини
О.Є.Матвійчук. Видатні педагоги про роль сім’ї у формуванні особистості дитиниО.Є.Матвійчук. Видатні педагоги про роль сім’ї у формуванні особистості дитини
О.Є.Матвійчук. Видатні педагоги про роль сім’ї у формуванні особистості дитини
 
мовні ігри
мовні ігримовні ігри
мовні ігри
 
здоровя збережувальні технології
здоровя збережувальні технологіїздоровя збережувальні технології
здоровя збережувальні технології
 
сторінка музичного керівника
сторінка музичного керівникасторінка музичного керівника
сторінка музичного керівника
 
Казка про цифру 4
Казка про цифру 4Казка про цифру 4
Казка про цифру 4
 
ферма слайди
 ферма слайди ферма слайди
ферма слайди
 
БУКВОСПОЛУЧЕННЯ [ ДЗ ]
БУКВОСПОЛУЧЕННЯ [ ДЗ ]БУКВОСПОЛУЧЕННЯ [ ДЗ ]
БУКВОСПОЛУЧЕННЯ [ ДЗ ]
 
Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...
Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...
Авторські вірші для учнів 1 класу Нової української школи на свято Першого дз...
 
Changing concepts in public health
Changing concepts in public healthChanging concepts in public health
Changing concepts in public health
 
Corona virus infection
Corona virus infectionCorona virus infection
Corona virus infection
 
Моніторинг 1.10 (1).pdf
Моніторинг 1.10  (1).pdfМоніторинг 1.10  (1).pdf
Моніторинг 1.10 (1).pdf
 
COVID-19 Vaccines: Side Effects & Concerns
COVID-19 Vaccines: Side Effects & ConcernsCOVID-19 Vaccines: Side Effects & Concerns
COVID-19 Vaccines: Side Effects & Concerns
 
Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...
Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...
Підручник Українська мова та читання 4 клас М. І. Чабайовська, Н. М. Омельчен...
 
сучасні цінності сімейного виховання та їх вплив на формування особистості ди...
сучасні цінності сімейного виховання та їх вплив на формування особистості ди...сучасні цінності сімейного виховання та їх вплив на формування особистості ди...
сучасні цінності сімейного виховання та їх вплив на формування особистості ди...
 
Changing Concepts Of Health
Changing Concepts Of HealthChanging Concepts Of Health
Changing Concepts Of Health
 
4 klas-ukrayinska-mova-kravtsova-2021-1
4 klas-ukrayinska-mova-kravtsova-2021-14 klas-ukrayinska-mova-kravtsova-2021-1
4 klas-ukrayinska-mova-kravtsova-2021-1
 
План роботи на 2023-2024 н.р..pdf
План роботи на 2023-2024 н.р..pdfПлан роботи на 2023-2024 н.р..pdf
План роботи на 2023-2024 н.р..pdf
 

Plus de Josef Holy

Enterprise 3.0: Podnik chycený v sociální siti vyznamů
Enterprise 3.0: Podnik chycený v sociální siti vyznamůEnterprise 3.0: Podnik chycený v sociální siti vyznamů
Enterprise 3.0: Podnik chycený v sociální siti vyznamůJosef Holy
 
WebExpo2009 - Semantic Web
WebExpo2009 - Semantic WebWebExpo2009 - Semantic Web
WebExpo2009 - Semantic WebJosef Holy
 
Buzz Meet User Experience
Buzz Meet User ExperienceBuzz Meet User Experience
Buzz Meet User ExperienceJosef Holy
 
Semantic Wiki For The Enterprise
Semantic Wiki For The EnterpriseSemantic Wiki For The Enterprise
Semantic Wiki For The EnterpriseJosef Holy
 
Webexpo2008 Pleteme Socialni Sit
Webexpo2008 Pleteme Socialni SitWebexpo2008 Pleteme Socialni Sit
Webexpo2008 Pleteme Socialni SitJosef Holy
 
Míchanice v sociální síti
Míchanice v sociální sítiMíchanice v sociální síti
Míchanice v sociální sítiJosef Holy
 

Plus de Josef Holy (6)

Enterprise 3.0: Podnik chycený v sociální siti vyznamů
Enterprise 3.0: Podnik chycený v sociální siti vyznamůEnterprise 3.0: Podnik chycený v sociální siti vyznamů
Enterprise 3.0: Podnik chycený v sociální siti vyznamů
 
WebExpo2009 - Semantic Web
WebExpo2009 - Semantic WebWebExpo2009 - Semantic Web
WebExpo2009 - Semantic Web
 
Buzz Meet User Experience
Buzz Meet User ExperienceBuzz Meet User Experience
Buzz Meet User Experience
 
Semantic Wiki For The Enterprise
Semantic Wiki For The EnterpriseSemantic Wiki For The Enterprise
Semantic Wiki For The Enterprise
 
Webexpo2008 Pleteme Socialni Sit
Webexpo2008 Pleteme Socialni SitWebexpo2008 Pleteme Socialni Sit
Webexpo2008 Pleteme Socialni Sit
 
Míchanice v sociální síti
Míchanice v sociální sítiMíchanice v sociální síti
Míchanice v sociální síti
 

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