D. J. Bernstein
Data structures
cdb

cdbmake プログラムと cdbdump プログラム

     cdbmake f ftmp
cdbmake はその標準入力から一連の符号化されたレコードを読み込み、コンスタント・データベースf に書き出します。

cdbmakef がアトミックに更新されることを保証します。そのため、f を読み込んでいるプログラムは cdbmake が終わるのを待つ必要はありません。 最初にデータベースを ftmp に書き、その後に f の先頭に ftmp を移すということを行っているためです。 ftmp がすでに存在していたら、それは壊されます。 ftmpf があるディレクトリは cdbmake に対して書き込み可能でなければなりません。また同じファイルシステムになければなりません。

cdbmakeftmpf を置き換える前に安全にディスクに書き込まれることを常に保証します。 入力が不正な形式であるあるいは cdbmake がディスクに ftmp を書き込むときに問題が生じたら、cdbmake はメッセージを出し、f を残して終了します。

     cdbdump
cdbdump は標準入力からコンスタント・データベースを読み、標準出力へ cdbmake の形式でその内容を出力します。

レコードの形式

レコードはキーによって索引が付けられます。キーは文字列です。 f はキーから始まる別のプログラムが素早く関係のあるレコードを見つけることができるように構造化されています。 cdbmake は同じキーを持った複数のレコードを許容します。しかしながら、 cdbmake と cdbdump はレコードの順序を維持します。

レコードは改行が後に続く +klen,dlen:key->data のように cdbmake のために符号化されます。 ここで klenkey のバイト数で、dlendata のバイト数です。 データの終りは改行を付加することより示されます。例えば:

     +3,5:one->Hello
     +3,7:two->Goodbye

keydata はコロン、ダッシュ、改行、null を含んだどんな文字を含んでもかまいません。

キーとデータはメモリに収まる必要はありません。 しかし、cdbmake は一レコード毎につきおおよそ16バイトのメモリを必要とします。 データベースは4ギガバイトを越えることはできません。

f は機種間で可搬性があります。


訳:滝澤 隆史
Last modified: Sat Mar 18 09:48:25 2000