RECNO(3) | Linux Programmer's Manual | RECNO(3) |
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;
この構造体の要素を以下に示す。
recno アクセスメソッドで使われるキー/データ対のデータ部分は、 他のアクセスメソッドと同じである。 しかしキーは異なっている。 キーの data フィールドは recno_t 型の、メモリー位置へのポインターでなければならない。 recno_t は <db.h> インクルードファイルで定義されている。 この型は通常、その実装で利用可能な最大の符号無し整数である。 キーの size フィールドはその型のサイズとなる。
recno アクセスメソッドのファイルに関連づけられる メタデータは存在できないから、 デフォルト値 (固定レコード長やセパレータ文字など) に対する変更はファイルを開く毎に明示的に指定しなければならない。
dbopen(3) で指定されたインターフェイスでは、 put インターフェイスを使って新しいレコードを作成するときに、 指定したレコード番号がデータベース中に存在している最大レコード番号より 一つ以上大きいと、 空のレコードが同時にできてしまう。
recno アクセスメソッドルーチンは失敗すると dbopen(3) で指定されているエラーに応じた errno か、 あるいは以下に示す errno をセットする。
バイトオーダーとしてはビッグエンディアンとリトルエンディアンのみが サポートされている。
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 プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。
2017-09-15 | 4.4 Berkeley Distribution |