Christopher B. Browne's Home Page

NonRelational Database Systems

Christopher Browne

Table of Contents
1. Variations on DBM
2. Various Keyed ISAM DBMS Systems
3. Object Oriented Databases
4. Database Systems That Don't Fit Other Classifications
5. NoSQL

This page is devoted to information about non-relational database systems, mostly keyed table systems like Unix DBM and ISAM.

1. Variations on DBM

The DBM "hash table" system has long been used in Unix applications. It provides a way of managing data in the form of associative arrays in a reasonably efficient manner.

Commonly available variations include NDBM, the "New" DBM implementation, SDBM, ODBM, and GDBM, the "GNU" implementation. These implementations have provided a simple but effective API resembling the following:

DBM *dbm_open(char *, int, int);

void dbm_close(DBM *);

datum dbm_fetch(DBM *, datum);

datum dbm_firstkey(DBM *);

datum dbm_nextkey(DBM *);

int dbm_delete(DBM *, datum);

int dbm_store(DBM *, datum, datum, int);

The varying implementations differ somewhat in terms of licensing, ability to handle large quantities of data, and efficiency. Many scripting languages provide ways of tying these sorts of hash tables to associative arrays; the language that popularized this was Perl.

The Perl AnyDBM_File documentation page describes some of the similarities and differences between different implementations.

Most modern Unix-like systems include one or more DBM implementations.

Modern enhancements include the following:

Contact me at