This section is based on catpages contributed by Mainichi Communications, Inc. Translated by: MYCOM team Converted by: Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG> Submitted by: Kazuo Horikawa <k-horik@yk.rim.or.jp>
206 lines
6.7 KiB
Groff
206 lines
6.7 KiB
Groff
.\" Copyright (c) 1990, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" 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.
|
|
.\"
|
|
.\" @(#)recno.3 8.5 (Berkeley) 8/18/94
|
|
.\"
|
|
.TH RECNO 3 "August 18, 1994"
|
|
.UC 7
|
|
.SH 名称
|
|
recno \- レコード番号データベースへのアクセス手法
|
|
.SH 書式
|
|
.nf
|
|
.ft B
|
|
#include <sys/types.h>
|
|
#include <db.h>
|
|
.ft R
|
|
.fi
|
|
.SH 解説
|
|
.I dbopen
|
|
ルーチンは、データベースファイルのライブラリインタフェース
|
|
ですが、そこでサポートされているファイルフォーマットの 1 つに、
|
|
レコード番号ファイルがあります。データベースアクセス手法の一般事項については、
|
|
.IR dbopen (3)
|
|
を参照してください。このマニュアルページでは、recno の固有事項について
|
|
説明します。
|
|
.PP
|
|
レコード番号データ構造は、フラットファイルフォーマットで保存された、
|
|
可変長あるいは固定長のレコードで、論理レコード番号でアクセスされます。
|
|
レコード番号 5 が存在するということは、レコード 1 からレコード 4 が
|
|
存在することになります。レコード番号 1 を削除すると、レコード番号 5 は
|
|
レコード番号 4 になり、レコード番号 1 の後ろを指していたカーソルは、
|
|
1 レコード下にシフトします。
|
|
.PP
|
|
.I dbopen
|
|
で提供される recno へのアクセス手法に固有なデータ構造は、
|
|
<db.h> インクルードファイルで以下のように定義されています。
|
|
.PP
|
|
typedef struct {
|
|
.RS
|
|
u_long flags;
|
|
.br
|
|
u_int cachesize;
|
|
.br
|
|
u_int psize;
|
|
.br
|
|
int lorder;
|
|
.br
|
|
size_t reclen;
|
|
.br
|
|
u_char bval;
|
|
.br
|
|
char *bfname;
|
|
.RE
|
|
} RECNOINFO;
|
|
.PP
|
|
この構造体のエレメントは、以下のように定義されます。
|
|
.TP
|
|
flags
|
|
フラグ値は、以下の値の
|
|
.IR OR (論理和)
|
|
を取ることで指定されます。
|
|
.RS
|
|
.TP
|
|
R_FIXEDLEN
|
|
レコードは固定長で、バイトで区切られていません。
|
|
構造体のエレメント
|
|
.I reclen
|
|
がレコードの長さを指定し、構造体のエレメント
|
|
.I bval
|
|
がパッドキャラクタとして使用されます。データベースに挿入された
|
|
レコードは、
|
|
.I reclen
|
|
バイトより小さい場合、自動的にパッドされます。
|
|
.TP
|
|
R_NOKEY
|
|
.I dbopen
|
|
が指定するインタフェースでは、
|
|
シーケンシャルレコード検索で、呼び出し側のキーとデータ構造の両方にデータが
|
|
入ります。R_NOKEY フラグを指定すると、
|
|
.I cursor
|
|
ルーチンがなくてもキー構造に
|
|
データが入ります。これにより、アプリケーションは、中間に存在するレコード
|
|
すべてを読み込まずに、ファイルの最後のレコードを取り出せます。
|
|
.TP
|
|
R_SNAPSHOT
|
|
このフラグは、修正されていないレコードを
|
|
オリジナルファイルから読み込む代わりに、
|
|
.I dbopen
|
|
が呼び出された場合にファイル
|
|
のスナップショットを取ることを要求します。
|
|
.RE
|
|
.TP
|
|
cachesize
|
|
メモリキャッシュの最大サイズ ( バイト単位 ) です。この値は
|
|
.B 参考程度のもの
|
|
で、アクセス手法はエラーにならずにこれ以上のメモリを割り
|
|
振ります。
|
|
.I cachesize
|
|
を 0 にすると ( サイズを指定しないと ) 、デフォルトの
|
|
キャッシュが使用されます。
|
|
.TP
|
|
psize
|
|
recno へのアクセス手法は、レコードのメモリのコピーを btree に
|
|
保存します。
|
|
この値は、そのツリーのノードで使用されるページのサイズ ( バイト単位 ) です。
|
|
.I psize
|
|
が 0 である場合は ( ページサイズが指定されていない場合は ) 、
|
|
基礎となるファイルシステムの I/O ブロックサイズに従って
|
|
ページサイズが選択されます。詳細については、
|
|
.IR btree(3)
|
|
を参照してください。
|
|
.TP
|
|
lorder
|
|
保存されているデータベースメタデータの整数のバイトオーダ
|
|
です。整数のオーダを数値で表現する必要があります。たとえば
|
|
ビッグエンディアンのばバイトオーダは、4321 の順番になります。
|
|
.I lorder
|
|
が 0 である場合は、( オーダが指定されていない場合は ) 、
|
|
現行ホストのオーダが使用されます。
|
|
.TP
|
|
reclen
|
|
固定長レコードの長さです。
|
|
.TP
|
|
bval
|
|
可変長レコードの場合は、レコードの終わりをマークする区切り
|
|
バイトで、固定長レコードの場合は、パッドキャラクタです。値を指定しないと、
|
|
可変長レコードの最後は改行 ( ``\en'') でマークされ、
|
|
固定長レコードはスペースでパッドされます。
|
|
.TP
|
|
bfname
|
|
recno アクセス手法は、レコードのメモリのコピーを btree に
|
|
保存します。NULL 以外の bfname は、btree ファイルの dbopen の
|
|
ファイル名として指定されたかのように、btree ファイルの名前を指定します。
|
|
.PP
|
|
recno へのアクセス手法で使用するキーとデータのペアのデータ部分は、その
|
|
他のアクセス手法と同じですが、キーは異なります。キーの
|
|
.I data
|
|
フィールドは、<db.h>インクルードファイルで定義された、タイプ
|
|
.IR recno_t
|
|
のメモリ位置を指す
|
|
ポインタでなければなりません。通常の場合、このタイプは、システムで
|
|
使用できる最大の符号なし整数タイプです。キーの
|
|
.I size
|
|
フィールドは、そのタイプのサイズである必要があります。
|
|
.PP
|
|
基礎となる recno アクセス手法ファイルでは、メタデータを
|
|
関連付けられないので、デフォルト値に対する変更内容 ( たとえばレコードの
|
|
固定長やバイト区切り値 ) は、ファイルを開くたびに明確に指定する
|
|
必要があります。
|
|
.PP
|
|
.IR dbopen
|
|
が指定するインタフェースでは、
|
|
.I put
|
|
インタフェースを使用して
|
|
新しいレコードを作成すると、レコード番号が、現在のデータベースの最大
|
|
レコードより 1 以上大きい場合、複数の空のレコードが作成されます。
|
|
.SH エラー
|
|
.I recno
|
|
アクセス手法ルーチンがエラーになると、ライブラリルーチン
|
|
.IR dbopen (3)
|
|
に指定されたエラーか以下のエラーに
|
|
.I errno
|
|
が設定されます。
|
|
.TP
|
|
[EINVAL]
|
|
固定長データベースに、大きすぎるレコードを
|
|
追加しようとしました。
|
|
.SH 関連項目
|
|
.IR btree(3) ,
|
|
.IR dbopen(3) ,
|
|
.IR hash(3) ,
|
|
.IR mpool(3)
|
|
.sp
|
|
.IR "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.
|
|
.SH バグ
|
|
ビッグエンディアンのバイトオーダとリトルエンディアンのバイトオーダのみ
|
|
がサポートされています。
|