
Update of /project/elephant/cvsroot/elephant In directory common-lisp.net:/tmp/cvs-serv29590 Modified Files: NOTES Log Message: updates Date: Sun Aug 29 09:44:47 2004 Author: blee Index: elephant/NOTES diff -u elephant/NOTES:1.2 elephant/NOTES:1.3 --- elephant/NOTES:1.2 Fri Aug 27 19:31:08 2004 +++ elephant/NOTES Sun Aug 29 09:44:47 2004 @@ -26,13 +26,15 @@ While I loath specials, since you can't change the signature of slot accessors, in order to pass parameters to the -database / serializer, specials are needed. The store -controller (see below) is also a special. +database / serializer, specials are needed. Also specials +will probably play nice with threaded lisps. ----------------------- CLASSES AND METACLASSES ----------------------- +***Andrew write your stuff here*** + Persistent classes which the user defines are declared and instrumented by using the persistent-metaclass. @@ -41,16 +43,21 @@ ----------- While we support serializing and persisting a wide class of -Lisp data types, there are problems with aggregate types -(conses, lists, arrays, objects, hash-tables...) +Lisp data types, there are problems with persisting +aggregate types (conses, lists, arrays, objects, +hash-tables...) 1) not automatic: there's no way for elephant to know when you've changed a value in an aggregate object, so you have to manually restore it back into the slot to get it saved. -slot-1 of obj A contains a cons. you change the car of the -cons. this is not reflected into the database unless you -re-set slot-1 of obj A with the cons. +example 1: you put a cons into the database. you change +it's car. this is not saved unless you resave the cons into +the database. + +example 2: slot-1 of obj A (saved in the database) contains +a cons. you change the car of the cons. this is not +reflected into the database unless you resave A. 2) merge-conflicts: changing one value and saving an aggregate will write out the whole aggregate, possibly @@ -91,6 +98,10 @@ exposed. Eventually they should be, so that tuning flags can be set on them. +OIDs are generated by a bit of C code, which isn't great, +nor that safe (to get acceptable performance i use +DB_TXN_NOSYNC.) Waiting for Sleepycat 4.3. + The instance cache is implemented as a values-weak hash-table. This is a hash-table where the values can be collected, and when they are, the entire key-value entry is @@ -134,9 +145,6 @@ 1) Split object table by slots or classes? 2) Separate or same btree for collections? -OIDs are currently randomly generated (waiting for Sleepycat -sequences.) - ------------------- SERIALIZER: GENERAL ------------------- @@ -153,8 +161,6 @@ CMUCL this appears to be better than generic functions, though i don't know why. -TODO: reorder the etypecase / cond. - --------------------------- SERIALIZER: PRIMITIVE TYPES --------------------------- @@ -315,5 +321,5 @@ hopefully. Waiting for Berkeley DB 4.3 to get counters (sequences.) -ETA Summer 2004. +ETA October 2004.