DBM (computing): Difference between revisions

Content deleted Content added
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.2
 
(8 intermediate revisions by 6 users not shown)
Line 1:
{{Short description|Key-value database management system}}
{{About|the family of database engines||DBM (disambiguation){{!}}DBM}}
{{refimprove|date=January 2022}}
In computing, a '''DBM''' is a [[Librarylibrary (computing)|library]] and [[file format]] providing fast, single-keyed access to data. A [[key-value database]] from the original [[Unix]], ''dbm'' is an early example of a [[NoSQL]] system.<ref name="2007-kew-apache"/><ref name="2001-hazel-exim"/><ref name="2001-ladd-odonell-xhtml"/>
{{About|the family of database engines||DBM (disambiguation){{!}}DBM}}
 
In computing, a '''DBM''' is a [[Library (computing)|library]] and [[file format]] providing fast, single-keyed access to data. A [[key-value database]] from the original [[Unix]], ''dbm'' is an early example of a [[NoSQL]] system.<ref name="2007-kew-apache"/><ref name="2001-hazel-exim"/><ref name="2001-ladd-odonell-xhtml"/>
 
==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 -letter acronym]] for ''DataBase Manager'', and can also refer to the family of database engines with APIs and features derived from the original ''dbm''.
 
The ''dbm'' library stores arbitrary data by use of a single key (a [[primary key]]) in fixed-size [[bucket (computing)|buckets]] and uses [[hash function|hashing]] techniques to enable fast retrieval of the data by key.
 
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 17 ⟶ 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.
* [https://www.gnu.org.ua/softwares/gdbm/gdbm.html GDBM] ("GNU dbm"), [[GNU]] rewrite of the library implementing ''ndbm'' features and its own interface. Also provides new features like crash tolerance for guaranteeing data consistency.<ref>{{cite web |title=Crash Tolerance |website=GDBM manual |url=https://www.gnu.org.ua/software/gdbm/manual/Crash-Tolerance.html |access-date=3 October 2021}}</ref><ref>{{cite web |title=Crashproofing the Original NoSQL Key-Value Store |url=https://queue.acm.org/detail.cfm?id=3487353 |access-date=3 October 2021}}</ref>
* ''sdbm'' ("small dbm"), a [[public ___domain]] rewrite of ''dbm''. It is a part of the standard distribution for [[Perl]] and is available as an external library for [[Ruby_(programming_language)|Ruby]].<ref>{{cite web |last1=yigit |first1=ozan |title=sdbm.bun |website=cse.yorku.ca |url=http://www.cse.yorku.ca/~oz/sdbm.bun |access-date=8 May 2019}}</ref><ref>{{cite web |title=Ruby SDBM library |website=SDBM on Github |url=https://github.com/ruby/sdbm |quote=Note that Ruby used to ship SDBM in the standard distribution up until version 2.7, after which it was made available only as an external library, similarly to the DBM and GDBM libraries, removed from the standard library in Ruby 3.1.}}</ref>
* ''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>
* ''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>
* [[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 Berkeley-style API.
 
Line 36 ⟶ 35:
 
== See also ==
* [[Ordered Key-Value Store]]
* [[Embedded database]]
* [[Flat file database]]
* [[ISAM]]
* [[Key-valueKey–value database]]
* [[Mobile database]]
* [[NoSQL]]