X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman3%2Fhash.3;h=2f75395f639ea12992b04a7bb9d95393997babb5;hb=9bab846d3fbabd0a6c37bcac1ec38299cae9683b;hp=7e57551424e2be49866f0d6adbab4cca4cd19869;hpb=633a2252e0be3c867dce264a180a89ce8181d36f;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man3/hash.3 b/release/man3/hash.3 index 7e575514..2f75395f 100644 --- a/release/man3/hash.3 +++ b/release/man3/hash.3 @@ -1,6 +1,7 @@ .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" +.\" %%%LICENSE_START(BSD_4_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: @@ -28,46 +29,39 @@ .\" 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. +.\" %%%LICENSE_END .\" .\" @(#)hash.3 8.6 (Berkeley) 8/18/94 .\" -.\" Japanese Version Copyright (c) 1999 Shouichi Saito -.\" all rights reserved. -.\" Translated Mon Jul 26 14:22:49 JST 1999 -.\" by Shouichi Saito -.\" Proofed Tue Aug 17 1999 by NAKANO Takeo -.\" Updated 2008-02-10, Akihiro MOTOKI , LDP v2.77 +.\"******************************************************************* .\" -.\"WORD: access method ¥¢¥¯¥»¥¹¥á¥½¥Ã¥É -.\"WORD: bucket ¥Ð¥±¥Ã¥È +.\" This file was generated with po4a. Translate the source file. .\" -.TH HASH 3 1994-08-18 "" "Linux Programmer's Manual" +.\"******************************************************************* +.TH HASH 3 2012\-04\-23 "" "Linux Programmer's Manual" .UC 7 -.SH ̾Á° -hash \- hash ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ø¤Î¥¢¥¯¥»¥¹¥á¥½¥Ã¥É -.SH ½ñ¼° +.SH 名前 +hash \- hash データベースへのアクセスメソッド +.SH 書式 .nf -.ft B -#include -#include -.ft R +\fB#include +#include \fP .fi -.SH ÀâÌÀ -¥ë¡¼¥Á¥ó -.BR dbopen (3) -¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë¥é¥¤¥Ö¥é¥ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤¢¤ë¡£ -¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¤Ò¤È¤Ä¤Ë hash ¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¡£ -¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ø¤Î¥¢¥¯¥»¥¹¥á¥½¥Ã¥É¤Ë´Ø¤¹¤ë°ìÈÌŪ¤Êµ­½Ò¤Ï -.BR dbopen (3) -¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¡£ -¤³¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ç¤Ï hash ÆÃÍ­¤Î¾ðÊó¤Ë¤Ä¤¤¤Æ¤Î¤ßµ­½Ò¤¹¤ë¡£ +.SH 説明 +\fI大事な注意\fP: +このページは、バージョン 2.1 までの glibc が提供するインターフェースに +ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの +インターフェースは提供されていない。おそらく、このページではなく、 +\fIlibdb\fP ライブラリが提供する API をお探しなのだろう。 + +ルーチン \fBdbopen\fP(3) はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットのひとつに +hash ファイルがある。 データベースへのアクセスメソッドに関する一般的な記述は \fBdbopen\fP(3) に書かれている。 +このマニュアルページでは hash 特有の情報についてのみ記述する。 .PP -hash ¥Ç¡¼¥¿¹½Â¤¤Ï¡¢³ÈÄ¥²Äǽ¤ÊưŪ¥Ï¥Ã¥·¥å¥¹¥­¡¼¥à¤Ç¤¢¤ë¡£ +hash データ構造は、拡張可能な動的ハッシュスキームである。 .PP -.BR dbopen (3) -¤ËÅϤµ¤ì¤ë hash ¥¢¥¯¥»¥¹¥á¥½¥Ã¥É¤ËÆÃÍ­¤Î¥Ç¡¼¥¿¹½Â¤ÂΤϡ¢ -.I -¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Ç°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£ +\fBdbopen\fP(3) に渡される hash アクセスメソッドに特有のデータ構造体は、 \fI\fP +インクルードファイルで以下のように定義されている。 .in +4n .nf @@ -82,93 +76,56 @@ typedef struct { .fi .in .PP -¤³¤Î¹½Â¤ÂΤÎÍ×ÁǤò°Ê²¼¤Ë¼¨¤¹¡£ -.TP 10 -.I bsize -hash ¥Æ¡¼¥Ö¥ë¥Ð¥±¥Ã¥È (table bucket) ¤Î¥µ¥¤¥º¤òÄêµÁ¤¹¤ë¡£ -¥Ç¥Õ¥©¥ë¥È¤Ï 256 ¥Ð¥¤¥È¤Ç¤¢¤ë¡£ -¥Ç¥£¥¹¥¯¤ËÃÖ¤«¤ì¤ë¥Æ¡¼¥Ö¥ë¤ä¥Ç¡¼¥¿¥¢¥¤¥Æ¥à¤¬Â礭¤¤¥Æ¡¼¥Ö¥ë¤Ç¤Ï -¥Ú¡¼¥¸¥µ¥¤¥º¤òÂ礭¤¯¤¹¤ë¤Û¤¦¤¬Îɤ¤¤À¤í¤¦¡£ -.TP -.I ffactor -¥æ¡¼¥¶¤¬Ë¾¤à hash ¥Æ¡¼¥Ö¥ëÃæ¤ÎÌ©Å٤Ǥ¢¤ë¡£ -¤³¤ì¤Ï¤½¤ì¤¾¤ì¤Î¥Ð¥±¥Ã¥È¤Ë³ÊǼ¤Ç¤­¤ë¥­¡¼¤Î³µ¿ô¤Ç¤¢¤ê¡¢ -hash ¥Æ¡¼¥Ö¥ë¤ò³ÈÂ硦½Ì¾®¤òºîÍѤ¹¤ë¡£ -¥Ç¥Õ¥©¥ë¥È¤Ï 8 ¤Ç¤¢¤ë¡£ -.TP -.I nelem -hash ¥Æ¡¼¥Ö¥ë¤ÎºÇ½ª¥µ¥¤¥º¤òÂç¤Þ¤«¤Ë¸«ÀѤâ¤Ã¤¿ÃͤǤ¢¤ë¡£ -¤³¤ÎÃͤ¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¤ê¡¢¤¢¤Þ¤ê¤ËÄ㤯¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤È¡¢ -hash ¥Æ¡¼¥Ö¥ë¤Ï¥­¡¼¤¬Æþ¤Ã¤Æ¤¯¤ë¤Ë±þ¤¸¤Æ³ÈÄ¥¤µ¤ì¤ë¡£ -¤·¤«¤·¾¯¤·¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬ (¤ª¤½¤é¤¯µ¤ÉÕ¤¯ÄøÅÙ¤Ë) Íî¤Á¤ë¡£ -¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ï 1 ¤Ç¤¢¤ë¡£ -.TP -.I cachesize -¥á¥â¥ê¥­¥ã¥Ã¥·¥å¤ÎºÇÂçÃÍ (¥Ð¥¤¥Èñ°Ì) ¤Î»²¹ÍÃÍ¡£ -¤³¤ÎÃÍ¤Ï -.BR ¤¢¤¯¤Þ¤Ç»²¹Í¤Ç¤¢¤ê ¡¢ -¥¢¥¯¥»¥¹¥á¥½¥Ã¥É¤Ï¤³¤ÎÃͤò±Û¤¨¤¿¥á¥â¥ê¤Î³ä¤êÅö¤Æ¤ËÀ®¸ù¤¹¤ë¤³¤È¤â¤¢¤ë¡£ -.TP -.I hash -¤Ï¥æ¡¼¥¶¡¼ÄêµÁ¤Î hash ´Ø¿ô¤Ç¤¢¤ë¡£ -Á´¤Æ¤Î¥Ç¡¼¥¿¤ËÂФ·¤Æ¤¦¤Þ¤¯ºîÍѤ¹¤ë hash ´Ø¿ô¤È¸À¤¦¤Î¤Ï¤Ê¤¤¤«¤é¡¢ -ÆÃÄê¤Î¥Ç¡¼¥¿¥»¥Ã¥È¤ËÂФ·¤Æ¤ÏÁȤ߹þ¤ß¤Î hash ´Ø¿ô¤Ç¤Ï -¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬Ä㤤¤³¤È¤â¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ -¥æ¡¼¥¶¡¼ÄêµÁ¤Î hash ´Ø¿ô¤ÏÆó¤Ä¤Î°ú¿ô¤ò¤È¤é¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤ (¥Ð¥¤¥Èʸ»ú -Îó¤Ø¤Î¥Ý¥¤¥ó¥¿¤È¡¢Ä¹¤µ)¡£ -¤½¤·¤Æ hash ÃͤȤ·¤Æ»È¤ï¤ì¤ë 32¥Ó¥Ã¥È¤ÎÃͤòÊÖ¤µ¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£ -.TP -.I lorder -¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¥á¥¿¥Ç¡¼¥¿¤ÎÀ°¿ôÃͤΥХ¤¥È¥ª¡¼¥À¡¼¡£ -¤³¤Î¿ô»ú¤Ï¡¢½ç½ø¤òÀ°¿ô¤Çɽ¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£ -Î㤨¤Ð¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Ê¤é¡¢¤³¤Î¿ôÃÍ¤Ï 4,321 ¤È¤Ê¤ë¡£ -.I lorder -¤¬ 0 (»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤)¾ì¹ç¡¢¸½ºß¤Î¥Û¥¹¥È -¤Ç»È¤ï¤ì¤Æ¤¤¤ëʤӽ礬»È¤ï¤ì¤ë¡£ -¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢»ØÄꤷ¤¿ÃͤÏ̵»ë¤µ¤ì¥Ä¥ê¡¼¤¬ºî¤é¤ì -¤¿»þ¤Ë»ØÄꤵ¤ì¤Æ¤¤¤¿Ãͤ¬»È¤ï¤ì¤ë¡£ +この構造体の要素を以下に示す。 +.TP 10 +\fIbsize\fP +hash テーブルバケット (table bucket) のサイズを定義する。 デフォルトは 256 バイトである。 +ディスクに置かれるテーブルやデータアイテムが大きいテーブルでは ページサイズを大きくするほうが良いだろう。 +.TP +\fIffactor\fP +ユーザが望む hash テーブル中の密度である。 これはそれぞれのバケットに格納できるキーの概数であり、 hash テーブルを拡大・縮小を作用する。 +デフォルトは 8 である。 +.TP +\fInelem\fP +hash テーブルの最終サイズを大まかに見積もった値である。 この値がセットされていなかったり、あまりに低くセットされていると、 hash +テーブルはキーが入ってくるに応じて拡張される。 しかし少しパフォーマンスが (おそらく気付く程度に) 落ちる。 デフォルト値は 1 である。 +.TP +\fIcachesize\fP +メモリキャッシュの最大値 (バイト単位) の参考値。 この値は \fBあくまで参考であり\fP、 +アクセスメソッドはこの値を越えたメモリの割り当てに成功することもある。 +.TP +\fIhash\fP +はユーザー定義の hash 関数である。 全てのデータに対してうまく作用する hash 関数と言うのはないから、 特定のデータセットに対しては組み込みの +hash 関数では パフォーマンスが低いこともあるかもしれない。 ユーザー定義の hash 関数は二つの引数をとらなくてはならない (バイト文字 +列へのポインタと、長さ)。 そして hash 値として使われる 32ビットの値を返さなくてはならない。 +.TP +\fIlorder\fP +データベースに格納されているメタデータの整数値のバイトオーダー。 この数字は、順序を整数で表したものである。 例えばビッグエンディアンなら、この数値は +4,321 となる。 \fIlorder\fP が 0 (指定されていない)場合、現在のホスト で使われている並び順が使われる。 +ファイルが既に存在する場合、指定した値は無視されツリーが作られ た時に指定されていた値が使われる。 .PP -.\"NAKANO the tree ¢ª the hash, ¤Ç¤·¤ç¤¦. -¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤Æ¤¤¤ë (¤Þ¤¿¤Ï -.B O_TRUNC -¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤) ¤È¡¢ -.IR bsize , -.IR ffactor , -.IR lorder , -.I nelem -¤Ë»ØÄꤵ¤ì¤¿ÃͤÏ̵»ë¤µ¤ì¡¢ -¥Ï¥Ã¥·¥å¤¬ºî¤é¤ì¤¿»þ¤Ë»È¤Ã¤¿Ãͤ¬»È¤ï¤ì¤ë¡£ +ファイルが既に存在している (または \fBO_TRUNC\fP フラグが指定されていない) と、 \fIbsize\fP, \fIffactor\fP, +\fIlorder\fP, \fInelem\fP に指定された値は無視され、 ハッシュが作られた時に使った値が使われる。 .PP -hash ´Ø¿ô¤¬»ØÄꤵ¤ì¤ë¤È¡¢ -.I hash_open -¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬ºî¤é¤ì¤¿»þ¤Ë»ØÄꤵ¤ì¤Æ¤¤¤¿ -hash ´Ø¿ô¤Èº£²ó»ØÄꤵ¤ì¤¿ hash ´Ø¿ô¤¬Æ±¤¸¤«¤É¤¦¤«¤òÄ´¤Ù¡¢ -Ʊ¤¸¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¼ºÇÔ¤¹¤ë¡£ +hash 関数が指定されると、 \fIhash_open\fP はデータベースが作られた時に指定されていた hash 関数と今回指定された hash +関数が同じかどうかを調べ、 同じでない場合には失敗する。 .PP -.BR dbm (3), -¤È -.BR ndbm (3) -¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë¥ë¡¼¥Á¥ó¤Ø¤Î²áµî¸ß´¹¤ò¼è¤ë¤¿¤á¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤¬ -¸ºß¤¹¤ë¡£¤·¤«¤·¤³¤ì¤é¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï°ÊÁ°¤Î¥Õ¥¡¥¤¥ë¥Õ¥©¡¼ -¥Þ¥Ã¥È¤È¤Ï¸ß´¹À­¤¬¤Ê¤¤¡£ -.SH ¥¨¥é¡¼ -.I hash -¥¢¥¯¥»¥¹¥á¥½¥Ã¥É¥ë¡¼¥Á¥ó¤Ï¡¢¼ºÇÔ¤¹¤ë¤È¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó -.BR dbopen (3) -¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¥¨¥é¡¼¤Ë±þ¤¸¤¿ -.I errno -¤ò¥»¥Ã¥È¤¹¤ë¡£ -.SH ¥Ð¥° -¥Ð¥¤¥È¥ª¡¼¥À¡¼¤È¤·¤Æ¤Ï¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤È¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¤Î¤ß¤¬ -¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£ -.SH ´ØÏ¢¹àÌÜ -.BR btree (3), -.BR dbopen (3), -.BR mpool (3), -.BR recno (3) -.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. +\fBdbm\fP(3), と \fBndbm\fP(3) に記述されているルーチンへの過去互換を取るためのインターフェイスが +存在する。しかしこれらのインターフェイスは以前のファイルフォー マットとは互換性がない。 +.SH エラー +\fIhash\fP アクセスメソッドルーチンは、失敗するとライブラリルーチン \fBdbopen\fP(3) で指定されているエラーに応じた \fIerrno\fP +をセットする。 +.SH バグ +バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。 +.SH 関連項目 +\fBbtree\fP(3), \fBdbopen\fP(3), \fBmpool\fP(3), \fBrecno\fP(3) + +\fIDynamic Hash Tables\fP, Per\-Ake Larson, Communications of the ACM, April +1988. + +\fIA New Hash Package for UNIX\fP, Margo Seltzer, USENIX Proceedings, Winter +1991. +.SH この文書について +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。