[Python-Dev] bsddb

Oleg Broytmann phd at phd.pp.ru
Thu Sep 4 16:33:09 CEST 2008


On Thu, Sep 04, 2008 at 03:23:22PM +0200, Jesus Cea wrote:
> Compared to sqlite, you don't need to know SQL, you can finetuning (for
> example, using ACI instead of ACID, deciding store by store), and you
> can do replication and distributed transactions (useful, for example, if
> your storage is bigger than a single machine capacity, like my case).

   Let me raise the glove. Compared to bsddb:

-- SQLite is public domain; the licensing terms of Berkeley DB[1] are not
   friendly to commercial applications: "Our open source license ...
   permits use of Berkeley DB in open source projects or in applications
   that are not distributed to third parties." I am not sure if using of
   PyBSDDB in commercial applications is considered "using of Berkeley DB
   in open source projects";
-- SQLite has a pretty stable API and a pretty stable on-disk format; for
   bsddb one needs to do dump/reload on every major release;
-- SQLite implements a subset of SQL - a powerful query language;
-- SQLite is extensible - one can write his/her own functions and
   aggregates, e.g.; PySQLite allows to write these functions in Python;
   PySQLite also allows to write data conversion functions that converts
   between Python and SQL data types;
-- a program can attach a few databases at once thus distributing loads
   between a number of disks, including network mounts.

[1] http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html

> If
> you combine Berkeley DB with Durus, for example, all of this is
> abstracted and you simply use "regular" python objects.

   Durus (and ZODB) has an index of all objects, the index is stored in
memory AFAIK - a real problem if one has millions of objects. Does bsddb
help to mitigate the problem?

Oleg.
-- 
     Oleg Broytmann            http://phd.pp.ru/            phd at phd.pp.ru
           Programmers don't die, they just GOSUB without RETURN.


More information about the Python-Dev mailing list