Sophia database => fail
Bron Gondwana
brong at fastmail.fm
Mon Jun 20 19:54:19 EDT 2016
On Mon, Jun 20, 2016, at 18:36, Howard Chu via Cyrus-devel wrote:
> Thomas Jarosch via Cyrus-devel wrote:
> > plain old Berkeley DB 6.x might be an option, too.
> > It has transaction support, page level locking and is a key-value store.
We've had bad experiences with BDB in the past - there's a reason why it got pulled from Cyrus. The upgrade story was a mess - BDB upgrade headaches have been the major cause of people staying with old versions.
> > Not sure about the licensing issues though:
> > http://www.infoworld.com/article/2611450/open-source-software/oracle-switches-berkeley-db-license.html
> > http://www.oracle.com/technetwork/products/berkeleydb/downloads/licensing-098979.html
>
> Licensing is one of the reasons we have abandoned BerkeleyDB in OpenLDAP.
That too. Nobody wants to use a database owned by a lawnmower:
https://www.youtube.com/watch?v=-zRN7XLCRhc&t=34m
> That, and LMDB is orders of magnitude faster than BerkeleyDB.
> > Also it's not a "multi-level" database.
Well, yeah. That's not totally necessary. Btree and LSM database structures both provide what we need in terms of operations.
I'm going to try to build an LMDB backend. I do have some questions for Howard about how best to do it... :) The CyrusDB abstraction layer allows opening multiple databases by filename. Should we be opening one environment per file, or just a single environment per process? Looking at:
http://lmdb.tech/doc/starting.html
We could us MDB_NOSUBDIR to use the file path as a data file via mdb_env_open...
We already use internal "open file" tracking in most of our database types, so I'd add that for the LMDB backend as well. I just use a linked list, since we tend to have at most 3-4 databases open at once in each process.
We don't use threading for anything except mupdate, and that uses a mutex around all the database access, so multiple thread synchronisation should be OK :)
Bron.
--
Bron Gondwana
brong at fastmail.fm
More information about the Cyrus-devel
mailing list