[elephant-cvs] CVS elephant/doc

rread rread at common-lisp.net
Thu Apr 26 03:10:13 UTC 2007


Update of /project/elephant/cvsroot/elephant/doc
In directory clnet:/tmp/cvs-serv21396

Modified Files:
	user-guide.texinfo 
Log Message:
Added CLSQL section.


--- /project/elephant/cvsroot/elephant/doc/user-guide.texinfo	2007/04/25 02:27:57	1.17
+++ /project/elephant/cvsroot/elephant/doc/user-guide.texinfo	2007/04/26 03:10:13	1.18
@@ -1308,7 +1308,40 @@
 @comment node-name, next, previous, up
 @section CLSQL Data Store
 
-
+Elephant uses Kevin Rosenberg's excellent @uref{http://clsql.b9.com, CLSQL}
+ CLSQL lisp binding to relational databases 
+(it does not use the ORM functionality offered by that package.)  
+CLSQL interfaces to many databases (Postgres, MySQL, Oracle, 
+ODBC, SQLite3, Microsoft SQL Server (via ODBC)).  Right now, Elephant has
+been tested with Postgress and SQLite3.  Probably getting it to work with
+one of the others will take a small amount of debugging; in principle there
+is no reason it won't work out of the box.  We invite users to try 
+other database, and will quickly incorporate patches needed to make them 
+work.
+
+Because CLSQL is very generic, the CLSQL interface does not offer any
+special feature as discussed in the previous section @ref{Berkeley DB Data Store}.
+
+ at subsection Basic CLSQL Implementation
+
+The CLSQL uses base64 encoding to store binary data as text directly.  This
+has the advantage that it works with all databases, which tend to differ 
+widely in their treatment of Binary Large Objects (BLOBs.)  It imposes some
+obvious overhead.
+
+The CLSQL implementation is structurally exactly the same as the BDB implementation.
+A single table is created to hold all (key,value) pairs.  An index on the key column
+provides efficient key lookup.  No additional indexing offered by the underlying 
+databases is used.  This has the advantage that the API is exactly the same as the 
+BDB api, and all of the functional indexes, cursors, and secondary indexes work exactly 
+the same way.  It does not exploit the performance that a database-specific solution 
+would offer (see @ref{Postmodern Data Store} for an example of such a system.
+
+Our basic strategy is to leave the CLSQL interface as simple as possible, in order to 
+work with as many databases as possible.  When there is enough motivation to support 
+a backend that is specific to one database (and therefore probably faster), such an 
+interface can be placed into the ``contrib'' directory and migrated into the main 
+code base as time allows the complete integration with the test suite.
 
 @node Postmodern Data Store
 @comment node-name, next, previous, up
@@ -1317,6 +1350,9 @@
 The postmodern data store is not yet integrated.  It should be
 documented for the forthcoming release 0.9.1 or 0.9.2.
 
+This backend will presumably be much faster, when used against PostGres, than the 
+generic CLSQL store.
+
 @node Native Lisp Data Store
 @comment node-name, next, previous, up
 @section Native Lisp Data Store




More information about the Elephant-cvs mailing list