[elephant-devel] Major elephant upgrade
Ian Eslick
eslick at media.mit.edu
Wed Mar 5 03:38:10 UTC 2008
Hello again everyone,
As some may have guessed from recent e-mails, I got motivated to
design/add a fairly large set of inter-related features that should
address many of the problems and questions we've seen lately. I'm now
in the middle of adding over a half dozen major new features to
Elephant on a local branch.
Mostly implemented: per-store master oid->class table, class schemas,
duplicate value (non-index) btrees, hierarchical slot indexes, lazy de-
serialization of persistent objects, and a good amount of general code
reorg.
Partially implemented: schema evolution, referential integrity, set-
valued slots, class/slot associations (OneToMany and ManyToMany
relations), efficient derived class indexes, finish metaclass protocol
changes, a (very) simple query interpreter, and the all important
suite of tests.
This has resulted in a more significant re-factoring than planned so I
won't be pushing patches to the dev branch until I'm green on all
tests. Since I'm doing most of this in sporadic spare hours after
work, I suspect it will be a week or two before I'm done. If anyone
is interested in helping/commenting/testing, I can expose the current
state on the development branch on common-lisp.net, or you can wait
until I integrate this with the main development branch.
Now is your chance to learn and contribute to Elephant!
Good items to collaborate on (soon):
= Associations
I can explain my thoughts on the design. Metaclass support and
partial implementation already done
= Metaclass issues
Work through details of change-class, update-instance-for-redefined-
class and how they work with schemas
= Schema evolution and synchronization (Robert?)
Most of the hooks are here, but tying up all the loose ends will
take some sustained concentration
= Testing
Pick some new features and hammer away (hierarchical indexing, set-
valued slots, etc)
Longer term project opportunities that are decoupled from other
ongoing changes include:
= A little query interpreter (Waldo?, Daniel?)
Read sets of oids from indices, implement an efficient in-memory
sort&merge over oids, and deserialize after the query. I've specified
a bunch of this so could provide a set of pointers to start. Looking
at some other object query languages and proposing a syntax would be a
good place to start
= Design an online GC strategy (in-place mark & sweep using the new
oid->cid table, incremental?)
Ian
More information about the elephant-devel
mailing list