[DGD] Multi-level map shifter bigmap

Shentino shentino at gmail.com
Fri Jun 6 23:07:41 CEST 2008


I've recently been working on what I hope to be the be all and end all
of types, the bigmap.

Homebrew, it's structured as a successively layered partitioned
keyspace with balancing.

The bottom nodes contain the actual mapping(s) with the keys->values,
while higher level nodes use similiar mappings to index their
subnodes.

On insertion or deletion, after I put the keys in or out of the
bottom, I run up to do a balance check to move nodes back and forth as
needed by splits and merges.

I guess you could call it a layered linked list with a top level all
encompassing root directory.

Does anyone have any ideas or notice any weaknesses in this scheme?

Two problems I seem to be having

1.  Merges and splits require range operations on mappings, and
massive slowdowns.  Anything besides tuning to balance out layer count
vs driver-side O(1) operations?

2.  It keeps crashing...invariant violations aplenty everytime I run
node->fsck() ;).  Anything wrong with the design itself or am I just a
sloppy coder?



More information about the DGD mailing list