Graph database storage layer

DesignHard50 minMeta style

Your task

Design the on-disk storage layer of a native graph database engine optimized for traversal, not the partitioning across machines. A single node holds ~2B vertices and ~40B directed edges with properties; the dominant workload is multi-hop traversals ('expand all out-edges of v, then their out-edges') that must touch millions of edges with as few random I/Os as possible, alongside transactional inserts/deletes of vertices and edges. Property-graph semantics: typed edges, properties on both vertices and edges, and a handful of supernodes with tens of millions of edges. How do you physically lay out vertices, edges, and adjacency so a hop is close to a sequential read, while still supporting fast point deletes?

It covers

  • Adjacency storage
  • Csr
  • Supernodes