• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Graphdatabases
 

Graphdatabases

on

  • 2,312 views

 

Statistics

Views

Total Views
2,312
Views on SlideShare
2,298
Embed Views
14

Actions

Likes
3
Downloads
66
Comments
0

3 Embeds 14

https://twitter.com 11
http://www.linkedin.com 2
https://twimg0-a.akamaihd.net 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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 Graphdatabases Presentation Transcript

  • 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 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
  • OVERVIEWExample of a real-world graph - facebook Source: http://www.facebook.com/press/info.php?statistics 4
  • OVERVIEWExample of a real-world graph - NYT „Cascade“ Source: http://nytlabs.com/projects/cascade.html 5
  • 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 PersonId Name0 Henning Rauch1 René Peinl2 Foo Bar3 Bruce Schneier4 Linus Torwalds 7
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • OVERVIEW Delimitation to other NoSQL productsSize > 90% of use cases Complexity Source: http://www.slideshare.net/jexp/neo4j-graph-database-presentation-german 10
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 13
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • NEO4J WebAdmin Quelle: http://docs.neo4j.org/chunked/stable/images/operations/webadmin-overview.png20
  • 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
  • 22
  • 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
  • INFINITEGRAPH Architecture User Apps Blueprints# IG#Core/API#Management# Naviga0on# Session#/#TX# Placement# Configura0on# Extensions# Execu0on# Management# Objec0vity/DB#Distributed#Database# Copyright © InfiniteGraph 24
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • INFINITEGRAPH Visualization Copyright © InfiniteGraph28
  • 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
  • 30
  • 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
  • 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
  • FALLEN-8 Architecture Services Index-Traversal-framework framework Core API Vertices and edges RAM 33
  • 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
  • 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 9 3 101 11 4 12 13 5 14 15 16 35
  • 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
  • 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 37
  • 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
  • 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
  • FALLEN-8 Roadmap• Release: July 2012• Q3 2012 • High availability (MIT) using Amazon EC2• 2013 • Graph partitioning (MIT or ???) 38
  • THANKS & Q&AEmail: Henning@RauchEntwicklung.bizUrl: http://www.NoSQL-Database.comTwitter: http://www.twitter.com/cosh23 39