You're not understanding what I mean by locality in this context. I mean that the on-disk structure should approximate an array of indexes, e.g.:
const unsigned *edge_indexes = (const unsigned *) mmaped_structure_on_disk[disk_offsets[index]];
That's not the same as just being able to access those via an API; locality in this case means that you shouldn't need extra seeks for every single value, nor have to make a bunch of round trips through SQL.
That is the primary difference between traditional relational databases and column-oriented databases. Normal relational databases have row-based locality; column-oriented databases have column-based locality.