Is there any notion of Vertex Centric index in TigerGraph ? Else how does TigerGraph Scan Edge for efficient traversal?


Vertex centric index, are a solution to traverse edges quickly. If a Vertex has a 1000 of edges, let say of various types (i.e. labels in Gremelin parlance), the traversal steps need to select the edge to traverse according to their type and the target Vertex they are supposed to connect to. Vertex centric indices here enable a quick scan. In Store Like Janus or Datastax, Vertex centric indices are used. Does TigerGraph has a similar solution or a better solution to deal with the same problems ? In other words, has a native Graph DB, what solution TigerGraph has for it, and how theoretically faster is it ? What trade-off has been made here if any ?

Many thanks in advance


TigerGraph doesn’t have vertex centric indexes.

Generally, we use index-free adjacency, which makes our storage format very compact (all edges leaving a vertex are stored together physically). This generally works really quickly, so we don’t often need an index. No doubt there are edge cases (e.g. hub or super-nodes), but so far (fingers crossed) I’ve never needed one.

Per-edge type statistics are held, so edge-type disambiguation is transparent and has almost no cost. Similarly target types. Attribute based indexing however might benefit.

I’d note that Janus/DSE etc don’t store the vertices natively and therefore suffer really badly without indexing, but that is in the nature of emulated stores. Native stores don’t have anything like the same problems to overcome.

So the trade-off is non-native = needs indexes versus native = doesn’t need indexes. Simplicity is always better in my opinion.