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
_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to