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.