www.objectivity.com
Graph Databases What makes them Different ?
Darren Wood Chief Architect, InfiniteGraph
Graph Databases What makes them Different ? www.objectivity.com - - PowerPoint PPT Presentation
Graph Databases What makes them Different ? www.objectivity.com Darren Wood Chief Architect, InfiniteGraph NoSQL Data Specialists Everyone specializes Doctors, Lawyers, Bankers, Developers Why was data so
www.objectivity.com
Darren Wood Chief Architect, InfiniteGraph
Distributed ¡Data ¡ Processing ¡ Pla;orm ¡ Document ¡ Graph ¡ Database ¡ RDBMS ¡ ParAAoned ¡Distributed ¡DB ¡(oCen ¡Document ¡/ ¡KV) ¡
Users ¡
ApplicaAons ¡
External ¡/ ¡Legacy ¡Data ¡
TransformaAon ¡\ ¡MDM ¡
Business ¡
MeeAngs ¡ P1 ¡ Place ¡ Time ¡ P2 ¡ Alice ¡ Denver ¡ 5-‑27-‑10 ¡ Bob ¡ Calls ¡ From ¡ Time ¡ DuraAon ¡ To ¡ Bob ¡ 13:20 ¡ 25 ¡ Carlos ¡ Bob ¡ 17:10 ¡ 15 ¡ Charlie ¡ Payments ¡ From ¡ Date ¡ Amount ¡ To ¡ Carlos ¡ 5-‑12-‑10 ¡ 100000 ¡ Charlie ¡ Met ¡ 5-‑27-‑10 ¡ Alice ¡ Called ¡ 13:20 ¡ Bob ¡ Paid ¡ 100000 ¡ Carlos ¡ Charlie ¡ Called ¡ 17:10 ¡
Rows/Columns/Tables Relationship/Graph Optimized
InfiniteGraph ¡ ObjecAvity/DB ¡Persistence ¡Layer ¡ App-‑1 ¡ (Ingest ¡V1) ¡ App-‑2 ¡ (Ingest ¡V2) ¡ App-‑3 ¡ (Ingest ¡V3) ¡
V1 ¡ V2 ¡ V3 ¡
App-‑1 ¡ (E1 ¡2{ ¡V1V2}) ¡ App-‑2 ¡ (E23{ ¡V2V3}) ¡ App-‑3 ¡
E12 ¡ E23 ¡
IG ¡Core/API ¡
C1 ¡ C2 ¡ C3 ¡ E12 ¡ E23 ¡
Target ¡Containers ¡ Pipeline ¡Containers ¡
E(1-‑>2) ¡ E(3-‑>1) ¡ E(2-‑>3) ¡ E(2-‑>1) ¡ E(2-‑>3) ¡ E(3-‑>1) ¡ E(1-‑>2) ¡ E(3-‑>2) ¡ E(1-‑>2) ¡ E(2-‑>3) ¡ E(3-‑>1) ¡ E(2-‑>1) ¡ E(2-‑>3) ¡ E(3-‑>1) ¡ E(3-‑>2) ¡ E(1-‑>2) ¡
Pipeline ¡ Agent ¡
1 ¡client ¡ 2 ¡clients ¡ 4 ¡clients ¡ 8 ¡clients ¡ 0 ¡ 50000 ¡ 100000 ¡ 150000 ¡ 200000 ¡ 250000 ¡ 300000 ¡ 350000 ¡ 400000 ¡ 450000 ¡ 500000 ¡ 1 ¡ 2 ¡ 4 ¡ Nodes ¡and ¡Edges ¡per ¡second ¡ 1 ¡client ¡ 2 ¡clients ¡ 4 ¡clients ¡ 8 ¡clients ¡
8 ¡Hosts ¡ 4 ¡Hosts ¡ 2 ¡Hosts ¡ Single ¡Host ¡
Distributed ¡API ¡ ApplicaAon(s) ¡ ParAAon ¡1 ¡ ParAAon ¡3 ¡ ParAAon ¡2 ¡ ParAAon ¡...n ¡ Processor ¡ Processor ¡ Processor ¡ Processor ¡
Distributed ¡API ¡ ApplicaAon(s) ¡ ParAAon ¡1 ¡ ParAAon ¡3 ¡ ParAAon ¡2 ¡ ParAAon ¡...n ¡ Processor ¡ Processor ¡ Processor ¡ Processor ¡
– Message passing for each hop, messages processed at the data host for the target vertex – High concurrency, no data leaves its physical host – Message marshalling and transport is expensive
– Essentially trying to cache graph in memory over multiple hosts – Requires too much memory for large graphs – Issues with cache consistency
– Detect local hops and perform in memory traversal – Intelligently cache remote data when accessed frequently – Route tasks to other hosts when it is optimal
Processor ¡ Distributed ¡API ¡ ParAAon ¡1 ¡ ParAAon ¡2 ¡ Processor ¡ ApplicaAon ¡ P(A,B,C,D) ¡
(at ¡least ¡not ¡all ¡the ¡Ame...) ¡
PaAent ¡ PrescripAon ¡ Drug ¡ Ingredient ¡ Outcome ¡ Complaint ¡ Visit ¡ Allergy ¡ Physician ¡
Facility ¡Data ¡Page(s) ¡ PaAent ¡Data ¡Page(s) ¡
Mr ¡ CiAzen ¡ Visit ¡ Visit ¡ Dr ¡ Jones ¡ San ¡ Jose ¡ Facility ¡ Dr ¡ Smith ¡ Primary ¡ ¡Physician ¡ Has ¡ Has ¡ With ¡ At ¡ Located ¡ Located ¡
Facility ¡Data ¡Page(s) ¡
Dr ¡ Blake ¡ Sunny-‑ vale ¡ Dr ¡ Quinn ¡ Located ¡ Located ¡ With ¡ At ¡
Zone ¡2 ¡ Zone ¡1 ¡ HostA ¡
IG ¡Core/API ¡ Distributed ¡Object ¡and ¡RelaAonship ¡Persistence ¡Layer ¡
Customizable ¡Placement ¡
HostB ¡ HostC ¡ HostX ¡ AddVertex() ¡
want ¡to ¡have ¡done: ¡
– Concurrency ¡
– Schema ¡Control ¡
– Distribu9on ¡
– Indexes ¡
– Cache ¡
Person alice = new Person(“Alice”); helloGraphDB.addVertex( alice ); Person bob = new Person(“Bob”); helloGraphDB.addVertex( bob ); Person carlos = new Person(“Carlos”); helloGraphDB.addVertex( carlos ); Person charlie = new Person(“Charlie”); helloGraphDB.addVertex( charlie );
MyEdgeType edge = new MyEdgeType(); vertexA.addEdge ( edge, vertexB, EdgeKind.??? );
Meeting denverMeeting = new Meeting("Denver", "5-27-10"); alice.addEdge(denverMeeting, bob, EdgeKind.BIDIRECTIONAL); Call bobCallToCarlos = new Call(getRandomJulyTime()); bob.addEdge(bobCallToCarlos, carlos, EdgeKind.BIDIRECTIONAL); Payment payment = new Payment(10000.00); carlos.addEdge(payment, charlie, EdgeKind.BIDIRECTIONAL); Call bobCallToCharlie = new Call(getRandomJulyTime()); bob.addEdge(bobCallToCharlie, charlie, EdgeKind.BIDIRECTIONAL);
query.
the following basic parts:
– Origin : The vertex from which to begin – Guide strategy
– Graph Views : Powerful filtering and – Qualifiers
– Handlers
Bob ¡ Sam ¡ Fred ¡
Degree ¡Centrality ¡ Closeness ¡and ¡ Betweeness ¡Centrality ¡