This document discusses graph databases and how they distribute data. It provides examples of graph queries and how they are executed by first traversing indexes to find relevant entities, then retrieving and joining entity properties. The document also compares different graph database solutions like RedisGraph, JanusGraph, DGraph and ArangoDB in terms of their architectures, distribution methods, and consistency models.
6. Tables
Name Age Height
Roi 33 187
Hila 33 170
Shany 23 167
Amit 31 180
Name Population
Israel 8.5M
Japan 127M
Italy 60M
SRC DEST
1 2
2 2
2 3
4 1
4 3
Person CountryVisit
18. Query
Find friends of mine who’ve visited places I’ve been to and are
older than me.
Match (ME:person)-[friend]->(F:person)-[visited]->(C:country)<-[visit]-(ME)
WHERE ME.ID = 33 AND F.age > ME.age
RETURN F.name, C.name
28. Query
Find all posts liked by friends of friends of mine, written by author X.
MATCH
(ME:person)-[friend]->(:person)-[friend]->(F:person)-[like]->(post)<-[author]-(A:author)
WHERE ME.ID=46 AND A.ID=71070
RETURN A.name, F.name
29. 1. Node X contains FRIEND relations.
2. Seek to my ID in Node X (1 RPC). Retrieve a list of friend uids.
3. Do multiple seeks for each of the friend uids, to generate a list of friends of
friends uids. result set 1
Query
Friend
Index
Query
executor
(ME:person)-[friend]->(:person)-[friend]->(F:person)
31. 1. Node Y contains posting list for predicate LIKE.
2. Ship result set 1 to Node Y (1 RPC), and do seeks to generate a list of all posts
liked by result set 1. result set 2
Query
Like
Index
Query
executor
(F:person)-[like]->(post)
Resultset 1
33. Query
Node Z contains relations for predicate AUTHOR.
Ship result set 2 to Node Z (1 RPC).
Seek to author X, and generate a list of posts authored by X. result set 3
Author
Index
Query
executor
(post)<-[author]-(A:author)
Resultset 2
35. Node N contains names for all uids, ship result set 4 to Node N (1 RPC), and convert
uids to names by doing multiple seeks.
Query
Author
Index
Query
executor
RETURN A.name, F.name
Resultset 4
36. Resultset 4
Intersected resultset 2 and 3
Friend ID Friend name Post ID Author ID Author
name
70 Ailon 534 71070 Omri
92 Boaz 8964 71070 Omri
39. JanusGraph successor of Titan
● Relays on a storage backend e.g. Casandar.
● Provides a graph interface on top of a table.
● Delegates storing, replicating, distributing and persisting a graph to the
underline storage backend.
Takes a mature application from a similar domain and introduce a new data type API
on top of existing data structure. (not optimal)
Solutions
40. Solutions
DGraph
Uses the concept of RDF NQuad to represents connections and badger as its key
value store.
Both the graph index and the entities are distributed.
41. Solutions
Arangodb
From my understanding this multi model database uses documents to represent all
three data types: Documents, key value store and graph.
Not sure about how it distributes its data but it’s using RAFT to ensure consistency
It is ACID.