GRAPH DATABASES    Henning Rauch          1
AGENDA•   Overview•   Neo4J•   InfiniteGraph•   Fallen-8                   2
OVERVIEW         Why it makes sense to know about graph databases„Graph databases will come into vogue. One key gap in the...
OVERVIEWExample of a real-world graph - facebook                       Source: http://www.facebook.com/press/info.php?stat...
OVERVIEWExample of a real-world graph - NYT „Cascade“                               Source: http://nytlabs.com/projects/ca...
OVERVIEWExample of a real-world graph - phone bill           6
OVERVIEWDelimitation to RDBMS - property graph      RDBMS GraphDB           7
OVERVIEW                       Delimitation to RDBMS - property graph                             RDBMS GraphDB     Person...
OVERVIEW                       Delimitation to RDBMS - property graph                             RDBMS GraphDB     Person...
OVERVIEW                                     Delimitation to RDBMS - property graph                                       ...
OVERVIEW                                     Delimitation to RDBMS - property graph                                       ...
OVERVIEW                                     Delimitation to RDBMS - property graph                                       ...
OVERVIEW                                     Delimitation to RDBMS - property graph                                       ...
OVERVIEW                                                  Delimitation to RDBMS - property graph                          ...
OVERVIEW                                                  Delimitation to RDBMS - property graph                          ...
OVERVIEW                                                  Delimitation to RDBMS - property graph                          ...
OVERVIEW                               Delimitation to RDBMS - Scalability                                                ...
OVERVIEW                 Delimitation to RDBMS - example of complexity•   Task: Find the persons that are known to Id 0.  ...
OVERVIEW       Delimitation to other NoSQL productsSize           > 90% of use cases                                      ...
OVERVIEW                   Delimitation to other NoSQL productsSize       Key/Value        stores                       > ...
OVERVIEW                              Delimitation to other NoSQL productsSize       Key/Value        stores              ...
OVERVIEW                                  Delimitation to other NoSQL productsSize       Key/Value        stores          ...
OVERVIEW                                  Delimitation to other NoSQL productsSize       Key/Value        stores          ...
OVERVIEW                                  Delimitation to other NoSQL productsSize       Key/Value        stores          ...
OVERVIEW       Graph processing vs. graph databaseOLAP       Graph affine           Universal                              ...
OVERVIEW       Graph processing vs. graph databaseOLAP       Graph affine                                                  ...
OVERVIEW                Graph processing vs. graph databaseOLAP                Graph affine                                ...
OVERVIEW                         Graph processing vs. graph database                             Graph affine       PregelO...
OVERVIEW                         Graph processing vs. graph database                             Graph affine              ...
OVERVIEW                         Graph processing vs. graph database                             Graph affine              ...
OVERVIEW                                                                      Graph databases•   Neo4J                    ...
13
NEO4J                                                               Overview•   Graph database + Lucene index•   ACID (iso...
NEO4J                                                                   Architecture    Cypher/Gremlin                    ...
NEO4J                  knows                           Example of the on-disk layout                                      ...
NEO4J                          knows                                   Example of the on-disk layout                      ...
NEO4J                                  knows                                                 Example of the on-disk layout...
NEO4J                                  knows                                                 Example of the on-disk layout...
NEO4J                                                                       In-memory layout (cache)         ID           ...
NEO4J                                                                         Traversal•   Relationship-expander (delivers...
NEO4J                                                                                     Cypher & Gremlin Feature        ...
NEO4J                                                   WebAdmin     Quelle: http://docs.neo4j.org/chunked/stable/images/o...
NEO4J                                                                               Pricing                               ...
22
INFINITEGRAPH                                                              Overview•   Distributed graph database    •   I...
INFINITEGRAPH                                                                      Architecture               User Apps   ...
INFINITEGRAPH                                                                         Ingest                              ...
INFINITEGRAPH                                                                          Ingest                             ...
INFINITEGRAPH                                                                            Ingest                           ...
INFINITEGRAPH                                                                             Ingest                          ...
INFINITEGRAPH                                                                             Ingest                          ...
INFINITEGRAPH                                                             Code (ingest)Vertex alice = myGraph.addVertex(ne...
INFINITEGRAPH                                                                     Code (ingest)                           ...
INFINITEGRAPH                                                                     Code (ingest)                           ...
INFINITEGRAPH                                                                     Code (ingest)                           ...
INFINITEGRAPH                                                                       Code (ingest)                         ...
INFINITEGRAPH                                                                       Code (ingest)                         ...
INFINITEGRAPH                                                                       Code (ingest)                         ...
INFINITEGRAPH                                                                       Code (ingest)                         ...
INFINITEGRAPH                                                                        Code (ingest)                        ...
INFINITEGRAPH                                                                       Code (Navigator)// Create a qualifier t...
INFINITEGRAPH        Visualization            Copyright © InfiniteGraph28
INFINITEGRAPH                                                                                                           Pr...
30
FALLEN-8                                                           Overview•   In-memory graph database•   Implemented in ...
FALLEN-8                                                          Persistence•   Persistence in form of „save-points“ (all...
FALLEN-8                                    Architecture        Services                           Index-Traversal-framewo...
FALLEN-8                         Architecture and some plugins            HA + ACID TransaktionenREST API (via JSON) + Man...
FALLEN-8Benchmark - friends of a friend35
FALLEN-8    Benchmark - friends of a friend1    35
FALLEN-8        Benchmark - friends of a friend    2    31    4    5        35
FALLEN-8        Benchmark - friends of a friend                    6                    7                    8    2       ...
FALLEN-8                             Benchmark - friends of a friend                  Fallen-8              Neo4J         ...
FALLEN-8Benchmark - traversals per second                         Source: Sebastian Dechant   37
FALLEN-8    Benchmark - traversals per second1                             Source: Sebastian Dechant       37
FALLEN-8    Benchmark - traversals per second1                             Source: Sebastian Dechant       37
FALLEN-8    Benchmark - traversals per second1                     2                             Source: Sebastian Dechant...
FALLEN-8                                      Benchmark - traversals per second             1                             ...
FALLEN-8                                                           Benchmark - traversals per second                      ...
FALLEN-8                                                      Roadmap•   Release: July 2012•   Q3 2012    •   High availab...
THANKS                          &                         Q&AEmail: Henning@RauchEntwicklung.bizUrl: http://www.NoSQL-Data...
Upcoming SlideShare
Loading in...5
×

Graphdatabases

2,762

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,762
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
89
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Graphdatabases

    1. 1. GRAPH DATABASES Henning Rauch 1
    2. 2. AGENDA• Overview• Neo4J• InfiniteGraph• Fallen-8 2
    3. 3. OVERVIEW Why it makes sense to know about graph databases„Graph databases will come into vogue. One key gap in the Hadoopecosystem is for graph databases, which support rich mining and visualization ofrelationships, influence, and behavioral propensities. The market for graphdatabases will boom in 2012 as companies everywhere adopt them for socialmedia analytics, marketing campaign optimization, and customer experiencefine-tuning. We will see VCs put big money behind graph database and analyticsstartups. Many big data platform and tool vendors will acquire the startups tosupplement their expanding Hadoop, NoSQL, and enterprise data warehousing(EDW) portfolios. Social graph analysis, although not a brand-new field, willbecome one of the most prestigious specialties in the data science arena,focusing on high-powered drilldown into polystructured behavioral data sets.“ Source: http://blogs.forrester.com/james_kobielus/11-12-19-the_year_ahead_in_big_data_big_cool_new_stuff_looms_large 3
    4. 4. OVERVIEWExample of a real-world graph - facebook Source: http://www.facebook.com/press/info.php?statistics 4
    5. 5. OVERVIEWExample of a real-world graph - NYT „Cascade“ Source: http://nytlabs.com/projects/cascade.html 5
    6. 6. OVERVIEWExample of a real-world graph - phone bill 6
    7. 7. OVERVIEWDelimitation to RDBMS - property graph RDBMS GraphDB 7
    8. 8. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB PersonId Name0 Henning Rauch1 René Peinl2 Foo Bar3 Bruce Schneier4 Linus Torwalds 7
    9. 9. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person 2Id Name 30 Henning Rauch1 René Peinl2 Foo Bar3 Bruce Schneier 44 Linus Torwalds 1 0 7
    10. 10. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch 1 01 René Peinl 1 22 Foo Bar 1 33 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 4 3 0 7
    11. 11. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch 1 01 René Peinl 1 22 Foo Bar 1 33 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 4 3 0 7
    12. 12. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch 1 01 René Peinl 1 22 Foo Bar 1 33 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 4 3 0 TagId Name0 .NET1 Java2 PKI3 NoSQL 7
    13. 13. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch Java 1 01 René Peinl 1 22 Foo Bar 1 33 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 4 3 0 Tag NoSQLId Name .NET0 .NET PKI1 Java2 PKI3 NoSQL 7
    14. 14. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch Java 1 01 René Peinl 1 22 Foo Bar 1 33 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 4 3 0 Tag Tags_rel NoSQLId Name Tag_Id Person_Id Significance .NET0 .NET 0 0 5 PKI1 Java 1 1 52 PKI 2 1 63 NoSQL 2 3 10 3 0 7 3 1 7 7
    15. 15. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch Java 1 01 René Peinl 1 2 102 Foo Bar 1 3 53 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 7 4 3 0 5 Tag Tags_rel NoSQL 7Id Name Tag_Id Person_Id Significance .NET0 .NET 0 0 5 6 PKI1 Java 1 1 52 PKI 2 1 63 NoSQL 2 3 10 3 0 7 3 1 7 7
    16. 16. OVERVIEW Delimitation to RDBMS - property graph RDBMS GraphDB Person Knows_rel 2Id Name Id_1 Id_2 30 Henning Rauch Java 1 01 René Peinl 1 2 102 Foo Bar 1 3 53 Bruce Schneier 1 4 44 Linus Torwalds 0 1 1 0 2 0 3 0 4 3 4 7 4 3 0 5 Tag Tags_rel NoSQL 7Id Name Tag_Id Person_Id Significance .NET0 .NET 0 0 5 6 PKI1 Java 1 1 52 PKI 2 1 63 NoSQL 2 3 3 0 10 7 vertex = 3 1 7 7 properties + edges
    17. 17. OVERVIEW Delimitation to RDBMS - Scalability Knows_rel Id_1 Id_2• Relation tables act as a global index over linked 1 1 0 2 data 1 1 3 4 0 1 The bigger the relation table the longer it takes to 0 2• 0 3 get the interesting information (e.g. local 0 3 4 4 neighbourhood of data) 4 3 Tags_rel• Solution of graph databases: Information on Tag_Id 0 Person_Id 0 Significance 5 relationships (aka edges) are stored locally on the 1 1 5 vertex 2 1 6 2 3 10 3 0 7 3 1 7 8
    18. 18. OVERVIEW Delimitation to RDBMS - example of complexity• Task: Find the persons that are known to Id 0. Knows_rel • Linear table scan: O(n) Id_1 1 Id_2 0 1 2 Index scan: O(log n) 1 3 • 1 4 0 1 0 2• Because of the dependency to n RDBMS do not 0 0 3 4 perform well on recursive search algorithms 3 4 4 3• Graph database solve this task in O(1) 9
    19. 19. OVERVIEW Delimitation to other NoSQL productsSize > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
    20. 20. OVERVIEW Delimitation to other NoSQL productsSize Key/Value stores > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
    21. 21. OVERVIEW Delimitation to other NoSQL productsSize Key/Value stores Bigtable clones > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
    22. 22. OVERVIEW Delimitation to other NoSQL productsSize Key/Value stores Bigtable clones Document databases > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
    23. 23. OVERVIEW Delimitation to other NoSQL productsSize Key/Value stores Bigtable clones Document databases Graph databases > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
    24. 24. OVERVIEW Delimitation to other NoSQL productsSize Key/Value stores Bigtable clones Document databases Graph databases In-memory graph databases > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
    25. 25. OVERVIEW Graph processing vs. graph databaseOLAP Graph affine Universal OLTP Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx 11
    26. 26. OVERVIEW Graph processing vs. graph databaseOLAP Graph affine OLTP RDBMS Universal Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx 11
    27. 27. OVERVIEW Graph processing vs. graph databaseOLAP Graph affine OLTP Hadoop RDBMS Universal Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx 11
    28. 28. OVERVIEW Graph processing vs. graph database Graph affine PregelOLAP OLTP Hadoop RDBMS Universal Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx 11
    29. 29. OVERVIEW Graph processing vs. graph database Graph affine Graph databases PregelOLAP OLTP Hadoop RDBMS Universal Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx 11
    30. 30. OVERVIEW Graph processing vs. graph database Graph affine In-memory Graph databases graph database PregelOLAP OLTP Hadoop RDBMS Universal Quelle: http://jim.webber.name/2011/08/24/66f1fb4b-83c3-4f52-af40-ee6382ad2155.aspx 11
    31. 31. OVERVIEW Graph databases• Neo4J • HypergraphDB• InfiniteGraph (Objectivity) • DEX• Sones GraphDB • FlockDB (Twitter)• AllegroGraph • Trinity (Microsoft)• OrientDB • Fallen-8 Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 12
    32. 32. 13
    33. 33. NEO4J Overview• Graph database + Lucene index• ACID (isolation level read committed)• High availability in enterprise edition• 32 billion vertices, 32 billion edges, 64 billion properties• Embedded or via REST-API• Support for the Blueprints project 14
    34. 34. NEO4J Architecture Cypher/Gremlin Java/Ruby/.../C# API REST API Core API (Java)Caches (files and objects) HA Record files Transaction-log Disk(s) Source: http://www.slideshare.net/rheehot/eo4j-12713065 15
    35. 35. NEO4J knows Example of the on-disk layout Name: Bob Age: 42Name: AliceAge: 23 knows knows Name: Carol Age: 22 Source: https://github.com/thobe/presentations 16
    36. 36. NEO4J knows Example of the on-disk layout Name: Bob Age: 42 Name Name: Alice BobName Age: 23Alice knows Age 42Age 23 knows Name Carol Name: Carol Age: 22 Age 22 Source: https://github.com/thobe/presentations 16
    37. 37. NEO4J knows Example of the on-disk layout SP EP Name: Bob SN EN Age: 42 knows Name Name: Alice SP EP BobName Age: 23 SP EP SN ENAlice knows SN EN knows Age knows 42Age 23 knows Name SP Source Previous CarolSN Source Next Name: CarolEP End Previous Age: 22EN End Next Age 22 Existent Nonexistent Source: https://github.com/thobe/presentations 16
    38. 38. NEO4J knows Example of the on-disk layout SP EP Name: Bob SN EN Age: 42 knows Name Name: Alice SP EP BobName Age: 23 SP EP SN ENAlice knows SN EN knows Age knows 42Age 23 knows Name SP Source Previous CarolSN Source Next Name: CarolEP End Previous Age: 22EN End Next Age 22 Existent Nonexistent Source: https://github.com/thobe/presentations 16
    39. 39. NEO4J In-memory layout (cache) ID Relationship ID refs in: R1 R2 ... Rn Type 1 out R1 R2 ... RnVertex ... Grouped by type (type = „knows“) • Transformation of the double linked list (on-disk) in: R1 R2 ... Rn Type n out R1 R2 ... Rn to objects Key 1 Key 2 ... Key n • Increases the traversal Val 1 Val 2 Val n speed ID start end typeEdge Key 1 Key 2 ... Key n Val 1 Val 2 Val n Source: https://github.com/thobe/presentations 17
    40. 40. NEO4J Traversal• Relationship-expander (delivers edges of a vertex)• Evaluators (evaluate if a vertex is going to be traversed or if it should be taken to the result set)• Projection of the result set (e.g. „take the last vertex of the path“• Uniqueness level (sets in steps, whether a node could be visited several times) Source: https://github.com/thobe/presentations 18
    41. 41. NEO4J Cypher & Gremlin Feature Gremlin Cypher Paradigm Imperative programming Declarative programming •Developed Marko Rodriguez (Tinkerpop) •In-house developmentDescription • •Cypher provides greater opportunities for optimization Based on xpath to describe the traversal •Developed using Groovy •Good for traversals that need back tracking •30-50% faster on „simple“ traversals •Output is a table START me=node:people(name={myname}) MATCH me-[:HAS_CART]->cart-[:CONTAINS_ITEM]->item outE[label=HAS_CART].inV item<-[:PURCHASED]-user-[:PURCHASED]->recommendation .outE[label=CONTAINS_ITEM].inV RETURN recommendation Example .inE[label=PURCHASED].outV .outE[label=PURCHASED].inV START d=node(1), e=node(2) MATCH p = shortestPath( d-[*..15]->e ) RETURN p Source: https://github.com/thobe/presentations 19
    42. 42. NEO4J WebAdmin Quelle: http://docs.neo4j.org/chunked/stable/images/operations/webadmin-overview.png20
    43. 43. NEO4J Pricing Price Edition License Description (annual) Complete database Open Source„Community“ including a basic 0 € (GPLv3) management frontend + Monitoring, better„Advanced“ Commercial and AGPL 6,000 € management frontend and support +„Enterprise“ Commercial and AGPL Enterprise frontend, HA and 24,000 € premium support 21
    44. 44. 22
    45. 45. INFINITEGRAPH Overview• Distributed graph database • Implemented in C++ (APIs in Java, C#, Python, etc.)• Based on Objectivity/DB (distributed object database) • Established 1988 in Sunnyvale, California • Enterprise-customers + US-government• Support for Blueprints 23
    46. 46. INFINITEGRAPH Architecture User Apps Blueprints# IG#Core/API#Management# Naviga0on# Session#/#TX# Placement# Configura0on# Extensions# Execu0on# Management# Objec0vity/DB#Distributed#Database# Copyright © InfiniteGraph 24
    47. 47. INFINITEGRAPH Ingest AppD2# AppD1# AppD3# (Ingest#V2)#(Ingest#V1)# (Ingest#V3)# # IG#Core/API# Standard#Blocking#Ingest/Placement#(MDP#Plugin)# Objec@vity/DB# Copyright © InfiniteGraph 25
    48. 48. INFINITEGRAPH Ingest AppD2# AppD1# AppD3# (Ingest#V2)#(Ingest#V1)# (Ingest#V3)# # IG#Core/API# Standard#Blocking#Ingest/Placement#(MDP#Plugin)# Objec@vity/DB#V1# V2# V3# Copyright © InfiniteGraph 25
    49. 49. INFINITEGRAPH Ingest AppD2# App#1% AppD1# App#2% App#3% AppD3# (Ingest#V2)# (Ingest#V )#(E1%2{%V1V21})% (E23{%V2V3})% (Ingest#V3)# % # IG#Core/API# Standard#Blocking#Ingest/Placement#(MDP#Plugin)# Objec@vity/DB#V1# V2# V3# Copyright © InfiniteGraph 25
    50. 50. INFINITEGRAPH Ingest AppD2# App#1% AppD1# App#2% App#3% AppD3# (Ingest#V2)# (Ingest#V )#(E1%2{%V1V21})% (E23{%V2V3})% (Ingest#V3)# % # IG#Core/API# Standard#Blocking#Ingest/Placement#(MDP#Plugin)# Objec@vity/DB#V1# E12$ V2# E23$ V3# Copyright © InfiniteGraph 25
    51. 51. INFINITEGRAPH Ingest AppD2# App#1% AppD1# App#2% App#3% AppD3# (Ingest#V2)# (Ingest#V )#(E1%2{%V1V21})% (E23{%V2V3})% (Ingest#V3)# % # IG#Core/API# Standard#Blocking#Ingest/Placement#(MDP#Plugin)# Objec@vity/DB#V1# E12$ V2# E23$ V3# Copyright © InfiniteGraph 25
    52. 52. INFINITEGRAPH Code (ingest)Vertex alice = myGraph.addVertex(new Person(“Alice”));Vertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”));alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie); Copyright © InfiniteGraph 26
    53. 53. INFINITEGRAPH Code (ingest) AliceVertex alice = myGraph.addVertex(new Person(“Alice”));Vertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”));alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie); Copyright © InfiniteGraph 26
    54. 54. INFINITEGRAPH Code (ingest) AliceVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”));alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie);bob.addEdge(new Call(timestamp), charlie); Copyright © InfiniteGraph 26
    55. 55. INFINITEGRAPH Code (ingest) AliceVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”));alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie); Carlosbob.addEdge(new Call(timestamp), charlie); Copyright © InfiniteGraph 26
    56. 56. INFINITEGRAPH Code (ingest) AliceVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”));alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie); Carlosbob.addEdge(new Call(timestamp), charlie); Charlie Copyright © InfiniteGraph 26
    57. 57. INFINITEGRAPH Code (ingest) Alice meetsVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”));alice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie); Carlosbob.addEdge(new Call(timestamp), charlie); Charlie Copyright © InfiniteGraph 26
    58. 58. INFINITEGRAPH Code (ingest) Alice meetsVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”)); callsalice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie); Carlosbob.addEdge(new Call(timestamp), charlie); Charlie Copyright © InfiniteGraph 26
    59. 59. INFINITEGRAPH Code (ingest) Alice meetsVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”)); callsalice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie); Carlosbob.addEdge(new Call(timestamp), charlie); pays Charlie Copyright © InfiniteGraph 26
    60. 60. INFINITEGRAPH Code (ingest) Alice meetsVertex alice = myGraph.addVertex(new Person(“Alice”)); BobVertex bob = myGraph.addVertex(new Person(“Bob”));Vertex carlos = myGraph.addVertex(new Person(“Carlos”));Vertex charlie = myGraph.addVertex(new Person(“Charlie”)); calls callsalice.addEdge(new Meeting(“Denver”, “5-27-10”), bob);bob.addEdge(new Call(timestamp), carlos);carlos.addEdge(new Payment(100000.00), charlie); Carlosbob.addEdge(new Call(timestamp), charlie); pays Charlie Copyright © InfiniteGraph 26
    61. 61. INFINITEGRAPH Code (Navigator)// Create a qualifier that describes the target vertexQualifier findCharliePredicate = new VertexPredicate(personType, "name == ’Charlie");// Construct a navigator which starts with Alice and uses a result qualifier// to find all paths in the graph to CharlieNavigator charlieFinder = alice.navigate( Guide.SIMPLE_BREADTH_FIRST, // default guide Qualifier.ANY, // no path constraints findCharliePredicate , // find paths ending with Charlie myResultHandler); // fire results to supplied handler// Start the navigatorcharlieFinder.start(); Copyright © InfiniteGraph 27
    62. 62. INFINITEGRAPH Visualization Copyright © InfiniteGraph28
    63. 63. INFINITEGRAPH Pricing Price Edition License Description (annual) Complete database but„InfiniteGraph FREE“ Free limitation to 1 million 0 € vertices or edges starts at app. 5000 $ „Pay as you go“ Commercial No limitation (depends on count of vertices and edges) Focus on „bigger“ >..... €„Unit or site licensing“ Commercial environments (No price available) Source: http://objectivity.com/products/infinitegraph/overview 29
    64. 64. 30
    65. 65. FALLEN-8 Overview• In-memory graph database• Implemented in C# (platform independent because of mono)• 4 billion vertices or edges, each element can have app. 65000 properties• Indexes on vertices and/or edges• Core is open source (MIT-license), plugins can have any license 31
    66. 66. FALLEN-8 Persistence• Persistence in form of „save-points“ (all vertices and edges are serialized en bloc)• Commodity hardware allows to (de)serialize app. 2 million vertices or edges per second• Saving blocks only write operations• Performance + reliability 32
    67. 67. FALLEN-8 Architecture Services Index-Traversal-framework framework Core API Vertices and edges RAM 33
    68. 68. FALLEN-8 Architecture and some plugins HA + ACID TransaktionenREST API (via JSON) + Management/query frontend Traversal-framework Index-framework (incl. path analysis) (incl R* tree index) Core API Vertices and edges RAM 34
    69. 69. FALLEN-8Benchmark - friends of a friend35
    70. 70. FALLEN-8 Benchmark - friends of a friend1 35
    71. 71. FALLEN-8 Benchmark - friends of a friend 2 31 4 5 35
    72. 72. FALLEN-8 Benchmark - friends of a friend 6 7 8 2 9 3 101 11 4 12 13 5 14 15 16 35
    73. 73. FALLEN-8 Benchmark - friends of a friend Fallen-8 Neo4J 5,000 4,000 3,000t in ms 2,000 1,000 0 run Source: Martin Junghanns 36
    74. 74. FALLEN-8Benchmark - traversals per second Source: Sebastian Dechant 37
    75. 75. FALLEN-8 Benchmark - traversals per second1 Source: Sebastian Dechant 37
    76. 76. FALLEN-8 Benchmark - traversals per second1 Source: Sebastian Dechant 37
    77. 77. FALLEN-8 Benchmark - traversals per second1 2 Source: Sebastian Dechant 37
    78. 78. FALLEN-8 Benchmark - traversals per second 1 2Graph: |V| = 10000, |E| = 600.000 (equally distributed)System: Windows Server 2008 R2, Intel Xeon E5620 (2,40 GHz), 6 GB RAM Source: Sebastian Dechant 37
    79. 79. FALLEN-8 Benchmark - traversals per second 1 2 Graph: |V| = 10000, |E| = 600.000 (equally distributed) System: Windows Server 2008 R2, Intel Xeon E5620 (2,40 GHz), 6 GB RAM MySQL 62,168 PostgreSQL 78,449 Neo4J 943,580InfiniteGraph 1,243,084 Fallen-8 196,930,256 1 10 100 1,000 10,000 100,000 1,000,000 10,000,000 100,000,000 1,000,000,000 traversals / sec Source: Sebastian Dechant 37
    80. 80. FALLEN-8 Roadmap• Release: July 2012• Q3 2012 • High availability (MIT) using Amazon EC2• 2013 • Graph partitioning (MIT or ???) 38
    81. 81. THANKS & Q&AEmail: Henning@RauchEntwicklung.bizUrl: http://www.NoSQL-Database.comTwitter: http://www.twitter.com/cosh23 39
    1. A particular slide catching your eye?

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

    ×