Update of /project/elephant/cvsroot/elephant In directory clnet:/tmp/cvs-serv20360
Modified Files: INSTALL TODO TUTORIAL ele-bdb.asd ele-clsql.asd elephant-tests.asd Log Message:
Remove all references to sleepycat; change to bdb db-bdb or berkeley-db; passes all test for BDB and SQLite on Allegro/Mac OS/32-bit
--- /project/elephant/cvsroot/elephant/INSTALL 2006/11/11 06:27:37 1.18 +++ /project/elephant/cvsroot/elephant/INSTALL 2006/11/11 18:41:10 1.19 @@ -91,19 +91,14 @@
config.sexp
-to point to your local distribution of the Berkeley DB libraries - -Darwin / OS X ---------------- -You need to have the developer tools installed. In the Makefile and -ele-bdb.lib there are commented-out lines showing settings that some -users have used for OS X; if you are using that I assume you will -have to comment out the appropriate lines and uncomment those examples. +Which contains an alist providing string paths pointing to the root +of the Berkeley DB distribution :berkeley-db-root, the library to load +:berkeley-db-lib and the pthreads library if you're running linux :pthread-lib.
For Win32 (directions courtesy of Bill Clementson): --------------------------------------------------- -Create an MSVC dll project and add src/db-bdb/libsleepycat.c, -src/db-bdb/libsleepycat.def and the Berkeley DB libdb43.lib files +Create an MSVC dll project and add src/db-bdb/libberkeley-db.c, +src/db-bdb/libberkeley-db.def and the Berkeley DB libdb43.lib files to the project (should be in the build_win32/release folder)
Add the Berkeley DB dbinc include files directory and the @@ -114,7 +109,7 @@ Build the Elephant DLL file
Since you've statically included libdb43.lib inside -libsleepycat.c, it may or may not be necessary to load +libberkeley-db.c, it may or may not be necessary to load libdb43.dll into Lisp (see below.)
@@ -140,7 +135,7 @@ To test the load process explicitly the following asdf files are provided:
-if you are using Sleepycat / Berkeley DB, type: +if you are using Berkeley DB, type: (asdf:operate 'asdf:load-op :ele-bdb)
if you are using CL-SQL, type: --- /project/elephant/cvsroot/elephant/TODO 2006/11/11 15:33:33 1.29 +++ /project/elephant/cvsroot/elephant/TODO 2006/11/11 18:41:10 1.30 @@ -3,8 +3,8 @@
Ongoing release plan notes:
-0.6.1 - performance, safety and portability (end of Summer?) ------------------------------------------------------------ +0.6.1 - performance, safety and portability +--------------------------------------------
Bugs or Observations: x 64-bit support (from Marco) @@ -12,16 +12,14 @@ x MCL 1.1 unicode support; rationalize other lisp support for unicode
Stability: -- Review all the NOTE comments in the code - Remove build gensym warnings in sleepycat -- Remove sleepycat name. Change sleepycat to db-bdb to reflect oracle ownership and avoid - confusion for new users - Delete persistent slot values from the slot store with remove-kv to ensure that there's no data left lying around if you define then redefine a class and add back a persistent slot name that you thought was deleted and it gets the old value by default. - Cleaner failure modes if operations are performed without repository or without transaction or auto-commit (Both) +- Review all the NOTE comments in the code
Store variables: - Think through default *store-controller* vs. explicit parameter passing @@ -96,6 +94,8 @@ stay around - probably indefinitely unless we GC (no, we'll resolve this with a stop-and-copy GC - need to make migration bookkeeping more efficient) x MCL type-declaration compatibility +x Remove sleepycat name. Change sleepycat to db-bdb to reflect oracle ownership and avoid + confusion for new users
0.6.2 - Advanded work, low-hanging fruit (Fall '06) -------------------------------------------------- --- /project/elephant/cvsroot/elephant/TUTORIAL 2006/02/15 01:54:07 1.7 +++ /project/elephant/cvsroot/elephant/TUTORIAL 2006/11/11 18:41:10 1.8 @@ -3,7 +3,7 @@ ========
-------------------------------- -What is Sleepycat / Berkeley DB? +What is Berkeley DB? --------------------------------
When someone says "database," most people think of SQL @@ -14,7 +14,7 @@ many features. While you don't need to understand Sleepycat to use Elephant, reading the docs will certainly help you.
-http://www.sleepycat.com +http://www.oracle.com/database/berkeley-db.html
--------------- Getting Started @@ -27,7 +27,7 @@
Assuming you've managed to install Elephant properly,
-* if you are using Sleepycat / Berkeley DB, type: +* if you are using Berkeley DB, type: (asdf:operate 'asdf:load-op :ele-bdb)
* or if you are using CL-SQL, type: @@ -56,7 +56,7 @@ The store controller holds the handles to the database environment and tables, and some other bookkeeping. If for some reason you need to run recovery on the database (see -sleepycat docs) you can specify that with the :recover and +Berkeley DB docs) you can specify that with the :recover and :recover-fatal keys.
Alternatively, @@ -250,7 +250,7 @@ Note that the database is read every time you access a slot. This is a feature, not a bug, especially in concurrent situations: you want the most recent commits, right? -(Sleepycat will give isolation inside of transactions, +(Berkeley DB will give isolation inside of transactions, though.) In particular, if your slot value is not an immediate value, reading will cons the value. Gets are not an expensive operation (I can do a million reads in 30 @@ -315,7 +315,7 @@ The btrees class are to hash-tables as persistent-objects are to ordinary objects. btrees have a hash-table-like interface, but store their keys and values directy in a -Sleepycat btree. Btrees may be persisted simply by their +BDB btree. Btrees may be persisted simply by their OID. Hence they have all the nice properties of persistent objects: identity, fast serialization / deserialization, no merge conflicts..... @@ -345,13 +345,13 @@ Threading ---------
-Sleepycat plays well with threads and processes. The store +Berkeley DB plays well with threads and processes. The store controller is thread-safe by default, that is, can be shared amongst threads. Transactions may not be shared amongst threads except serially. One thing which is NOT thread and process safe is recovery, which should be run when no one is else is talking to the database environment. Consult the -Sleepycat docs for more information. +Berkeley DB docs for more information.
Elephant uses some specials to hold parameters and buffers. If you're using a natively threaded lisp, you can initialize @@ -391,12 +391,12 @@ * (db-env-set-flags (controller-environment *store-controller*) 1 :txn-nosync t)
-or look at other flags in the sleepycat docs. This will +or look at other flags in the Berkeley DB docs. This will greatly increase your throughput at the cost of some durability; I get around a 100x improvement. This can be recovered with judicious use of checkpointing and replication, though this is currently not supported by -Elephant -- see the sleepycat docs. +Elephant -- see the Berkeley DB docs.
The serializer is definitely fast on fixnums, strings, and persistent things. It is fairly fast but consing with --- /project/elephant/cvsroot/elephant/ele-bdb.asd 2006/11/11 06:27:37 1.11 +++ /project/elephant/cvsroot/elephant/ele-bdb.asd 2006/11/11 18:41:10 1.12 @@ -45,8 +45,8 @@ (defclass bdb-c-source (elephant-c-source) ())
(defmethod compiler-options ((compiler (eql :gcc)) (c bdb-c-source) &key &allow-other-keys) - (let* ((include (merge-pathnames (get-config-option :sleepycat-root c) "include")) - (lib (merge-pathnames (get-config-option :sleepycat-root c) "lib"))) + (let* ((include (merge-pathnames (get-config-option :berkeley-db-root c) "include")) + (lib (merge-pathnames (get-config-option :berkeley-db-root c) "lib"))) (append (list (format nil "-L~A" lib) (format nil "-I~A" include)) (call-next-method) (list "-ldb")))) @@ -55,7 +55,7 @@ (remove-if #'(lambda (x) (null (car x))) (list (cons (get-config-option :pthread-lib c) "pthread") - (cons (get-config-option :sleepycat-lib c) "sleepycat")))) + (cons (get-config-option :berkeley-db-lib c) "berkeley-db"))))
;; ;; System definition @@ -75,8 +75,8 @@ ((:module :db-bdb :components ((:file "package") - (:bdb-c-source "libsleepycat") - (:file "sleepycat") + (:bdb-c-source "libberkeley-db") + (:file "berkeley-db") (:file "bdb-controller") (:file "bdb-transactions") (:file "bdb-collections")) --- /project/elephant/cvsroot/elephant/ele-clsql.asd 2006/02/22 20:18:51 1.7 +++ /project/elephant/cvsroot/elephant/ele-clsql.asd 2006/11/11 18:41:10 1.8 @@ -53,7 +53,8 @@ :components ((:module :db-clsql :components - ((:file "sql-controller") + ((:file "package") + (:file "sql-controller") (:file "sql-transaction") (:file "sql-collections")) :serial t)))) --- /project/elephant/cvsroot/elephant/elephant-tests.asd 2006/02/19 04:52:58 1.6 +++ /project/elephant/cvsroot/elephant/elephant-tests.asd 2006/11/11 18:41:10 1.7 @@ -74,6 +74,6 @@ :components ((:module :tests :components - ((:file "testsleepycat"))))) + ((:file "testbdb")))))