[elephant-devel] Statice and FramerD

Ian Eslick eslick at csail.mit.edu
Tue Jan 24 21:29:55 UTC 2006


I just was talking with Howie Shrobe today, a colleague who actually 
hacked on Statice back when he was at Symbolics.  It sounds like they 
did default object indexing (all objects had a class index that referred 
to them) and was pretty hairy under the hood due to some technical 
politics.  Zach's comments are consistent with what Howie told me. 

We talked a bit about GC and he said that there is a real problem 
defining reachability in a multi-user DB.  GC might make more sense in 
solo mode, but requires hooking into the running image to determine what 
references are in memory that aren't yet in the root index.  The only 
obvious way to be sure you can GC is to disconnect everyone from the DB 
(as if you were doing recovery) and do reachability from all root 
indices to mark objects as live.

I also had a chance encounter with Ken Haase, the author of FramerD - an 
object database intended for doing knowledge representation and he 
brought up a few design issues that he found important:

1) Derived feature indices (Elephant's secondary indices provide good 
support for this)
2) Appending values.  Sleepycat allows duplicate keys in secondary 
indices so
    if we want to index on values and two values share the same date, 
for instance, then
    there are two btree key/value entries.  In FramerD he had unique 
keys and, much like in
    a hash collision, recorded the new value by appending it to an 
array/list within the btree
    without having to update the BTrees.  Without this duplicate keys 
can be expensive.  His
    worry was having to read the whole list that collided, add an 
element, and write it back.
3) Lightweight objects (Elephant does this right by keeping only oids in 
memory and doing
    slot read/writes via the btrees)

I'll try to pick his brain on query methods and optimization the next 
time he drops in.

Ian

Zach Beane wrote:

>On Tue, Jan 24, 2006 at 11:43:16AM -0500, Ian Eslick wrote:
>
>  
>
>>That reminds me.  Without GC and/or renaming oids we'll eventually run 
>>out of OID address space, again when the DB gets enough use.  I haven't 
>>seen any provisions for fixnum wrap-around.  Am I missing something or 
>>is this correct?
>>    
>>
>
>This isn't a direct comment, but I recently came across this book:
>
>   http://www.amazon.com/gp/product/0136298338/102-6097685-4704118
>
>It has a concise but interesting chapter on the design and
>implementation of the Statice database. You can also find it on
>Abebooks for $1.
>
>I don't have it in front of me, but IIRC it described Statice OIDs as
>96 bit and intended to be unique across space and time. It also said
>that the database was *never* garbage collected.
>
>Zach
>
>_______________________________________________
>elephant-devel site list
>elephant-devel at common-lisp.net
>http://common-lisp.net/mailman/listinfo/elephant-devel
>  
>



More information about the elephant-devel mailing list