A+ Indexes: Lightweight and Highly Flexible Adjacency Lists for Graph Database Management Systems
Graph database management systems (GDBMSs) are highly optimized to perform very fast joins of vertices by indexing the neighbourhoods of vertices in adjacency list indexes. However, existing GDBMSs have system-specific and fixed adjacency list index structures, which makes each system highly efficient on only a fixed set of workloads. We describe a highly flexible and lightweight indexing sub-system for GDBMSs, that is coupled with materialized view capability, that we call A+ indexes. A+ indexes comprise of three components. Default A+ indexes provide flexibility to users to index neighbourhoods of vertices using arbitrary nested secondary partitioning and sorting criteria. This allows users to optimize a system for a variety of workloads with no or minimal memory overheads. Secondary vertex- and edge-bound A+ indexes, respectively are views over edges and 2-paths. Edge-bound indexes partition views over 2-paths by edge IDs and store the neighbourhoods of edges instead of vertices. Our secondary indexes are designed to have a very lightweight implementation based on a technique we call offset lists. A+ indexes allow a wider range of applications to benefit from GDBMSs' fast join capabilities. We demonstrate the flexibility, efficiency, and low memory overheads of A+ indexes through extensive experiments on a variety of applications.
READ FULL TEXT