doc/ja_JP.eucJP/man/man3/dbopen.3
Kazuo Horikawa 6a00dc5ed2 man3 update to 4.5-RELEASE base done by jpman project <man-jp@jp.FreeBSD.org>
Submitted by:	Yuko Sasaki <yuko@veltec.co.jp>
2002-05-18 07:12:57 +00:00

521 lines
14 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.
.\"
.\" @(#)dbopen.3 8.5 (Berkeley) 1/2/94
.\" %FreeBSD: src/lib/libc/db/man/dbopen.3,v 1.3.2.2 2001/12/14 18:33:49 ru Exp %
.\" $FreeBSD$
.\"
.Dd January 2, 1994
.Dt DBOPEN 3
.Os
.Sh ̾¾Î
.Nm dbopen
.Nd ¥Ç¡¼¥¿¥Ù¡¼¥¹¥¢¥¯¥»¥¹Êý¼°
.Sh ½ñ¼°
.In sys/types.h
.In limits.h
.In db.h
.Ft DB *
.Fn dbopen "const char *file" "int flags" "int mode" "DBTYPE type" "const void *openinfo"
.Sh ²òÀâ
.Fn dbopen
¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤Ø¤Î¥é¥¤¥Ö¥é¥ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£
¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢
btree
·Á¼°¡¢¥Ï¥Ã¥·¥å·Á¼°¡¢UNIX ¥Õ¥¡¥¤¥ë»Ø¸þ·Á¼°¤Ç¤¹¡£
btree
¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢¥½¡¼¥ÈºÑ¤ß¤Î¥Ð¥é¥ó¥¹¤Î¤È¤ì¤¿
¥Ä¥ê¡¼¹½Â¤¤Îɽ¸½¤Ç¤¹¡£¥Ï¥Ã¥·¥å¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢³ÈÄ¥²Äǽ¤ÇưŪ¤Ê
¥Ï¥Ã¥·¥å¥¹¥­¡¼¥Þ¤Ç¤¹¡£¥Õ¥é¥Ã¥È¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¢¸ÇÄêĹ¤Þ¤¿¤Ï²ÄÊÑĹ
¥ì¥³¡¼¥É¤«¤é¤Ê¤ë¥Ð¥¤¥È¥¹¥È¥ê¡¼¥à¥Õ¥¡¥¤¥ë¤Ç¤¹¡£¥Õ¥©¡¼¥Þ¥Ã¥È¤ª¤è¤Ó
¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¸ÇÍ­¤Î¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ë
¾Ü¤·¤¯½Ò¤Ù¤é¤ì¤Æ¤¤¤Þ¤¹¡£
.Xr btree 3 ,
.Xr hash 3 ,
.Xr recno 3
¤Ç¤¹¡£
.Pp
.Fn dbopen
¤Ï¡¢ÆÉ¤ß¹þ¤ß¤Þ¤¿¤Ï½ñ¤­¹þ¤ßÍѤË
.Fa file
¤ò¥ª¡¼¥×¥ó¤·¤Þ¤¹¡£¥Ç¥£¥¹¥¯¾å¤ËÊÝ»ý¤¹¤ëɬÍפΤʤ¤¥Õ¥¡¥¤¥ë¤Ï¡¢
¥Õ¥¡¥¤¥ë¥Ñ¥é¥á¡¼¥¿¤ò
.Dv NULL
¤ËÀßÄꤹ¤ë¤³¤È¤ÇºîÀ®¤Ç¤­¤Þ¤¹¡£
.Pp
°ú¿ô
.Fa flags
¤È°ú¿ô
.Fa mode
¤Ï¡¢
.Xr open 2
¤Ç»ØÄꤵ¤ì¤â¤Î¤ÈƱ¤¸¤Ç¤¹¡£¤·¤«¤·¡¢
.Dv O_CREAT , O_EXCL , O_EXLOCK , O_NONBLOCK ,
.Dv O_RDONLY , O_RDWR , O_SHLOCK ,
.Dv O_TRUNC
¤Î³Æ¥Õ¥é¥°¤À¤±¤Ë°ÕÌ£¤¬¤¢¤ê¤Þ¤¹ (¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤Ï
.Dv O_WRONLY
¤Ç¤Ï
¥ª¡¼¥×¥ó¤Ç¤­¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤)¡£
.\"Three additional options may be specified by
.\".Em or Ns 'ing
.\"them into the
.\".Fa flags
.\"argument.
.\".Bl -tag -width indent
.\".It Dv DB_LOCK
.\"Do the necessary locking in the database to support concurrent access.
.\"If concurrent access isn't needed or the database is read-only this
.\"flag should not be set, as it tends to have an associated performance
.\"penalty.
.\".It Dv DB_SHMEM
.\"Place the underlying memory pool used by the database in shared
.\"memory.
.\"Necessary for concurrent access.
.\".It Dv DB_TXN
.\"Support transactions in the database.
.\"The
.\".Dv DB_LOCK
.\"and
.\".Dv DB_SHMEM
.\"flags must be set as well.
.\".El
.Pp
°ú¿ô
.Fa type
¤Ï¡¢¥¿¥¤¥×
.Ft DBTYPE
(¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë
.Aq Pa db.h
¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹)
¤Ç¤¢¤ê¡¢
.Dv DB_BTREE ,
.Dv DB_HASH ,
.Dv DB_RECNO
¤òÀßÄê¤Ç¤­¤Þ¤¹¡£
.Pp
°ú¿ô
.Fa openinfo
¤Ï¡¢¥¢¥¯¥»¥¹Êý¼°¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ËÀâÌÀ¤·¤Æ¤¢¤ë¤è¤¦¤Ë¡¢
¥¢¥¯¥»¥¹Êý¼°¤Ë¸ÇÍ­¤Î¹½Â¤¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¤Ç¤¹¡£
.Fa openinfo
¤¬
.Dv NULL
¤Î¾ì¹ç¡¢³Æ¥¢¥¯¥»¥¹Êý¼°¤Ï¡¢¥·¥¹¥Æ¥à¤È¥¢¥¯¥»¥¹Êý¼°¤Ë
ŬÀڤʥǥե©¥ë¥È¤ò»ÈÍѤ·¤Þ¤¹¡£
.Pp
.Fn dbopen
¤Ï¡¢½èÍý¤¬À®¸ù¤¹¤ë¤È
.Ft DB
¹½Â¤ÂΤò»Ø¤¹¥Ý¥¤¥ó¥¿¤òÊÖ¤·¡¢
¥¨¥é¡¼¤Î¾ì¹ç¤Ë¤Ï¥Ì¥ë¤òÊÖ¤·¤Þ¤¹¡£
.Ft DB
¹½Â¤ÂΤϡ¢¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë
.Aq Pa db.h
Æâ¤ËÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢
¾¯¤Ê¤¯¤È¤â¼¡¤Î¥Õ¥£¡¼¥ë¥É¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
.Bd -literal
typedef struct {
DBTYPE type;
int (*close)(const DB *db);
int (*del)(const DB *db, const DBT *key, u_int flags);
int (*fd)(const DB *db);
int (*get)(const DB *db, DBT *key, DBT *data, u_int flags);
int (*put)(const DB *db, DBT *key, const DBT *data,
u_int flags);
int (*sync)(const DB *db, u_int flags);
int (*seq)(const DB *db, DBT *key, DBT *data, u_int flags);
} DB;
.Ed
.Pp
¤³¤ì¤é¤ÎÍ×ÁǤϡ¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥¿¥¤¥×¤È³Æ¼ï¤Î¥¢¥¯¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ë
´Ø¿ô¤Î¥»¥Ã¥È¤òµ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢
.Fn dbopen
¤Ë¤è¤Ã¤ÆÊÖ¤µ¤ì¤¿¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤ò°ú¿ô¤Ë¼è¤ê¡¢
»þ¡¹¥­¡¼ / ¥Ç¡¼¥¿¹½Â¤¤È¥Õ¥é¥°Ãͤò»Ø¤¹ 1 ¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¥Ý¥¤¥ó¥¿¤ò
¼è¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£
.Bl -tag -width indent
.It Va type
´ðËÜ¥¢¥¯¥»¥¹Êý¼° (¤ª¤è¤Ó¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È) ¤Î¥¿¥¤¥×¡£
.It Va close
¥­¥ã¥Ã¥·¥å¤µ¤ì¤¿¾ðÊó¤ò¥Ç¥£¥¹¥¯¤Ë¥Õ¥é¥Ã¥·¥å¤·¡¢³ä¤ê¿¶¤é¤ì¤¿¥ê¥½¡¼¥¹¤ò
²òÊü¤·¡¢´ð¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë (1 ¤Ä¤Þ¤¿¤ÏÊ£¿ô) ¤òÊĤ¸¤ë¥ë¡¼¥Á¥ó¤ò»Ø¤¹
¥Ý¥¤¥ó¥¿¡£¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤϥá¥â¥ê¤Ë¥­¥ã¥Ã¥·¥å¤µ¤ì¤ë¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¤ò
.Va close
´Ø¿ô¤Þ¤¿¤Ï
.Va sync
´Ø¿ô¤Ç¥Õ¥¡¥¤¥ë¤òƱ´ü¤¹¤ë¤Î¤Ë¼ºÇÔ¤¹¤ë¤È¡¢¾ðÊó¤ËÌ·½â¤ä·çÍ
À¸¤¸¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
.Va close
¥ë¡¼¥Á¥ó¤Ï¡¢¥¨¥é¡¼½ªÎ»»þ¤Ë¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£
.It Va del
¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤò¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤éºï½ü¤¹¤ë¥ë¡¼¥Á¥ó¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£
.Pp
¥Ñ¥é¥á¡¼¥¿
.Fa flags
¤Ï¼¡¤ÎÃͤËÀßÄê¤Ç¤­¤Þ¤¹¡£
.Bl -tag -width indent
.It Dv R_CURSOR
¥«¡¼¥½¥ë¤¬»²¾È¤¹¤ë¥ì¥³¡¼¥É¤òºï½ü¤·¤Þ¤¹¡£¥«¡¼¥½¥ë¤Ï¡¢
¤¢¤é¤«¤¸¤á½é´ü²½¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
.El
.Pp
.Va delete
¥ë¡¼¥Á¥ó¤Ï¥¨¥é¡¼½ªÎ»»þ¤Ë¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£»ØÄꤷ¤¿
.Fa key
¤¬¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£
.It Va fd
´ðËܥǡ¼¥¿¥Ù¡¼¥¹¤Î¥Õ¥¡¥¤¥ëµ­½Òɽ¸½¤òÊÖ¤¹¥ë¡¼¥Á¥ó¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£
Ʊ¤¸¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ï¡¢Æ±¤¸
.Fa file
̾¤Ç
.Fn dbopen
¤ò¸Æ¤Ó½Ð¤¹Á´¥×¥í¥»¥¹¤ËÊÖ¤µ¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ï¡¢¥í¥Ã¥¯´Ø¿ô
.Xr fcntl 2
¤È
.Xr flock 2
¤Ø¤Î°ú¿ô¤È¤·¤Æ°ÂÁ´¤Ë»ÈÍѤǤ­¤Þ¤¹¡£
¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ï¡¢É¬¤º¤·¤â¥¢¥¯¥»¥¹Êý¼°¤¬»ÈÍѤ·¤Æ¤¤¤ë´ðËÜ¥Õ¥¡¥¤¥ë¤Ë
´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Ï
¥á¥â¥ê¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤ÇÍøÍѤǤ­¤Þ¤»¤ó¡£
.Va \&fd
¥ë¡¼¥Á¥ó¤Ï¡¢¥¨¥é¡¼½ªÎ»»þ¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤òÊÖ¤·¤Þ¤¹¡£
.It Va get
¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¥­¡¼¤ò»ÈÍѤ·¤Æ¼è¤ê½Ð¤¹¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¢¤ë
¥ë¡¼¥Á¥ó¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£»ØÄê¤Î
.Fa key
¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹¤ÈŤµ¤¬¡¢
.Fa data
¤Ç»²¾È¤µ¤ì¤ë¹½Â¤ÂÎÆâ¤ËÊÖ¤µ¤ì¤Þ¤¹¡£
.Va get
¥ë¡¼¥Á¥ó¤Ï¥¨¥é¡¼½ªÎ»»þ¤Ë¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£
.Fa key
¤¬¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£
.It Va put
¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤò¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤ËÊݸ¤¹¤ë¥ë¡¼¥Á¥ó¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£
.Pp
¥Ñ¥é¥á¡¼¥¿
.Fa flags
¤Ë¤Ï¼¡¤ÎÃͤΠ1 ¤Ä¤òÀßÄê¤Ç¤­¤Þ¤¹¡£
.Bl -tag -width indent
.It Dv R_CURSOR
¥«¡¼¥½¥ë¤¬»²¾È¤¹¤ë¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤòÃÖ¤­´¹¤¨¤Þ¤¹¡£¥«¡¼¥½¥ë¤Ï¡¢
¤¢¤é¤«¤¸¤á½é´ü²½¤µ¤ì¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
.It Dv R_IAFTER
.Fa key
¤Ç»²¾È¤µ¤ì¤ë¥Ç¡¼¥¿¤Îľ¸å¤Ë¥Ç¡¼¥¿¤òÄɲä·¡¢
¿·¤·¤¤¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤòºîÀ®¤·¤Þ¤¹¡£Äɲä·¤¿¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤΥ쥳¡¼¥ÉÈֹ椬
.Fa key
¹½Â¤ÂÎÆâ¤ËÊÖ¤µ¤ì¤Þ¤¹ (
.Dv DB_RECNO
¥¢¥¯¥»¥¹Êý¼°¤Ë¤À¤±Å¬ÍѤǤ­¤Þ¤¹)¡£
.It Dv R_IBEFORE
.Fa key
¤Ç»²¾È¤µ¤ì¤ë¥Ç¡¼¥¿¤ÎľÁ°¤Ë¥Ç¡¼¥¿¤òÁÞÆþ¤·¡¢
¿·¤·¤¤¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤòºîÀ®¤·¤Þ¤¹¡£Äɲä·¤¿¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤΥ쥳¡¼¥ÉÈֹ椬
.Fa key
¹½Â¤ÂÎÆâ¤ËÊÖ¤µ¤ì¤Þ¤¹ (
.Dv DB_RECNO
¥¢¥¯¥»¥¹Êý¼°¤Ë¤À¤±Å¬ÍѤǤ­¤Þ¤¹)¡£
.It Dv R_NOOVERWRITE
¥­¡¼¤¬¤½¤ì°ÊÁ°¤Ë¸ºß¤·¤Ê¤¤¾ì¹ç¤Ë¤À¤±¡¢¿·¤·¤¤¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤòÆþÎϤ·¤Þ¤¹¡£
.It Dv R_SETCURSOR
¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤòÊݸ¤·¡¢¤½¤ì¤ò»²¾È¤¹¤ë¥«¡¼¥½¥ë¤Î°ÌÃÖ¤ò¥»¥Ã¥È¡¢¤Þ¤¿¤Ï
½é´ü²½¤·¤Þ¤¹ (
.Dv DB_BTREE
¤ª¤è¤Ó
.Dv DB_RECNO
¥¢¥¯¥»¥¹Êý¼°¤Ë¤À¤±Å¬ÍѤǤ­¤Þ¤¹)¡£
.El
.Pp
.Dv R_SETCURSOR
¤¬ÍøÍѤǤ­¤ë¤Î¤Ï¡¢
.Dv DB_BTREE
¤È
.Dv DB_RECNO
¤Î¥¢¥¯¥»¥¹Êý¼°¤Ç¤À¤±¤Ç¤¹¡£
¥­¡¼¤Ë¤Ï¡¢ÊѲ½¤·¤Ê¤¤¸ÇÍ­¤Î½ç½ø¤¬¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£
.Pp
.Dv R_IAFTER
¤È
.Dv R_IBEFORE
¤Ï
.Dv DB_RECNO
¥¢¥¯¥»¥¹Êý¼°¤Ë¤À¤±ÍøÍѤǤ­¤Þ¤¹¡£
¤É¤ì¤â¡¢¥¢¥¯¥»¥¹Êý¼°¤¬¿·¤·¤¤¥­¡¼¤òºîÀ®¤Ç¤­¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£
¤³¤ì¤Ï¡¢¥­¡¼¤¬½ç½øÉÕ¤±¤é¤ì¤Æ¤ª¤êÆÈΩ¤Ê¾ì¹ç¤Ë¤À¤±¿¿¤È¤Ê¤ê¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢¥ì¥³¡¼¥ÉÈÖ¹æ¤Ç¤¹¡£
.Pp
.Va put
¥ë¡¼¥Á¥ó¤Î¥Ç¥Õ¥©¥ë¥È¤Îưºî¤Ï¡¢¿·¤·¤¤¥­¡¼/¥Ç¡¼¥¿¤ÎÁȤòÆþÎϤ·¡¢
¤½¤ì°ÊÁ°¤Ë¸ºß¤·¤Æ¤¤¤¿¥­¡¼¤òÃÖ¤­´¹¤¨¤ë¤³¤È¤Ç¤¹¡£
.Pp
.Va put
¥ë¡¼¥Á¥ó¤Ï¥¨¥é¡¼½ªÎ»»þ¤Ë¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï 0 ¤òÊÖ¤·¡¢
.Dv R_NOOVERWRITE
¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ¡¢¤·¤«¤â¥­¡¼¤¬¥Õ¥¡¥¤¥ëÆâ¤Ë
´û¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£
.It Va seq
¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¤Î¥·¡¼¥±¥ó¥·¥ã¥ë¤Ê¼è¤ê½Ð¤·ÍÑ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¢¤ë
¥ë¡¼¥Á¥ó¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£¥­¡¼¤Î¥¢¥É¥ì¥¹¤ÈŤµ¤Ï
.Fa key
¤¬»²¾È¤¹¤ë¹½Â¤ÂÎÆâ¤ËÊÖ¤µ¤ì¡¢¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹¤ÈŤµ¤Ï
.Fa data
¤¬»²¾È¤¹¤ë¹½Â¤ÂÎÆâ¤ËÊÖ¤µ¤ì¤Þ¤¹¡£
.Pp
¥·¡¼¥±¥ó¥·¥ã¥ë¤Ê¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤμè¤ê½Ð¤·¤Ï¡¢¤¤¤Ä¤Ç¤â³«»Ï¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢
.Dq ¥«¡¼¥½¥ë
¤Î°ÌÃÖ¤Ï
.Va del ,
.Va get ,
.Va put ,
.Va sync
¤Î³Æ¥ë¡¼¥Á¥ó¤Ë¤è¤ë¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£
¥·¡¼¥±¥ó¥·¥ã¥ë¤ÊÁöºº¤Î´Ö¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î½¤Àµ¤ÏÁöºº¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£
¤¹¤Ê¤ï¤Á¡¢¥«¡¼¥½¥ë¤ÎÁ°¤ËÁÞÆþ¤µ¤ì¤¿¥ì¥³¡¼¥É¤¬ÊÖ¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö¡¢
¥«¡¼¥½¥ë¤Î¸å¤í¤ËÁÞÆþ¤µ¤ì¤¿¥ì¥³¡¼¥É¤ÏÊÖ¤µ¤ì¤Þ¤»¤ó¡£
.Pp
.Fa flags
Ãͤϼ¡¤ÎÃͤΠ1 ¤Ä¤Ë¥»¥Ã¥È¤·¤Ê¤±¤ì¤Ð
.Em ¤Ê¤ê¤Þ¤»¤ó
¡£
.Bl -tag -width indent
.It Dv R_CURSOR
»ØÄê¤Î¥­¡¼¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Ç¡¼¥¿¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥«¡¼¥½¥ë¤ò¥­¡¼¤Î°ÌÃÖ¤Ë
¥»¥Ã¥È¤Þ¤¿¤Ï½é´ü²½¤¹¤ë¤È¤¤¤¦ÅÀ¤Ç
.Va get
¥ë¡¼¥Á¥ó¤È°Û¤Ê¤ê¤Þ¤¹ (
.Dv DB_BTREE
¥¢¥¯¥»¥¹Êý¼°¤Î¾ì¹ç¡¢ÊÖ¤µ¤ì¤¿¥­¡¼¤Ïɬ¤º¤·¤â»ØÄê¤Î¥­¡¼¤ÈÀµ³Î¤Ë°ìÃפ¹¤ë
ɬÍפ¬¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ÊÖ¤µ¤ì¤ë¥­¡¼¤Ï¡¢»ØÄê¤Î¥­¡¼¤è¤ê
Â礭¤¤¤«¤Þ¤¿¤ÏÅù¤·¤¤¤è¤¦¤Ê¡¢ºÇ¾®¤Î¥­¡¼¤Ç¤¢¤ê¡¢
ÉôʬŪ¤Ê¥­¡¼°ìÃפÈÈϰϸ¡º÷¤¬¤Ç¤­¤Þ¤¹)¡£
.It Dv R_FIRST
¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇ½é¤Î¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤ¬ÊÖ¤µ¤ì¡¢¥«¡¼¥½¥ë¤Ï¤½¤ì¤ò
»²¾È¤¹¤ë¤è¤¦¤Ë¥»¥Ã¥È¤Þ¤¿¤Ï½é´ü²½¤µ¤ì¤Þ¤¹¡£
.It Dv R_LAST
¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇ¸å¤Î¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤ¬ÊÖ¤µ¤ì¡¢¥«¡¼¥½¥ë¤Ï¤½¤ì¤ò
»²¾È¤¹¤ë¤è¤¦¤Ë¥»¥Ã¥È¤Þ¤¿¤Ï½é´ü²½¤µ¤ì¤Þ¤¹ (
.Dv DB_BTREE
¤È
.Dv DB_RECNO
¤Î³Æ¥¢¥¯¥»¥¹Êý¼°¤Ë¤À¤±Å¬ÍѤǤ­¤Þ¤¹)¡£
.It Dv R_NEXT
¥«¡¼¥½¥ë¤Îľ¸å¤Ë¤¢¤ë¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤò¼è¤ê½Ð¤·¤Þ¤¹¡£¥«¡¼¥½¥ë¤¬¤Þ¤À
¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤ì¤Ï
.Dv R_FIRST
¥Õ¥é¥°¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£
.It Dv R_PREV
¥«¡¼¥½¥ë¤ÎľÁ°¤Ë¤¢¤ë¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤò¼è¤ê½Ð¤·¤Þ¤¹¡£¥«¡¼¥½¥ë¤¬¤Þ¤À
ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤ì¤Ï
.Dv R_LAST
¥Õ¥é¥°¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£(
.Dv DB_BTREE
¤È
.Dv DB_RECNO
¤Î³Æ¥¢¥¯¥»¥¹Êý¼°¤Ë¤À¤±Å¬ÍѤǤ­¤Þ¤¹)¡£
.El
.Pp
.Dv R_LAST
¤È
.Dv R_PREV
¤¬ÍøÍѤǤ­¤ë¤Î¤Ï¡¢
.Dv DB_BTREE
¤È
.Dv DB_RECNO
¤Î³Æ
¥¢¥¯¥»¥¹Êý¼°¤Ë¤Ä¤¤¤Æ¤À¤±¤Ç¤¹¡£¤³¤ì¤é¤Ï¤½¤ì¤¾¤ì¥­¡¼¤ËÊѲ½¤·¤Ê¤¤¸ÇÍ­¤Î
½ç½ø¤¬¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£
.Pp
.Va seq
¥ë¡¼¥Á¥ó¤Ï¥¨¥é¡¼½ªÎ»»þ¤Ë¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï 0 ¤òÊÖ¤·¡¢»ØÄê¤Î¥­¡¼¤Þ¤¿¤Ï¸½ºß¤Î¥­¡¼¤è¤ê¾®¤µ¤¤¤«¤Þ¤¿¤Ï
Â礭¤¤¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤ¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ï 1 ¤òÊÖ¤·¤Þ¤¹¡£
.Dv DB_RECNO
¥¢¥¯¥»¥¹Êý¼°¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Æ¡¢
¤·¤«¤â¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤¬¥­¥ã¥é¥¯¥¿ÆÃ¼ì¥Õ¥¡¥¤¥ë¤Ç¤¢¤ê¡¢
´°Á´¤Ê¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤ¬¤½¤Î»þÅÀ¤Ç¸ºß¤·¤Ê¤¤¾ì¹ç¡¢
.Va seq
¥ë¡¼¥Á¥ó¤Ï 2 ¤òÊÖ¤·¤Þ¤¹¡£
.It Va sync
¥­¥ã¥Ã¥·¥å¤µ¤ì¤¿¾ðÊó¤ò¥Ç¥£¥¹¥¯¤Ë¥Õ¥é¥Ã¥·¥å¤¹¤ë¥ë¡¼¥Á¥ó¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£
¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬¥á¥â¥êÆâ¤Ë¤À¤±Â¸ºß¤¹¤ë¾ì¹ç¡¢
.Va sync
¥ë¡¼¥Á¥ó¤Ë¤Ï²¿¤Î¸ú²Ì¤â¤Ê¤¯¡¢½èÍý¤Ï¾ï¤ËÀµ¾ï½ªÎ»¤·¤Þ¤¹¡£
.Pp
.Fa flags
Ãͤϼ¡¤ÎÃͤ˥»¥Ã¥È¤Ç¤­¤Þ¤¹¡£
.Bl -tag -width indent
.It Dv R_RECNOSYNC
.Dv DB_RECNO
¥¢¥¯¥»¥¹Êý¼°¤¬»ÈÍѤµ¤ì¤ë¾ì¹ç¡¢¤³¤Î¥Õ¥é¥°¤Ï
.Va sync
¥ë¡¼¥Á¥ó¤¬¡¢
.Va recno
¥Õ¥¡¥¤¥ë¼«¿È¤Ç¤Ï¤Ê¤¯¡¢
recno
¥Õ¥¡¥¤¥ë¤Î´ð¤È¤Ê¤ë
btree
¥Õ¥¡¥¤¥ë¤ËŬÍѤµ¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹ (¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï
.Xr recno 3
¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Î
.Va bfname
¥Õ¥£¡¼¥ë¥É¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£
.El
.Pp
.Va sync
¥ë¡¼¥Á¥ó¤Ï¥¨¥é¡¼½ªÎ»»þ¤Ë¤Ï -1 ¤òÊÖ¤· (
.Va errno
¤òÀßÄê)¡¢
Àµ¾ï½ªÎ»»þ¤Ë¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£
.El
.Sh ¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁÈ
¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ø¤Î¥¢¥¯¥»¥¹¤Ï¥­¡¼ / ¥Ç¡¼¥¿¤ÎÁȤò´ð¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¥­¡¼¤È¥Ç¡¼¥¿¤ÎξÊý¤¬¼¡¤Î¥Ç¡¼¥¿¹½Â¤¤Çɽ¤µ¤ì¤Þ¤¹¡£
.Bd -literal
typedef struct {
void *data;
size_t size;
} DBT;
.Ed
.Pp
.Ft DBT
¹½Â¤ÂΤÎÍ×ÁǤϼ¡¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Þ¤¹¡£
.Bl -tag -width "data"
.It Va data
¥Ð¥¤¥È¥¹¥È¥ê¥ó¥°¤ò»Ø¤¹¥Ý¥¤¥ó¥¿¡£
.It Va size
¥Ð¥¤¥È¥¹¥È¥ê¥ó¥°¤ÎŤµ¡£
.El
.Pp
¥­¡¼¤È¥Ç¡¼¥¿¥Ð¥¤¥È¥¹¥È¥ê¥ó¥°¤Ï¡¢Æ±»þ¤ËÍøÍѤǤ­¤ë¥á¥â¥ê¤Ë¥Õ¥£¥Ã¥È¤¹¤ëɬÍ×
¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢»²¾È¤Ç¤­¤ëʸ»úÎó¤ÎŤµ¤Ë¤ÏËܼÁŪ¤Ë¤ÏÀ©¸Â¤¬¤¢¤ê¤Þ¤»¤ó¡£
¥¢¥¯¥»¥¹Êý¼°¤Ï¡¢¥Ð¥¤¥È¥¹¥È¥ê¥ó¥°¤Î¥Ð¥¤¥È¥¢¥é¥¤¥ó¤Ë¤Ä¤¤¤Æ¤Ï
²¿¤ÎÊݾڤ⤷¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤Ù¤­¤Ç¤¹¡£
.Sh ¥¨¥é¡¼
.Fn dbopen
¥ë¡¼¥Á¥ó¤¬¥¨¥é¡¼½ªÎ»¤¹¤ë¤È¡¢¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó
.Xr open 2
¤ä
.Xr malloc 3
¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¥¨¥é¡¼¡¢¤Þ¤¿¤Ï²¼µ­¤Î¥¨¥é¡¼¤ËÂФ¹¤ë
.Va errno
¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
.Bl -tag -width Er
.It Bq Er EFTYPE
¥Õ¥¡¥¤¥ë¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹¡£
.It Bq Er EINVAL
´û¸¤Î¥Õ¥¡¥¤¥ë»ØÄê¤È¸ß´¹À­¤Î¤Ê¤¤¥Ñ¥é¥á¡¼¥¿ (¥Ï¥Ã¥·¥å´Ø¿ô¡¢
¥Ñ¥Ã¥É¥Ð¥¤¥È¤Ê¤É) ¤ä¡¢´Ø¿ô¤Ë°ÕÌ£¤Î¤Ê¤¤¥Ñ¥é¥á¡¼¥¿¤¬»ØÄꤵ¤ì¤¿ (¤¿¤È¤¨¤Ð¡¢
»öÁ°¤Î½é´ü²½¤¬¹Ô¤Ê¤ï¤ì¤Æ¤¤¤Ê¤¤¥«¡¼¥½¥ë¤Î»ÈÍÑ)¡¢
¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¤È¥½¥Õ¥È¥¦¥§¥¢¤Î¥Ð¡¼¥¸¥ç¥ó´Ö¤ËÉÔ°ìÃפ¬¤¢¤ê¤Þ¤¹¡£
.El
.Pp
.Va close
¥ë¡¼¥Á¥ó¤¬¥¨¥é¡¼½ªÎ»¤¹¤ë¤È¡¢¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó
.Xr close 2 ,
.Xr read 2 ,
.Xr write 2 ,
.Xr free 3 ,
.Xr fsync 2
¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Î
.Va errno
¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
.Pp
.Va del ,
.Va get ,
.Va put ,
.Va seq
¤Î³Æ¥ë¡¼¥Á¥ó¤¬¥¨¥é¡¼½ªÎ»¤¹¤ë¤È¡¢¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó
.Xr read 2 ,
.Xr write 2 ,
.Xr free 3 ,
.Xr malloc 3
¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Î
.Va errno
¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
.Pp
.Va fd
¥ë¡¼¥Á¥ó¤Ï¡¢¥á¥â¥êÆâ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¥¨¥é¡¼½ªÎ»¤¹¤ë¤È¡¢
.Er ENOENT
¤Ë
.Va errno
¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
.Pp
.Va sync
¥ë¡¼¥Á¥ó¤¬¥¨¥é¡¼½ªÎ»¤¹¤ë¤È¡¢¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó
.Xr fsync 2
¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥¨¥é¡¼¤Ë¤Ä¤¤¤Æ¤Î
.Va errno
¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£
.Sh ´ØÏ¢¹àÌÜ
.Xr btree 3 ,
.Xr hash 3 ,
.Xr mpool 3 ,
.Xr recno 3
.Rs
.%T "LIBTP: Portable, Modular Transactions for UNIX"
.%A Margo Seltzer
.%A Michael Olson
.%R "USENIX proceedings"
.%D Winter 1992
.Re
.Sh ¥Ð¥°
typedef
.Ft DBTs
¤Ï¡¢
.Dq "data base thang"
¤Îά¾Î¤Ç¡¢
¤Þ¤À»ÈÍѤµ¤ì¤Æ¤¤¤Ê¤¤¹çÍýŪ¤Ê̾Á°¤òï¤â»×¤¤¤Ä¤«¤Ê¤«¤Ã¤¿¤¿¤á¤Ë
»È¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
.Pp
¥Õ¥¡¥¤¥ëµ­½Ò»Ò¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¹½À®¤¬Ä´Ï¤·¤Æ¤ª¤é¤º¡¢
¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Îº£¸å¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ïºï½ü¤µ¤ì¤ëͽÄê¤Ç¤¹¡£
.Pp
¤É¤Î¥¢¥¯¥»¥¹Êý¼°¤â¡¢Ê¹ԥ¢¥¯¥»¥¹¡¢¥í¥Ã¥¯¡¢¤Þ¤¿¤Ï¥È¥é¥ó¥¶¥¯¥·¥ç¥ó
¤Ï¡¢¤É¤Î¤è¤¦¤Ê·Á¼°¤Ç¤âÄ󶡤·¤Þ¤»¤ó¡£