DJB CDB (定数データベース) が 256 個のハッシュテーブルを使用するように設計されたのはなぜですか?
より大きな 252 * 256 ハッシュテーブルを 1 つにしないのはなぜですか?
スペースを節約するためだけですか、それとも他の理由がありますか?
DJB CDB (定数データベース) が 256 個のハッシュテーブルを使用するように設計されたのはなぜですか?
より大きな 252 * 256 ハッシュテーブルを 1 つにしないのはなぜですか?
スペースを節約するためだけですか、それとも他の理由がありますか?
DJB CDB は 2 つのレベルのハッシュ テーブルを使用します。最初のテーブルは、ファイルの先頭に固定サイズ 2K です。2 番目のテーブル セットはファイルの末尾にあり、データが cdb にストリーミングされるときにメモリに構築されます。すべてのデータが cdb にストリーミングされると、ハッシュ テーブルの 2 番目のセットがディスクにストリーミングされます。次に、最初のテーブル (ファイルの先頭にある) に、2 番目のセットの各テーブルへのオフセットが入力されます。
つまり、マルチレベル ハッシュ テーブルにより、cdb 作成の最後にファイルの最初の 2K を書き込むという単純な例外を除いて、cdb のストリーミング作成が可能になります。
cdb へのアクセスは高速で、最初のテーブル (ファイルの先頭で 2K) をヒットして、データの場所を提供する cdb ファイルの末尾にある 2 番目のテーブル (テーブルの 2 番目のセットの中) のオフセットを見つけます。 cdbで。
詳細については、DJB の由緒ある cdb を書き直したhttps://github.com/gstrauss/mcdb/の NOTES を参照してください。mcdb は cdb よりも高速であり、4 GB の cdb 制限をなくすなどの利点があります。