[elephant-devel] BDB vs postmodern

Ian Eslick eslick at media.mit.edu
Thu Feb 21 02:09:54 UTC 2008


On Feb 20, 2008, at 8:44 PM, lists at infoway.net wrote:

> Hi all,
>
> I don't mean to start a war here or put any work down. However, I  
> just needed some clarification/direction into which way the data  
> stores work is going.

One challenge is that the current implementation is setup to only work  
with one BDB version at a time.  We tend not to exploit much of the  
new functionality available in later 4.x versions,a although we  
benefit from performance, stability and other general improvements.

> From the documentation I've read, the BDB data store only supports  
> BDB version 4.5 (or up to 4.5), so further work done in 4.6 and  
> above is not leveraged. I don't know if there is any effort to  
> continue evolving the BDB data store. Any comments?

Because we don't want to push people to upgrade each time BDB releases  
a new incremental, and because we don't keep close tabs on the BDB  
release schedule, we haven't been aggressively upgrading BDB's  
compatibility.  Most Linux implementations allow you to keep multiple  
versions for awhile, and we haven't had any community pushback on this  
lazy upgrade policy.

Also I'm the only lead developer with intimate knowledge of the db-bdb  
data store.  While I support bug fixes, and will occasionally work on  
features, I'm not very active right now.

> Also, from what I've been reading on the list, it seems the  
> postmodern data store is more active. Granted is a more recent data  
> store and may need more work to get to where the BDB data store has  
> gotten after all this time (just speculation since I haven't really  
> used the postmodern data store). However, from what I've read, the  
> postmodern seems to use Postgres as the backend but not in a Object- 
> Relational mode but rather as plain storing of "btree pages". So, in  
> essence, what I understand is that operating on this data store  
> requires elephant to read/write "pages" or "btrees" in Postgres and  
> once in memory, they may be treated similar to how the BDB engine  
> works (don't mean to mock postmodern with my lack of knowledge).

That's essentially correct, although the postmodern developers can  
probably provide more insight.

> So, putting licensing issues aside, what is the real difference/ 
> advantage of one data store over the other? In a recent email I read  
> by Alex, he mentions he's going to work on improving performance on  
> the postmodern data store. So, even after that improves and  
> performance is matched with that of BDB, is there an advantage of  
> one data store over the other?

BDB is the fastest
Postmodern is about 4x slower (is this still true)
CL-SQL on Postgresql is about another 2x slower yet
CL-SQL on SQLite3 is even slower (another 2x?), although there is  
speculation that this is artificial but we haven't investigated.



> Since Postgres does allow for features such as replication,  
> clustering, and fail-over with multiple active simultaneous client  
> connections, does this mean that I could have multiple (separate)  
> lisp clients using elephant connecting to a separate Postgres  
> cluster with no concurrency issues?

Yes.

You can do this on BDB, but only on the same system as it relies on  
shared memory locks between processes.  This helps for multi-CPU  
systems (one lisp process per CPU) but not for distributing Elephant  
across

> Thanks,
> Waldo
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel




More information about the elephant-devel mailing list