close Warning: Can't synchronize with repository "(default)" (/project/elephant/svn does not appear to be a Subversion repository.). Look in the Trac log for more information.

Version 1 (modified by ieslick, 10 years ago) (diff)


Major components:

  • Btree Library
  • Slot value storage (on disk hash or just btree?)
  • Transaction Management
  • Support for garbage collection?

Design tradeoffs:

Btree library: binary fixed-size page approach vs. using and serializing a lisp Btree node object

  • Messing with binary pages adds complexity but probably saves effort.
  • If we use lisp structures for the BTree node (an alist, for example) then we don't know the size of a node until it is serialized at which time we may have to move it or split it up. Maybe this is fine.
  • If we design the abstraction right, we could start with one and move to the other.

Transaction management:

  • Fine-grained locking model vs. optimistic concurrency (versioned objects ala Rucksack?)
  • Does our solution involve deadlocks? How to unwind?

Multi-process support:

  • Centralized server or replication?
  • Distributed transactions?