Manpages

名 前

recno − レ コ ー ド 番 号 デ ー タ ベ ー ス へ の ア ク セ ス メ ソ ッ ド

書 式

#include <sys/types.h>
#include <db.h>

説 明

大 事 な 注 意 : こ の ペ ー ジ は 、 バ ー ジ ョ ン 2.1 ま で の glibc が 提 供 す る イ ン タ ー フ ェ ー ス に つ い て 説 明 し て い る 。 バ ー ジ ョ ン 2.2 以 降 の glibc で は 、 も は や こ れ ら の イ ン タ ー フ ェ ー ス は 提 供 さ れ て い な い 。 お そ ら く 、 こ の ペ ー ジ で は な く 、 libdb ラ イ ブ ラ リ が 提 供 す る API を お 探 し な の だ ろ う 。 ル ー チ ン dbopen(3) は デ ー タ ベ ー ス フ ァ イ ル に 対 す る ラ イ ブ ラ リ イ ン タ ー フ ェ ー ス で あ る 。 サ ポ ー ト さ れ て い る フ ァ イ ル フ ォ ー マ ッ ト の 一 つ に 、 レ コ ー ド 番 号 フ ァ イ ル (record number file: recno file) が あ る 。 デ ー タ ベ ー ス へ の ア ク セ ス メ ソ ッ ド に 関 す る 一 般 的 な 記 述 は dbopen(3), に 書 か れ て い る 。 こ の マ ニ ュ ア ル ペ ー ジ で は recno 特 有 の 情 報 に つ い て の み 記 述 す る 。 レ コ ー ド 番 号 デ ー タ 構 造 は 、 フ ラ ッ ト な フ ァ イ ル 形 式 に 格 納 さ れ た 可 変 長 /固 定 長 レ コ ー ド か ら な り 、 論 理 レ コ ー ド 番 号 で ア ク セ ス さ れ る 。 レ コ ー ド 番 号 5 が あ れ ば 、 レ コ ー ド 番 号 1 か ら 4 も 存 在 す る 。 レ コ ー ド 番 号 1 を 削 除 す る と 、 レ コ ー ド 番 号 5 は 4 に 付 け 替 え ら れ 、 カ ー ソ ル も 移 動 す る 。 レ コ ー ド 番 号 1 以 降 の も の は 一 つ 繰 り 上 が る わ け で あ る 。

dbopen(3) で 使 う recno ア ク セ ス メ ソ ッ ド に 特 有 の デ ー タ 構 造 体 は 、 <db.h> イ ン ク ル ー ド フ ァ イ ル で 次 の よ う に 定 義 さ れ て い る 。

typedef struct {
unsigned long flags;
unsigned int cachesize;
unsigned int psize;
int lorder;
size_t reclen;
unsigned char bval;
char *bfname; }
RECNOINFO; こ の 構 造 体 の 要 素 を 以 下 に 示 す 。

flags

flags の 値 は 以 下 の 値 の 論 理 和 で 指 定 さ れ る 。

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<db.h> イ ン ク ル ー ド フ ァ イ ル で 定 義 さ れ て い る 。 こ の 型 は 通 常 、 そ の 実 装 で 利 用 可 能 な 最 大 の 符 号 無 し 整 数 で あ る 。 キ ー の 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 Stonebraker, Heidi Stettner, Joseph Kalash, Antonin Guttman, Nadene Lynn, Memorandum No. UCB/ERL M82/32, May 1982.

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。