[elephant-cvs] CVS update: elephant/NOTES
blee at common-lisp.net
blee at common-lisp.net
Sun Aug 29 07:44:47 UTC 2004
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.
More information about the Elephant-cvs
mailing list