What kind of backend data structures are needed for implementing a graph DB like this? #15
-
I'm curious about how the data is indexed. I'm familiar with the hexastore indexing scheme. How do redisgraph/falcor compare with that on a storage level? I know a bunch of people interested in distributed databases built on "prolly trees", which are like this hybrid between hash array mapped tries and b trees. They do well with both ordered streams and diffs, and allow for structured sharing. Anyhow I'm wondering if it's possible to do the sparse matrix queriable graph representation on top of a tree index? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
At the very beginning RedisGraph used a hexastore as its primary data structure for maintaining graph topology, using the For the past years we're using GraphBLAS sparse matrices to store our graph structure, there are a number of different matrix "classes":
There are additional matrices in place but maybe we should publish a more detailed post about our internals. Thinking about distributing a graph, one way to go about this is to try and split the graph's matrices into blocks, say we have an NxN matrix |
Beta Was this translation helpful? Give feedback.
At the very beginning RedisGraph used a hexastore as its primary data structure for maintaining graph topology, using the
Subject, Object, Predicate
paradigm(SOP, SPO, OSP, OPS, POS, PSO)
. But I don't believe this is an optimal way (performance wise) of representing a property graph.For the past years we're using GraphBLAS sparse matrices to store our graph structure, there are a number of different matrix "classes":
Li
in the graph Label matrixLi[j,j]
is set if node with IDj
is associated with labelLi
Ri
in the graph Relation matrixRi[j,k] = x
if there's an edge with IDx
connecting nodesj
tok
.