recnoのヘルプ・マニュアル
日本語 英語
recno --help
man recno
RECNO(3) Linux Programmer’s Manual RECNO(3)
名前
recno - レコード番号データベースへのアクセスメソッド
書式
#include
#include
説明
ルーチン dbopen(3) はデータベースファイルに対するライブラリインターフェ
ースである。サポートされているファイルフォーマットの一つに、レコード 番
号 ファイル (record number file: recno file) がある。データベースへのア
クセスメソッドに関する一般的な記述は dbopen(3), に書かれている。この マ
ニュアルページでは recno 特有の情報についてのみ記述する。
レコード番号データ構造は、フラットなファイル形式に格納された可変長/固定
長レコードからなり、論理レコード番号でアクセスされる。レコード番号 5 が
あれば、レコード番号 1 から 4 も存在する。レコード番号 1 を削除すると、
レコード番号 5 は 4 に付け替えられ、カーソルも移動する。レコード番号 1
以降のものは一つ繰り上がるわけである。
dbopen(3) で使う recno アクセスメソッドに特有のデータ構造体は、
インクルードファイルで次のように定義されている。
typedef struct {
unsigned long flags;
unsigned int cachesize;
unsigned int psize;
int lorder;
size_t reclen;
unsigned char bval;
char *bfname;
} RECNOINFO;
この構造体の要素を以下に示す。
flags flag の値は以下の値のいずれかか、これらの論理和で指定される。
R_FIXEDLEN
レコード長が固定であり、バイト区切りではない。構造体の 要
素 reclen はレコードの長さを指定する。また、要素 bval は
埋め文字 (pad character) を指定する。データベースに入れら
れ たレコードの内 reclen バイトに満たないものでは、残りの
部分に埋め文字が自動的に入る。
R_NOKEY
dbopen(3) で指定されたインターフェイスでは、シーケンシ ャ
ル なレコード取得は呼び出しキーとデータ構造体の両方を埋め
ていく。 R_NOKEY フラグが指定されていると、キー構造体を埋
め るのに cursor ルーチンを必要としない。これを用いれば、
アプリケーションがファイルの終りの方を取得する際に、そ の
途中のレコードを読まなくても済む事になる。
R_SNAPSHOT
このフラグを指定すると、 dbopen(3) の呼び出しの際、オリジ
ナルファイルから変更されていないレコードを読む代わりに 、
ファイルの snapshot を用いる。
cachesize
想定されるメモリキャッシュの最大サイズ (バイト単位)。この値は あ
くまで参考であり、アクセスメソッドはこの値を越えたメモリの割り当
て に成功することもある。 cachesize が 0 (あるいは指定されていな
い) の場合、デフォルトのキャッシュが使われる。
psize recno アクセスメソッドは、自身のレコードのコピーをメモリ内 部 に
btree で保存している。この値は、その btree 中のノードに対して用
いられるページサイズ (バイト単位) である。 psize が 0 (あるい は
指 定されていない) の場合、ファイルシステムの I/O ブロックサイズ
を基にしてページサイズが決められる。詳細は btree(3) を参照。
lorder データベースに格納されているメタデータの整数値のバイトオーダー。
この数字は、順序を整数で表したものである。例えばビッグエンディア
ンなら、この数値は 4,321 となる。 lorder が 0 (指定されていない)
の場合、現在のホストで使われているバイトオーダーが使われる。
reclen 固定レコード長の長さ。
bval 可変レコード長において、レコードの終りを示す区切りバイト (区切り
文字) である。固定レコード長では埋め文字として使われる。値が指定
されていないと、可変レコード長のレコードの終りには改行 ("\n") が
使われる。固定レコード長のレコードは空白 (space) で埋められる。
bfname recno アクセスメソッドは、自身のレコードのコピーをメモリ内 部 で
btree に保存している。 bfname が NULL でない場合、これは btree
ファイル名 (btree ファイルを dbopen(3) する時に指定するファイ ル
名) を指定する。
recno アクセスメソッドで使われるキー/データ対のデータ部分は、他のアクセ
スメソッドと同じである。しかしキーは異なっている。キーの data フィー ル
ド は recno_t 型の、メモリ位置へのポインタでなければならない。 recno_t
は インクルードファイルで定義されている。この型は通常、その実 装
で 利用可能な最大の符号無し整数である。キーの size フィールドはその型の
サイズとなる。
recno アクセスメソッドのファイルに関連づけられるメタデータは存在でき な
い から、デフォルト値 (固定レコード長やセパレータ文字など) に対する変更
はファイルを開く毎に明示的に指定しなければならない。
dbopen(3) で指定されたインターフェイスでは、 put インターフェイスを使っ
て 新しいレコードを作成するときに、指定したレコード番号がデータベース中
に存在している最大レコード番号より一つ以上大きいと、空のレコードが同 時
にできてしまう。
エラー
recno アクセスメソッドルーチンは失敗すると dbopen(3) で指定されているエ
ラーに応じた errno か、あるいは以下に示す errno をセットする。
EINVAL 固定長データベースにレコードを追加するとき、データが長すぎた。
バグ
バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみがサ ポ
ートされている。
関連項目
btree(3), dbopen(3), hash(3), mpool(3)
Document Processing in a Relational Database System, Michael Stone-
braker, Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn,
Memorandum No. UCB/ERL M82/32, May 1982.
4.4 Berkeley Distribution 1994-08-18 RECNO(3)