OSDN Git Service

(split) LDP: Update release pages.
[linuxjm/LDP_man-pages.git] / release / man3 / recno.3
1 .\" Copyright (c) 1990, 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\"    must display the following acknowledgement:
14 .\"     This product includes software developed by the University of
15 .\"     California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"     @(#)recno.3     8.5 (Berkeley) 8/18/94
33 .\"
34 .\"*******************************************************************
35 .\"
36 .\" This file was generated with po4a. Translate the source file.
37 .\"
38 .\"*******************************************************************
39 .TH RECNO 3 2012\-04\-23 "" "Linux Programmer's Manual"
40 .UC 7
41 .SH 名前
42 recno \- レコード番号データベースへのアクセスメソッド
43 .SH 書式
44 .nf
45 \fB#include <sys/types.h>
46 #include <db.h>\fP
47 .fi
48 .SH 説明
49 \fI大事な注意\fP:
50 このページは、バージョン 2.1 までの glibc が提供するインターフェースに
51 ついて説明している。バージョン 2.2 以降の glibc では、もはやこれらの
52 インターフェースは提供されていない。おそらく、このページではなく、
53 \fIlibdb\fP ライブラリが提供する API をお探しなのだろう。
54
55 ルーチン \fBdbopen\fP(3)  はデータベースファイルに対するライブラリインターフェースである。 サポートされているファイルフォーマットの一つに、
56 レコード番号ファイル (record number file: recno file) がある。 データベースへのアクセスメソッドに関する一般的な記述は
57 \fBdbopen\fP(3), に書かれている。 このマニュアルページでは recno 特有の情報についてのみ記述する。
58 .PP
59 レコード番号データ構造は、フラットなファイル形式に格納された 可変長/固定長レコードからなり、論理レコード番号でアクセスされる。 レコード番号 5
60 があれば、レコード番号 1 から 4 も存在する。 レコード番号 1 を削除すると、レコード番号 5 は 4 に付け替えられ、
61 カーソルも移動する。レコード番号 1 以降のものは一つ繰り上がるわけである。
62 .PP
63 \fBdbopen\fP(3)  で使う recno アクセスメソッドに特有のデータ構造体は、 \fI<db.h>\fP
64 インクルードファイルで次のように定義されている。
65 .PP
66 .in +4n
67 .nf
68 typedef struct {
69     unsigned long flags;
70     unsigned int  cachesize;
71     unsigned int  psize;
72     int           lorder;
73     size_t        reclen;
74     unsigned char bval;
75     char         *bfname;
76 } RECNOINFO;
77 .fi
78 .in
79 .PP
80 この構造体の要素を以下に示す。
81 .TP 
82 flags
83 \fIflags\fP の値は以下の値の論理和で指定される。
84 .RS
85 .TP 
86 \fBR_FIXEDLEN\fP
87 レコード長が固定であり、バイト区切りではない。 構造体の要素 \fIreclen\fP はレコードの長さを指定する。また、要素 \fIbval\fP は埋め文字
88 (pad character) を指定する。 データベースに入れられたレコードの内 \fIreclen\fP
89 バイトに満たないものでは、残りの部分に埋め文字が自動的に入る。
90 .TP 
91 \fBR_NOKEY\fP
92 \fBdbopen\fP(3)  で指定されたインターフェイスでは、シーケンシャルなレコード取得は 呼び出しキーとデータ構造体の両方を埋めていく。
93 \fBR_NOKEY\fP フラグが指定されていると、キー構造体を埋めるのに \fIcursor\fP ルーチンを必要としない。
94 これを用いれば、アプリケーションがファイルの終りの方を取得する際に、 その途中のレコードを読まなくても済む事になる。
95 .TP 
96 \fBR_SNAPSHOT\fP
97 このフラグを指定すると、 \fBdbopen\fP(3)  の呼び出しの際、 オリジナルファイルから変更されていないレコードを読む代わりに、 ファイルの
98 snapshot を用いる。
99 .RE
100 .TP 
101 \fIcachesize\fP
102 想定されるメモリキャッシュの最大サイズ (バイト単位)。 この値は \fBあくまで\fP 参考であり、アクセスメソッドはこの値を越えたメモリの
103 割り当てに成功することもある。 \fIcachesize\fP が 0 (あるいは指定されていない) の場合、デフォルトのキャッシュが使われる。
104 .TP 
105 \fIpsize\fP
106 recno アクセスメソッドは、自身のレコードのコピーをメモリ内部に btree で保存している。 この値は、その btree
107 中のノードに対して用いられる ページサイズ (バイト単位) である。 \fIpsize\fP が 0 (あるいは指定されていない) の場合、
108 ファイルシステムの I/O ブロックサイズを基にして ページサイズが決められる。 詳細は \fBbtree\fP(3)  を参照。
109 .TP 
110 \fIlorder\fP
111 データベースに格納されているメタデータの整数値のバイトオーダー。 この数字は、順序を整数で表したものである。 例えばビッグエンディアンなら、この数値は
112 4,321 となる。 \fIlorder\fP が 0 (指定されていない) の場合、現在のホスト で使われているバイトオーダーが使われる。
113 .TP 
114 \fIreclen\fP
115 固定レコード長の長さ。
116 .TP 
117 \fIbval\fP
118 可変レコード長において、 レコードの終りを示す区切りバイト (区切り文字) である。 固定レコード長では埋め文字として使われる。
119 値が指定されていないと、 可変レコード長のレコードの終りには改行 ("\en") が使われる。 固定レコード長のレコードは空白 (space)
120 で埋められる。
121 .TP 
122 \fIbfname\fP
123 recno アクセスメソッドは、 自身のレコードのコピーをメモリ内部で btree に保存している。 \fIbfname\fP が NULL
124 でない場合、これは btree ファイル名 (btree ファイルを \fBdbopen\fP(3)  する時に指定するファイル名) を指定する。
125 .PP
126 \fIrecno\fP アクセスメソッドで使われるキー/データ対のデータ部分は、 他のアクセスメソッドと同じである。 しかしキーは異なっている。 キーの
127 \fIdata\fP フィールドは \fIrecno_t\fP 型の、メモリ位置へのポインタでなければならない。 \fIrecno_t\fP は
128 \fI<db.h>\fP インクルードファイルで定義されている。 この型は通常、その実装で利用可能な最大の符号無し整数である。 キーの
129 \fIsize\fP フィールドはその型のサイズとなる。
130 .PP
131 recno アクセスメソッドのファイルに関連づけられる メタデータは存在できないから、 デフォルト値 (固定レコード長やセパレータ文字など)
132 に対する変更はファイルを開く毎に明示的に指定しなければならない。
133 .PP
134 \fBdbopen\fP(3)  で指定されたインターフェイスでは、 \fIput\fP インターフェイスを使って新しいレコードを作成するときに、
135 指定したレコード番号がデータベース中に存在している最大レコード番号より 一つ以上大きいと、 空のレコードが同時にできてしまう。
136 .SH エラー
137 \fIrecno\fP アクセスメソッドルーチンは失敗すると \fBdbopen\fP(3)  で指定されているエラーに応じた \fIerrno\fP か、
138 あるいは以下に示す \fIerrno\fP をセットする。
139 .TP 
140 \fBEINVAL\fP
141 固定長データベースにレコードを追加するとき、データが長すぎた。
142 .SH バグ
143 バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。
144 .SH 関連項目
145 \fBbtree\fP(3), \fBdbopen\fP(3), \fBhash\fP(3), \fBmpool\fP(3)
146 .sp
147 \fIDocument Processing in a Relational Database System\fP, Michael Stonebraker,
148 Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum
149 No. UCB/ERL M82/32, May 1982.
150 .SH この文書について
151 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.41 の一部
152 である。プロジェクトの説明とバグ報告に関する情報は
153 http://www.kernel.org/doc/man\-pages/ に書かれている。