Content deleted Content added
Artoria2e5 (talk | contribs) Undid revision 942523550 by Artoria2e5 (talk) |
Xose.vazquez (talk | contribs) |
||
(44 intermediate revisions by 21 users not shown) | |||
Line 1:
{{Short description|Key-value database management system}}
{{About|the family of database engines||DBM (disambiguation){{!}}DBM}}
{{
In computing, a '''DBM''' is a [[
==History==
The original ''dbm'' library and file format was a simple [[database engine]], originally written by [[Ken Thompson]] and released by [[AT&T]] in 1979. The name is a [[three
The ''dbm'' library stores arbitrary data by use of a single key (a [[primary key]]) in fixed-size
The hashing scheme used is a form of [[extendible 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.
Line 16:
The original AT&T ''dbm'' library has been replaced by its many successor implementations. Notable examples include:<ref name="2001-ladd-odonell-xhtml"/>
* ''ndbm'' ("new dbm"), based on the original dbm with some new features.
*
* ''sdbm'' ("small dbm"), a [[public ___domain]] rewrite of ''dbm''. It is a part of the standard
* ''qdbm'' ("Quick Database Manager"), a higher-performance ''dbm'' employing many of the same techniques as Tokyo/Kyoto Cabinet. Written by the same author before they moved on to the cabinets.<ref>{{cite web |date=2006 |title=QDBM: Quick Database Manager |website=fallabs.com |url=https://fallabs.com/qdbm/ |access-date=2020-02-27 |archive-date=2020-02-27 |archive-url=https://web.archive.org/web/20200227064151/https://fallabs.com/qdbm/ |url-status=dead }}</ref>
* [[Berkeley DB]], 1991 replacement of ndbm by [[Sleepycat Software]] (now [[Oracle Corporation|Oracle]]) created to get around the AT&T Unix copyright on [[Berkeley Software Distribution|BSD]]. It features many extensions.▼
* ''tdb'' ("Trivial Database"), a simple database used by [[Samba (software)|Samba]] that supports multiple writers. Has a gdbm-based API.<ref>{{cite web |title=tdb: Main Page |website=tdb.samba.org |url=https://tdb.samba.org/}}</ref>
* [[Lightning Memory-Mapped Database|LMDB]]: [[copy-on-write]] [[memory-mapped file|memory-mapped]] [[B+ tree]] implementation in [[C (programming language)|C]] with a dbm and Berkeley-style API. Has improvements to parallelism.▼
▲* [[Berkeley DB]], 1991 replacement of ndbm by [[Sleepycat Software]] (now [[Oracle Corporation|Oracle]]) created to get around the AT&T Unix copyright on [[Berkeley Software Distribution|BSD]]. It features many extensions like parallelism, transactional control, hashing, and B-tree storage.
▲* [[Lightning Memory-Mapped Database|LMDB]]: [[copy-on-write]] [[memory-mapped file|memory-mapped]] [[B+ tree]] implementation in [[C (programming language)|C]] with a
The following databases are dbm-inspired, but they do not directly provide a dbm interface, even though it would be trivial to wrap one:
* [[Cdb (software)|cdb]] ("constant database"), database by [[Daniel J. Bernstein]], database files can only be created and read, but never be modified
* [[Tkrzw]], an Apache 2.0 licensed successor to Kyoto Cabinet and Tokyo Cabinet
* [[WiredTiger]]: database with traditional row-oriented and column-oriented storage.
== Availability ==
As of 2001, the ''ndbm'' implementation of DBM was standard on Solaris and IRIX, whereas
== Reliability ==
A 2018 [[american fuzzy lop (fuzzer)|AFL]] [[fuzzing]] test against many DBM-family databases exposed many problems in implementations when it comes to corrupt or invalid database files. Only [[cdb (software)|''freecdb'']] by [[Daniel J. Bernstein]] showed no crashes. The authors of gdbm, tdb, and lmdb were prompt to respond. Berkeley DB fell behind due to the sheer amount of other issues;<ref name=fuzz>{{cite web |last=Debroux |first=Lionel |date=16 Jun 2018 |title=oss-security - Fun with DBM-type databases... |website=openwall.com |url=https://www.openwall.com/lists/oss-security/2018/06/17/1}}</ref> the fixes would be irrelevant to open-source software users due to the licensing change locking them back on an old version.<ref name=deb/>
== See also ==
* [[Ordered Key-Value Store]]
* [[Embedded database]]
* [[Flat file database]]
* [[ISAM]]
* [[
* [[Mobile database]]
* [[NoSQL]]
Line 46 ⟶ 53:
==Bibliography==
{{refbegin}}
*{{cite book
*{{cite book |
*{{cite book |
{{refend}}
*
*
*
[[Category:Database engines]]
|