[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