CDB (Constant DataBase) はDaniel Bernsteinによって設計された、インデックス化されたファイル形式です。CDBは特に読み込みアクセスに最適化されており、それぞれのレコードは最大2回のディスクアクセスで読み込めることを保証しています。これは増分更新のサポートをなくすことで実現しています: 単一レコードの挿入や削除はサポートされていません。CDBデータベースは最初から完全に再構築することでのみ変更でき、そのため名前に "constant (不変)" という修飾子がついています。
Postfix CDBデータベースは "cdb:name" のように指定します。ここで、name には ".cdb" 拡張子のないCDBファイル名を指定します (その他の拡張子 ".tmp" が CDBファイルの構築時に一時的に使われます)。CDBデータベースは postmap(1) または postalias(1) コマンドで管理します。DATABASE_README ドキュメントには一般的な Postfixデータベースの情報があります。
CDBサポートはPostfix 2.2以降のリリースで使えます。このドキュメントは CDBサポート付きでPostfixを構築する方法を記述しています。
Postfixは2つのCDBの実装と互換性があります:
Daniel Bernsteinによるオリジナルのcdbライブラリで、http://cr.yp.to/cdb.html から得られます。それと
Michael Tokarevによる tinycdb (バージョン0.5以降)で、http://www.corpit.ru/mjt/tinycdb.html から得られます。
tinycdb の方が若干速く、便利な機能が付いており、使用方法がシンプルなので、 tinycdb の方が好適です。
tinycdbのインストール後にPostfixをビルドするには、次のようなものを使います:
% make tidy % CDB=../../../tinycdb-0.5 % make -f Makefile.init makefiles "CCARGS=-DHAS_CDB -I$CDB" \ "AUXLIBS=$CDB/libcdb.a" % make
代わりにD.J.BバージョンのCDBを使うには以下のようにします:
% make tidy % CDB=../../../cdb-0.75 % make -f Makefile.init makefiles "CCARGS=-DHAS_CDB -I$CDB" \ "AUXLIBS=$CDB/cdb.a $CDB/alloc.a $CDB/buffer.a $CDB/unix.a $CDB/byte.a" % make
cdbサポート付きでPostfixをビルドしたら、リードオンリーの "hash" や "btree"、 "dbm" テーブルを使えるところで "cdb" テーブルが使えます。しかし、"postmap -i" (増分レコード挿入) や "postmap -d" (増分レコード削除) コマンドラインオプションは使えません。同じ理由で、"cdb" マップ形式は verify(8) サービスの永続的アドレス検証キャッシュの保存したり、tlsmgr(8) サービスのTLSセッション情報を保存するのには使えません。