# QDBM: Quick Database Manager

Copyright (C) 2000-2003 Mikio Hirabayashi
Last Update: Thu, 20 Nov 2003 22:44:08 +0900

## Overview

QDBM is a library of routines for managing a database. The database is a simple data file containing records, each is a pair of a key and a value. Every key and value is serial bytes with variable length. Both binary data and character string can be used as a key and a value. There is neither concept of data tables nor data types. Records are organized in hash table or B+ tree.

As for database of hash table, each key must be unique within a database, so it is impossible to store two or more records with a key overlaps. The following access methods are provided to the database: storing a record with a key and a value, deleting a record by a key, retrieving a record by a key. Moreover, traversal access to every key are provided, although the order is arbitrary. These access methods are similar to ones of DBM (or its followers: NDBM and GDBM) library defined in the UNIX standard. QDBM is an alternative for DBM because of its higher performance.

As for database of B+ tree, records whose keys are duplicated can be stored. Access methods of storing, deleting, and retrieving are provided as with the database of hash table. Records are stored in order by a comparing function assigned by a user. It is possible to access each record with the cursor in ascending or descending order. According to this mechanism, forward matching search for strings and range search for integers are realized. Moreover, transaction is available in database of B+ tree.

QDBM is written in C, and provided as APIs of C, C++, Java, Perl, and Ruby. QDBM is available on platforms which have API conforming to POSIX. QDBM is a free software licensed under the GNU Lesser General Public License.

## Documents

The following are documents of QDBM. They are contained also in the source package.

- Fundamental Specifications
- Specifications of C++ API
- Specifications of Java API
- Specifications of Perl API
- Specifications of Ruby API
- Specifications of CGI scripts

- History of Enhancement

## Packages

The following are packages of QDBM. The Linux binary package contains APIs for C, C++, and Java. The Windows binary package contains APIs for C and Java, and CGI scripts.

- Latest Source Package (version 1.7.10)
- Latest Binary Package for Linux (version 1.7.10)
- Latest Binary Package for Windows (version 1.7.10)

- Past Versions

## Applications

The following are links to applications of QDBM. If you run or find a project using QDBM, please tell it, and it will added to this list.

- Diqt : Multilingual Dictionary Searher written by Mikio Hirabayashi
- Snatcher : Simple Full-text Search System written by Mikio Hirabayashi
- Harvest : Distributed Search System written by Kang-Jin Lee et al
- Bogofilter : Bayesian Spam Mail Filter written by Eric S. Raymond et al

- QADM : Demonstration Site for the administration CGI of QDBM
- QFTS : Demonstration Site for the full-text search CGI of QDBM

## Brothers

There are many followers of UNIX DBM. Select the best suited one for your products. NDBM is ancient and you should not use it. SDBM is maintained by Apache Project, and GDBM is maintained by GNU Project. They are most popular and time-tested. TDB is maintained by Samba Team. It allows multiple simultaneous writers. CDB is the fastest. It is used in Qmail. Berkeley DB is very multifunctional and ACID compliant. It is used in many commercial products. Finally, QDBM is balanced of performance, functionality, portability, and usability.

- NDBM : New DBM written by BSD
- SDBM : Substitute DBM written by Ozan S. Yigit
- GDBM : GNU Database Manager written by Philip A. Nelson et al
- TDB : Trivial Database written by Andrew Tridgell et al
- CDB : Constant Database written by D. J. Bernstein
- Berkeley DB : written by Sleepycat Software

- Report of Benchmark Test

## Information

QDBM was written by Mikio Hirabayashi. You can contact the author by e-mail to `mikio@users.sourceforge.net'. English and Japanese are okey. Any suggestion or bug report is welcome to the author.

The project page on SourceForge.net is `http://sourceforge.net/projects/qdbm/'.

Update of this project is announced on Freshmeat.net at `http://freshmeat.net/projects/qdbm/'.