Dbm
Encyclopedia
dbm was the first of a family of simple database engine
Database engine
A database engine is the underlying software component that a database management system uses to create, read, update and delete data from a database....

s, originally written by Ken Thompson
Ken Thompson
Kenneth Lane Thompson , commonly referred to as ken in hacker circles, is an American pioneer of computer science...

 and released by AT&T
AT&T
AT&T Inc. is an American multinational telecommunications corporation headquartered in Whitacre Tower, Dallas, Texas, United States. It is the largest provider of mobile telephony and fixed telephony in the United States, and is also a provider of broadband and subscription television services...

 in 1979. The name is a three letter acronym for database manager.

dbm stores arbitrary data by use of a single key (a primary key) in fixed-size buckets
Bucket (computing)
In computing, the term bucket can have several meanings. It is used both as a live metaphor, and as a generally accepted technical term in some specialised areas. A bucket is most commonly a type of data buffer or a type of document in which data is divided into regions.-Features of a...

 and uses hashing
Hash function
A hash function is any algorithm or subroutine that maps large data sets to smaller data sets, called keys. For example, a single integer can serve as an index to an array...

 techniques to enable fast retrieval of the data by key.

The hashing scheme used is a form of extendible hashing
Extendible hashing
Extendible hashing is a type of hash system which treats a hash as a bit string, and uses a trie for bucket lookup. Because of the hierarchical nature of the system, re-hashing is an incremental operation...

, 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.

While dbm and its derivatives are pre-relational database
Relational database
A relational database is a database that conforms to relational model theory. The software used in a relational database is called a relational database management system . Colloquial use of the term "relational database" may refer to the RDBMS software, or the relational database itself...

s — effectively a hash
Associative array
In computer science, an associative array is an abstract data type composed of a collection of pairs, such that each possible key appears at most once in the collection....

 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
Daemon (computer software)
In Unix and other multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user...

 which can receive signals from multiple processes, this does, in practice, add back some of the overhead (though not all).

Successors

dbm has had many successors:
  • Ndbm
    Ndbm
    ndbm is a Berkeley producedversion from 1986 of the AT&T dbm database.ndbm stores arbitrary data by use of a single key in fixed-size buckets.-Problems:The sum of the sizes of a key/content pair must not exceed the...

    : 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 licensing issues, so in 1987 Ozan Yigit produced this public domain clone.
  • gdbm: (standing for GNU dbm) a Free/Libre version written by Philip A. Nelson for the GNU project
    GNU Project
    The GNU Project is a free software, mass collaboration project, announced on September 27, 1983, by Richard Stallman at MIT. It initiated GNU operating system development in January, 1984...

    . It added support for arbitrary-length data in the database: previously all data had a fixed maximum length. The last version was released on November 13, 2011.
  • Tdbm: Provided support for atomic transactions.
  • TDB: Released by the Samba
    Samba (software)
    Samba is a free software re-implementation, originally developed by Andrew Tridgell, of the SMB/CIFS networking protocol. As of version 3, Samba provides file and print services for various Microsoft Windows clients and can integrate with a Windows Server domain, either as a Primary Domain...

     team, under the LGPL. From the homepage: 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 LGPL by Mikio Hirabayashi in 2003.
  • Berkeley DB
    Berkeley DB
    Berkeley DB is a computer software library that provides a high-performance embedded database for key/value data. Berkeley DB is a programmatic software library written in C with API bindings for C++, PHP, Java, Perl, Python, Ruby, Tcl, Smalltalk, and most other programming languages...

    : A version available under dual license
    Dual license
    Multi-licensing is the practice of distributing software under two or more different sets of terms and conditions. This may mean multiple different licenses or sets of licenses. Prefixes may be used to indicate the number of licenses used, e.g...

    , both strong copyleft and commercial. Oracle Corporation
    Oracle Corporation
    Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

     has supported and maintained Berkeley DB since 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.)
  • JDBM2: JDBM2 is a fork of JDBM 1.0 which adds various features (such as Map views) and performance enhancements.
  • Tokyo Cabinet: A modern reimplementation of QDBM, also released under the LGPL by Mikio Hirabayashi in 2007.
  • 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.
  • Kyoto Cabinet: A straightforward implementation of DBM, released under the GPL also by Mikio Hirabayashi in 2009.
  • aodbm: An append-only DBM-style database written by Daniel Waterworth.
  • RaptorDB: A NoSQL
    Nosql
    In computing, NoSQL is a broad class of database management systems that differ from the classic model of the relational database management system in some significant ways. These data stores may not require fixed table schemas, usually avoid join operations, and typically scale horizontally...

     engine written in C#.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK