# QDBM: Quick Database Manager

Copyright (C) 2000-2007 Mikio Hirabayashi
Last Update: Thu, 26 Oct 2006 15:00:20 +0900
[English/Japanese]

## 概要

QDBMはデータベースを扱うルーチン群のライブラリです。データベースといっても単純なもので、キーと値のペアからなるレコード群を格納したデータファイルです。キーと値は任意の長さを持つ一連のバイト列であり、文字列でもバイナリでも扱うことができます。テーブルやデータ型の概念はありません。レコードはハッシュ表またはB+木で編成されます。

ハッシュ表のデータベースでは、キーはデータベース内で一意であり、キーが重複する複数のレコードを格納することはできません。このデータベースに対しては、キーと値を指定してレコードを格納したり、キーを指定して対応するレコードを削除したり、キーを指定して対応するレコードを検索したりすることができます。また、データベースに格納してある全てのキーを順不同に一つずつ取り出すこともできます。このような操作は、UNIX標準で定義されているDBMライブラリおよびその追従であるNDBMやGDBMに類するものです。QDBMはDBMのより良い代替として利用することができます。

B+木のデータベースでは、キーが重複する複数のレコードを格納することができます。このデータベースに対しては、ハッシュ表のデータベースと同様に、キーを指定してレコードを格納したり取り出したり削除したりすることができます。レコードはユーザが指示した比較関数に基づいて整列されて格納されます。カーソルを用いて各レコードを昇順または降順で参照することができます。この機構によって、文字列の前方一致検索や数値の範囲検索が可能になります。また、B+木のデータベースではトランザクションが利用できます。

QDBMはCで記述され、C、C++、Java、PerlおよびRubyのAPIとして提供されます。QDBMはPOSIX準拠のAPIを備えるプラットフォームで利用できます。QDBMはGNU Lesser General Public Licenseに基づくフリーソフトウェアです。

## 文書

以下の文書をお読みください。ソースパッケージにも同じものが含まれています。

- 基本仕様書
- C++用API仕様書
- Java用API仕様書
- Perl用API仕様書
- Ruby用API仕様書
- CGIスクリプト仕様書
- チュートリアル

## ダウンロード

以下のパッケージをダウンロードしてください。Linux用バイナリパッケージは、CとC++とJavaのAPIと、CGIスクリプトを納めています。Windows用バイナリパッケージは、CとJavaのAPIと、CGIスクリプトを納めています。

- 最新のソースパッケージ（バージョン1.8.77）

- 過去のバージョン
- Linux用バイナリパッケージ（RPM）
- Windows用バイナリパッケージ
- 関連するパッケージ

- FreeBSD用パッケージ
- Solaris用パッケージ
- HP-UX用パッケージ
- RISC OS用パッケージ

## アプリケーション

QDBMのアプリケーションには以下のものがあります。もしあなたのプロジェクトがQDBMを使っているなら、連絡をいただければこのリストに追加いたします。

- Hyper Estraier : 平林幹雄による共同体的全文検索システム
- Estraier : 平林幹雄による個人用全文検索システム
- Diqt : 平林幹雄による多言語辞書検索システム
- RBBS : 平林幹雄によるWeb掲示板システム
- Harvest : Kang-Jin Leeらによる分散情報検索システム
- Bogofilter : Eric S. Raymondらによるベイズ式スパムメールフィルタ
- MQS : Alexandre Dulaunoyによるキュー管理サービス
- Ruby/Odeum : Zed A. Shawによる転置APIのRuby用インターフェイス
- Surfulater : Soft As it Gets Pty社によるWebページスクラップブック
- Mutt-NG : Andreas Krennmairらによるテキスト型メールクライアント
- SMFS : Eugene KurmaninによるSendmail用フィルタシステム
- Dixit : Octavian Procopiucによるルーマニア語辞書検索システム

## 兄弟

UNIX標準のDBMに追従したライブラリはたくさんあります。それぞれ特徴がありますので、あなたの製品にとって都合がいいものを選んでください。NDBMは古いので、もはや使う理由はないでしょう。SDBMはApache Projectで管理され、GDBMはGNU Projectで管理されています。それらは最も人気があり、また数多くテストされているものでしょう。TDBはSamba Teamで管理されており、複数同時の書き込みが可能です。TinyCDBは随時の更新はできませんが、最も高速に動作します。Berkeley DBは非常に多機能で、ACID準拠で、多くの商用製品で使われています。最後に、QDBMは性能と機能と移植性と利便性のバランスがとれた製品です。

- NDBM : BSDによるNew DBM
- SDBM : Ozan S. YigitによるSubstitute DBM
- GDBM : Philip A. NelsonらによるGNU Database Manager
- TDB : Andrew TridgellらによるTrivial Database
- TinyCDB : Michael TokarevによるConstant Database
- Berkeley DB : Sleepycat Software社によるBerkeley DB

- ベンチマークテストのレポート
- Tokyo Cabinet : QDBMの後継製品

## その他の情報

QDBMは平林幹雄が作成しました。作者と連絡をとるには、`mikio@users.sourceforge.net' 宛に電子メールを送ってください。ただし、質問やバグレポートなど、他のユーザと共有できる話題はメーリングリストに送ってください。メーリングリストの参加方法については、`http://lists.sourceforge.net/lists/listinfo/qdbm-users' を参照してください。

SourceForge.netにおけるプロジェクトページは `http://sourceforge.net/projects/qdbm/' にあります。Freshmeatにおける更新情報は `http://freshmeat.net/projects/qdbm/' から参照できます。