# DBM (Datenbank)

DBM war der erste Vertreter einfacher, dateibasierter Datenbankmanagementsysteme. DBM wurde ursprünglich von Ken Thompson entwickelt und im Jahr 1979 von AT&T veröffentlicht. Der Name ist ein Akronym für database manager.
DBM speichert beliebige Daten in sogenannten Buckets mit fester Größe, versehen mit einem Schlüssel, mit dessen Hilfe die Daten unter Verwendung einer Hashfunktion in der Datenbank wieder auffindbar sind.
Der Hashing-Algorithmus verwendet eine Form des erweiterbaren Hashings, bei dem die mögliche Anzahl verfügbarer Schlüssel erweitert wird, sobald neue Buckets hinzugefügt werden, was sich in einer Einsparung von Speicherplatz auswirkt.
Besonderes Merkmal von DBM und Derivaten von DBM, die allesamt als nicht-relationale Datenbanken gelten, ist die Einsparung von Rechen- und Wartezeiten für den Verbindungsaufbau zum Datenbankserver und die Vorbereitung von Datenbankabfragen. Der sich daraus ergebende Nachteil ist, dass immer nur ein Prozess auf die Datenbank zugreifen kann.

## Nachfolger

DBM hat eine ganze Reihe von Nachfolgern, die auf dem gleichen Prinzip aufbauen:

### Ndbm

    Die 1986 in Berkeley entwickelte Datenbank ndbm (New Database Manager). Sie unterstützte die Verwendung mehrerer Datenbanken zur gleichen Zeit.

### Sdbm

    Aufgrund von der Lizenzbedingungen wurde Ndbm aus einigen UNIX-Versionen entfernt und seit 1987 durch den Public-Domain-Klon Sdbm von Ozan Yigit ersetzt.

### gdbm

    Der GNU Database Manager (gdbm), eine weitere Open-Source-Variante, wurde von Philip A. Nelson für das GNU-Projekt entwickelt. Er erweiterte die Funktionalität von DBM um die Verwendung von Datenpaketen beliebiger Länge. Später wurden weitere Funktionen hinzugefügt, wie den Schutz der Datenbank vor Beschädigung bei Ausfällen.

### Tdbm

    Die Tdbm (Transactional Database Manager) bietet außerdem Transaktionen.

### TDB

    Diese Datenbank wurde von dem Samba-Team entwickelt und unter der GPL-Lizenz als Bestandteil des Samba-Pakets verbreitet. Zitat von der SourceForge Webseite: 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

    Der Quick Database Manager beansprucht für sich, schneller zu sein. Er wurde von Mikio Hirabayashi im Jahr 2000 ebenfalls unter GPL veröffentlicht.

### Berkeley DB

    Die Berkeley DB ist eine Variante, die unter zwei Lizenzen veröffentlicht wurde und mit einer Copyleft- oder einer kommerziellen Lizenz einsetzbar ist. Ursprünglich von Sleepycat entwickelt, wird sie seit Februar 2006 von Oracle gewartet und vertrieben.

### MapDB

    MapDB (ehem. JDBM) ist ein transaktionales Datenbankmanagementsystem für Java.

### Tkrzw

    Ist eine moderne Re-Implementierung der QDBM vom selben Autor. Nachfolger von Tokyo Cabinet und Kyoto Cabinet.

### cdb

    Die Constant Database wurde von Daniel J. Bernstein entwickelt und unterscheidet sich von den anderen Datenbanksystemen dadurch, dass Datenbanken nach dem Erstellen nur noch gelesen, aber nicht mehr verändert werden können.

### VSDB

    Eine Implementierung einer DBM-ähnlichen Datenbank von John Meacham, welche unter Verwendung atomarer Dateisystemoperationen die volle ACID-Semantik unterstützt.

### LMDB

    Diese DBM-ähnliche Datenbank wurde von Howard Chu für das OpenLDAP-Projekt entwickelt. Sie unterstützt die ACID-Semantik und wurde auf das schnelle Lesen von Daten optimiert.