: "For other uses, see DBM (disambiguation)"
dbm was the first of a family of simple
database engines, originally written by Ken Thompsonand released by AT&Tin 1979 [ATT79] . The name is a three letter acronymfor "database manager".
The hashing scheme used is a form of
extensible hashing, so that the hashing scheme expands as new buckets are added to the database, meaning that, when nearly empty, the database starts with one bucket, which is then split when it becomes full. The two resulting child buckets will themselves split when they become full, so the database grows as keys are added.
It should be noted that while dbm and its derivatives are pre-relational databases--effectively a hash fixed to disk--in practice they can offer a more practical solution for high-speed storage looked up by-key as they do not require the overhead of connecting and preparing queries. This is balanced by the fact that they can generally only be opened for writing by a single process at a time. While this can be addressed by the use of an agent daemon which can receive signals from multiple processes, this does, in practice, add back some of the overhead (though not all). In simpler terms, they may be old tech but they're "fast".
dbm has had many successors:
* Ndbm: In 1986 Berkeley produced ndbm (standing for "New Database Manager"). This added support for having multiple databases open concurrently.
* Sdbm: Some versions of unix were excluding ndbm due to licencing issues, so in 1987 Ozan Yigit produced this public domain clone [YIG98] .
* Gdbm: Standing for 'GNU Database Manager' this open source version was written by Philip A. Nelson for the
GNU project. It added support for arbitrary length data in the database, as previously all data had had a fixed maximum length.
* Tdbm: Provided support for
* TDB: Released by the Samba team, under the
GPL(source files in Samba package state LGPLlicense for TDB). From the Sourceforgepage: "TDB is a Trivial Database. In concept, it is very much like GDBM, and BSD's DB except that it allows multiple simultaneous writers and uses locking internally to keep writers from trampling on each other. TDB is also extremely small."
* QDBM: 'Quicker Database Manager'. Claims to be quicker, and was released under the
LGPLby Mikio Hirabayashi in 2000.
Berkeley DB: A version that is available under dual licence, both open sourceand commercial. It is now supported and maintained by the company Sleepycat Software, which was formed by long time dbm developers Margo Seltzerand Keith Bostic. Sleepycat Software has been acquired by Oracle in February, 2006.
* JDBM: JDBM is a transactional persistence engine for Java. It aims to be for Java what GDBM is for other languages (C/C++, Python, Perl, etc.)
* Tokyo Cabinet: A modern reimplementation of QDBM, also by Mikio Hirabayashi
* VSDB: An implementation of a dbm-like database written by John Meacham that supports full ACID semantics that places data safety above all. It includes transactions and rollbacks with no locking whatsoever, rather relying on atomic filesystem operations.
Wikimedia Foundation. 2010.