HASH(3) FreeBSD ライブラリ関数マニュアル HASH(3)
名称
hash − hash データベース アクセス方式 |
書式
#include <sys/types.h> |
解説
dbopen() ルーチンは、データベースファイルへのライブラリインタフェースで す。サポート対象のファイル形式の一つは hash ファイルです。本マニュアルの dbopen(3) にあるデータベースアクセス方式の一般的な解説はに書かれており、 hash 固有の情報だけを説明しています。 hash データ構造は拡張可能な動的ハッシュスキーマです。 dbopen() に与えられるアクセス方式固有のデータ構造体はインクルードファイル 〈db.h〉 で以下のように定義されます。 typedef struct { |
u_int bsize; |
||
u_int ffactor; |
||
u_int nelem; |
||
u_int cachesize; |
||
u_int32_t (*hash)(const void *, size_t); |
||
int lorder; |
} HASHINFO; この構造体のフィールドは以下になります。 |
bsize
bsize は、 hash 表のバケットサイズを定義し、デフォルト値で 256 バ イトです。ディスク常駐テーブルと大型データ項目については、ページ サイズを拡大したほうが望ましいかもしれません。 ffactor nelem cachesize hash lorder ファイルがあらかじめ存在し、(かつ O_TRUNC フラグが指定されてないと) 、 bsize, ffactor, lorder, nelem の各パラメータに指定された値は無視され、ツ リーの構築時に指定された値が使われます。 hash 関数が指定されていると、 hash_open() は指定された hash 関数がデータ ベース作成時と同じものであるかを判別し、異なっていれば open に失敗しま す。 旧 dbm および旧 ndbm ルーチンへの下位互換インタフェースが提供されています が、これらのインタフェースは従来のファイルフォーマットとは互換ではありま せん。 エラー |
ライブラリルーチン dbopen(3) で指定されている任意のエラーに対し、 hash ア クセス方式ルーチンが失敗すると、 errno をセットします。 |
関連項目
Per-Ake Larson, Dynamic Hash Tables, Communications of the ACM, April 1988. Margo Seltzer, A New Hash Package for UNIX, USENIX Proceedings, Winter 1991.
バグ
バイトオーダとして、ビッグエンディアンとリトルエンディアンだけがサポート されています。 FreeBSD 10.0 August 18, 1994 FreeBSD 10.0 |