This section is based on catpages contributed by Mainichi Communications, Inc. Translated by: MYCOM team Converted by: Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG> Submitted by: Kazuo Horikawa <k-horik@yk.rim.or.jp>
166 lines
5.1 KiB
Groff
166 lines
5.1 KiB
Groff
.\" Copyright (c) 1990, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)hash.3 8.6 (Berkeley) 8/18/94
|
|
.\"
|
|
.TH HASH 3 "August 18, 1994"
|
|
.UC 7
|
|
.SH 名称
|
|
hash \- hash データベース アクセス方式
|
|
.SH 書式
|
|
.nf
|
|
.ft B
|
|
#include <sys/types.h>
|
|
#include <db.h>
|
|
.ft R
|
|
.fi
|
|
.SH 解説
|
|
.I dbopen
|
|
ルーチンは、データベースファイルへのライブラリインタフェースです。
|
|
サポート対象のファイル形式の一つは
|
|
.I hash
|
|
ファイルです。本マニュアルの
|
|
.IR dbopen (3)
|
|
にあるデータベースアクセス方式の一般的な解説は
|
|
に書かれており、
|
|
.I hash
|
|
固有の情報だけを説明しています。
|
|
.PP
|
|
.I hash
|
|
データ構造は拡張可能な動的ハッシュスキーマです。
|
|
.PP
|
|
dbopn に与えられるアクセス方式固有のデータ構造体は
|
|
インクルードファイル <db.h> で以下のように定義されます。
|
|
.sp
|
|
typedef struct {
|
|
.RS
|
|
u_int bsize;
|
|
.br
|
|
u_int ffactor;
|
|
.br
|
|
u_int nelem;
|
|
.br
|
|
u_int cachesize;
|
|
.br
|
|
u_int32_t (*hash)(const void *, size_t);
|
|
.br
|
|
int lorder;
|
|
.RE
|
|
} HASHINFO;
|
|
.PP
|
|
この構造体のフィールドは以下になります。
|
|
.TP
|
|
bsize
|
|
.I bsize
|
|
は、ハッシュ表のバケットサイズを定義し、デフォルト値で 256 バイトです。
|
|
ディスク常駐テーブルと大型データ項目については、
|
|
ページサイズを拡大したほうが望ましいかもしれません。
|
|
.TP
|
|
ffactor
|
|
.I ffactor
|
|
は
|
|
.I hash
|
|
表内の望ましい密度を表示します。
|
|
これは一つのバケット内に累積可能なキー数の概算であり、
|
|
いつハッシュ表の拡大や縮小を行なうべきかを決定します。
|
|
デフォルト値は 8 です。
|
|
.TP
|
|
nelem
|
|
.I nelem
|
|
は
|
|
ハッシュ表の最終サイズの推測値です。
|
|
未設定あるいは低い値に設定されると、わずかな性能劣化が見られる
|
|
かもしれませんが、ハッシュ表はキー入力に応じて円滑に拡張されます。
|
|
デフォルト値は 1 です。
|
|
.TP
|
|
cachesize
|
|
メモリキャッシュの推奨最大バイトサイズです。
|
|
この値は単なる提言であり、このアクセス方式は、
|
|
失敗するよりはメモリを余計に割り当てるでしょう。
|
|
.TP
|
|
hash
|
|
.I hash
|
|
はユーザ定義のハッシュ関数です。
|
|
可能なデータすべてに対して等しく性能の良いハッシュ関数はないため、
|
|
ユーザは、組み込みハッシュ関数が特定データセットに充分な性能が出ないことに
|
|
気がつくことがあるかもしれません。
|
|
ユーザ指定ハッシュ関数は 2 個の引数 (文字列へのポインタと長さ) を取り、
|
|
ハッシュ値として使われる 32 ビット量を返します。
|
|
.TP
|
|
lorder
|
|
保存されたデータベースメタデータ
|
|
内の整数のバイトオーダです。
|
|
数字は整数としての順序を表していなければなりません。
|
|
例えば、ビッグエンディアンの順序は 4,321 になります。
|
|
.I lorder
|
|
が
|
|
0 (順序指定なし) の時は現行のホストのオーダーが使われます。
|
|
ファイルがあらかじめ存在していれば、指定値が無視されて、
|
|
ツリーが構築された時に指定された値が使われます。
|
|
.PP
|
|
ファイルがあらかじめ存在し、(かつ O_TRUNC フラグが指定されてないと) 、
|
|
bsize, ffactor, lorder, nelem の各パラメータに指定された値は無視され、
|
|
ツリーの構築時に指定された値が使われます。
|
|
.PP
|
|
ハッシュ関数が指定されていると、
|
|
.I hash_open
|
|
は指定されたハッシュ関数がデータベース作成時と同じものであるかを判別し、
|
|
異なっていれば open に失敗します。
|
|
.PP
|
|
旧
|
|
.I dbm
|
|
および旧
|
|
.I ndbm
|
|
ルーチンへの下位互換インタフェースが提供されていますが、
|
|
これらのインタフェースは従来のファイルフォーマットとは互換ではありません。
|
|
.SH エラー
|
|
ライブラリルーチン
|
|
.IR dbopen (3)
|
|
で指定されている任意のエラーに対し、
|
|
.I hash
|
|
アクセス方式ルーチンが失敗すると、
|
|
.I errno
|
|
をセットします。
|
|
.SH 関連項目
|
|
.IR btree (3)
|
|
.IR dbopen (3)
|
|
.IR mpool (3)
|
|
.IR recno (3)
|
|
.sp
|
|
.sp
|
|
.IR "Dynamic Hash Tables" ,
|
|
Per-Ake Larson, Communications of the ACM, April 1988.
|
|
.sp
|
|
.IR "A New Hash Package for UNIX" ,
|
|
Margo Seltzer, USENIX Proceedings, Winter 1991.
|
|
.SH バグ
|
|
バイトオーダとして、ビッグエンディアンとリトルエンディアンだけが
|
|
サポートされています。
|