hash - ライブラリコールの説明 - Linux コマンド集 一覧表
- 名前
- 書式
- 説明
- エラー
- 関連項目
- バグ
名前
hash - hash データベースへのアクセスメソッド
書式
#include <sys/types.h>
#include <db.h>
説明
ルーチン
dbopen
()はデータベースファイルに対するライブラリインターフェースである。
サポートされているファイルフォーマットのひとつに hash ファイルがある。
データベースへのアクセスメソッドに関する一般的な記述は
dbopen
(3) に書かれている。
このマニュアルページでは hash 特有の情報についてのみ記述する。
hash データ構造は、拡張可能な動的ハッシュスキームである。
dbopen
に渡される hash アクセスメソッドに特有のデータ構造体は、
<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 テーブルバケット (table bucket) のサイズを定義する。
デフォルトは 256 バイトである。
ディスクに置かれるテーブルやデータアイテムが大きいテーブルでは
ページサイズを大きくするほうが良いだろう。
-
ffactor
-
ffactor
は、ユーザが望む hash テーブル中の密度である。
これはそれぞれのバケットに格納できるキーの概数であり、
hash テーブルを拡大・縮小を作用する。
デフォルトは 8 である。
-
nelem
-
nelem
は hash テーブルの最終サイズを大まかに見積もった値である。
この値がセットされていなかったり、あまりに低くセットされていると、
hash テーブルはキーが入ってくるに応じて拡張される。
しかし少しパフォーマンスが (おそらく気付く程度に) 落ちる。
デフォルト値は 1 である。
-
cachesize
-
この値は
あくまで
参考であり、アクセスメソッドはこの値を越えたメモリの
割り当てに成功することもある。
-
hash
-
hash
はユーザー定義の hash 関数である。
全てのデータに対してうまく作用する hash 関数と言うのはないから、
特定のデータセットに対しては組み込みの hash 関数では
パフォーマンスが低いこともあるかもしれない。
ユーザー定義の hash 関数は二つの引数をとらなくてはならない (バイト文字
列へのポインタと、長さ)。
そして hash 値として使われる 32ビットの値を返さなくてはならない。
-
lorder
-
データベースに格納されているメタデータの整数値のバイトオーダー。
この数字は、順序を整数で表したものである。
例えばビッグエンディアンなら、この数値は 4,321 となる。
lorder
が 0 (指定されていない)場合、現在のホスト
で使われている並び順が使われる。
ファイルが既に存在する場合、指定した値は無視されツリーが作られ
た時に指定されていた値が使われる。
ファイルが既に存在している (または O_TRUNC フラグが指定されていない) と、
パラメータ bsize, ffactor, lorder, nelem に指定されたは無視され、
ハッシュが作られた時に使った値が使われる。
hash 関数が指定されると、
hash_open
はデータベースが作られた時に指定されていた
hash 関数と今回指定された hash 関数が同じかどうかを調べ、
同じでない場合には失敗する。
dbm
(3),と
ndbm
(3)に記述されているルーチンへの過去互換を取るためのインターフェイスが
存在する。しかしこれらのインターフェイスは以前のファイルフォー
マットとは互換性がない。
エラー
hash
アクセスメソッドルーチンは、失敗するとライブラリルーチン
dbopen
(3) で指定されているエラーに応じた
errno
をセットする。
関連項目
バグ
バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが
サポートされている。
- Linux Tips 関連記事
- Linux Tips(目次)
- Linux ディストリビューション一覧
- rpm のファイル名にあるi386とかi686とは
- 自分のマシンの情報を調べる
- cron の設定
- ssh の root ログインを禁止する
- ssh を、ユーザ、IPでアクセス制限
- 鍵交換方式によるssh接続
- 鍵交換方式によるssh接続( windowsから )
- 複数ファイル内の文字列を置換して上書き保存する
- あるグループをイニシャルグループとするユーザー一覧出力
- 複数ファイルのファイル名を一括変換する
- 連番ファイルをコマンド一発で作成する
- 中身がランダムなファイルを任意のサイズで作成する
- Linux ユーザーアカウントをロック・アンロックする