.\" 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: doc/ja_JP.eucJP/man/man3/dbopen. 3, v 1.4 2002/05/18 07:12:54 horikawa Exp $ .\" .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 Æ÷¸ËÀº, Á¤·Ä ³¡³­ ¹ë·±½º¸¦ ÀâÇû´Ù Æ®¸® ±¸Á¶ÀÇ Ç¥ÇöÀÔ´Ï´Ù. ÇØ½Ã Æ÷¸ËÀº, È®Àå °¡´ÉÇÏ°í µ¿ÀûÀÎ ÇØ½Ã schemaÀÔ´Ï´Ù. Ç÷§ ÆÄÀÏ Æ÷¸ËÀº, °íÁ¤Àå ¶Ç´Â °¡º¯Àå ·¹ÄÚµå·ÎºÎÅÍ µÇ´Â ¹ÙÀÌÆ® ½ºÆ®¸² ÆÄÀÏÀÔ´Ï´Ù. Æ÷¸Ë ¹× ÆÄÀÏ Æ÷¸Ë¿¡ °íÀ¯ÀÇ Á¤º¸¿¡ ´ëÇØ¼­´Â, °¢°¢ÀÇ ¸Þ´º¾ó ÆäÀÌÁö¿¡ ÀÚ¼¼ÇÏ°Ô Áø¼úµÇ°í ÀÖ½À´Ï´Ù. .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 ij½¬µÈ Á¤º¸¸¦ µð½ºÅ©¿¡ Ç÷¡½Ã ÇØ, ÇÒ´çÇØÁø ¸®¼Ò½º¸¦ ÇØ¹æÇØ, ±âº»À¸·Î µÇ¾î ÀÖ´Â ÆÄÀÏ (1 °³(»ì) ¶Ç´Â º¹¼ö)À» ´Ý´Â routine¸¦ °¡¸®Å²´Ù Æ÷ÀÎÅÍ. Ű / µ¥ÀÌÅÍÀÇ Á¶´Â ¸Þ¸ð¸®¿¡ ij½¬µÇ¹Ç·Î, ÆÄÀÏÀ» .Va close ÇÔ¼ö ¶Ç´Â .Va sync ÇÔ¼ö·Î ÆÄÀÏÀ» µ¿±â Çϴµ¥ ½ÇÆÐÇϸé(ÀÚ), Á¤º¸¿¡ ¸ð¼øÀ̳ª °áÇÌÀÌ »ý±æÁöµµ ¸ð¸¨´Ï´Ù. .Va close routine´Â, ¿¡·¯ Á¾·á½Ã¿¡´Â -1 À» ¹Ýȯ ( .Va errno (À»)¸¦ ¼³Á¤), Á¤»ó Á¾·á½Ã¿¡´Â 0 À» µ¹·ÁÁÝ´Ï´Ù. .It Va del Ű / µ¥ÀÌÅÍÀÇ Á¶¸¦ µ¥ÀÌŸº£À̽º·ÎºÎÅÍ »èÁ¦ÇÏ´Â routine¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. .Pp ÆÄ¶ó¹ÌÅÍ .Fa flags (Àº)´Â ´ÙÀ½ÀÇ °ªÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. .Bl -tag -width indent .It Dv R_CURSOR Ä¿¼­°¡ ÂüÁ¶ÇÏ´Â ·¹Äڵ带 »èÁ¦ÇÕ´Ï´Ù. Ä¿¼­´Â, ¹Ì¸® ÃʱâÈ­ÇØ µÑ Çʿ䰡 ÀÖ½À´Ï´Ù. .El .Pp .Va delete routine´Â ¿¡·¯ Á¾·á½Ã¿¡´Â -1 À» ¹Ýȯ ( .Va errno (À»)¸¦ ¼³Á¤), Á¤»ó Á¾·á½Ã¿¡´Â 0 À» µ¹·ÁÁÝ´Ï´Ù. ÁöÁ¤Çß´Ù .Fa key ÇÏÁö¸¸ ÆÄÀϾȿ¡ ¾ø¾ú´ø °æ¿ì´Â 1 À» µ¹·ÁÁÝ´Ï´Ù. .It Va fd ±âº» µ¥ÀÌŸº£À̽ºÀÇ ÆÄÀÏ ±â¼ú Ç¥ÇöÀ» µ¹·ÁÁÖ´Â routine¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. °°Àº ÆÄÀÏÀ» ÂüÁ¶Çϰí ÀÖ´Â ÆÄÀÏ ±â¼úÀÚ´Â, °°´Ù .Fa file À̸§À¸·Î .Fn dbopen (À»)¸¦ È£ÃâÇÏ´Â ÀüÇÁ·Î¼¼½º¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. ÀÌ ÆÄÀÏ ±â¼úÀÚ´Â, ¶ô ÇÔ¼ö .Xr fcntl 2 (¿Í)°ú .Xr flock 2 ¿¡ÀÇ Àμö·Î¼­ ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏ ±â¼úÀÚ´Â, ¹Ýµå½Ã ¾×¼¼½º ¹æ½ÄÀÌ »ç¿ëÇϰí ÀÖ´Â ±âº» ÆÄÀÏ¿¡ °ü·ÃÁöÀ» ¼ö ÀÖ°í ÀÖÀ» ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÆÄÀÏ ±â¼úÀÚ´Â ¸Þ¸ð¸®µ¥ÀÌŸº£À̽º³»¿¡¼­ ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. .Va \&fd routine´Â, ¿¡·¯ Á¾·á½Ã´Â -1 À» ¹Ýȯ ( .Va errno (À»)¸¦ ¼³Á¤), Á¤»ó Á¾·á½Ã¿¡´Â ÆÄÀÏ ±â¼úÀÚ¸¦ µ¹·ÁÁÝ´Ï´Ù. .It Va get µ¥ÀÌŸº£À̽º·ÎºÎÅÍ Å°¸¦ »ç¿ëÇØ ²¨³»´Â ÀÎÅÍÆäÀ̽ºÀÌ´Ù routine¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. ÁöÁ¤ÀÇ .Fa key ¿¡ °ü·ÃÁöÀ» ¼ö ÀÖ¾ú´ø µ¥ÀÌÅÍÀÇ ÁÖ¼Ò¿Í ±æÀ̰¡, .Fa data ±×¸®°í ÂüÁ¶µÇ´Â ±¸Á¶ ü³»¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. .Va get routine´Â ¿¡·¯ Á¾·á½Ã¿¡´Â -1 À» ¹Ýȯ ( .Va errno (À»)¸¦ ¼³Á¤), Á¤»ó Á¾·á½Ã¿¡´Â 0 À» µ¹·ÁÁÝ´Ï´Ù. .Fa key ÇÏÁö¸¸ ÆÄÀϾȿ¡ ¾ø¾ú´ø °æ¿ì´Â 1 À» µ¹·ÁÁÝ´Ï´Ù. .It Va put Ű / µ¥ÀÌÅÍÀÇ Á¶¸¦ µ¥ÀÌŸº£À̽º³»¿¡ º¸Á¸ÇÏ´Â routine¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. .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 routineÀÇ µðÆúÆ®ÀÇ µ¿ÀÛÀº, »õ·Î¿î Ű/µ¥ÀÌÅÍÀÇ Á¶¸¦ ÀÔ·ÂÇØ, ±× ÀÌÀü¿¡ Á¸ÀçÇϰí ÀÖ´ø ۸¦ ¿Å°Ü³õ´Â °ÍÀÔ´Ï´Ù. .Pp .Va put routine´Â ¿¡·¯ Á¾·á½Ã¿¡´Â -1 À» ¹Ýȯ ( .Va errno (À»)¸¦ ¼³Á¤), Á¤»ó Á¾·á½Ã¿¡´Â 0 À» µ¹·ÁÁÖ¾î, .Dv R_NOOVERWRITE Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖ¾î, °Ô´Ù°¡ ۰¡ ÆÄÀϳ»¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â °æ¿ì´Â 1 À» µ¹·ÁÁÝ´Ï´Ù. .It Va seq µ¥ÀÌŸº£À̽º·ÎºÎÅÍÀÇ ½ÃÄö¼ÈÀÎ Ãëµæ¿ë ÀÎÅÍÆäÀ̽ºÀÌ´Ù routine¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. ŰÀÇ ÁÖ¼Ò¿Í ±æÀÌ´Â .Fa key ÇÏÁö¸¸ ÂüÁ¶ÇÏ´Â ±¸Á¶ ü³»¿¡ µ¹·ÁÁÖ¾îÁ® µ¥ÀÌÅÍÀÇ ÁÖ¼Ò¿Í ±æÀÌ´Â .Fa data ÇÏÁö¸¸ ÂüÁ¶ÇÏ´Â ±¸Á¶ ü³»¿¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. .Pp ½ÃÄö¼ÈÀΠŰ / µ¥ÀÌÅÍÀÇ Á¶ÀÇ ÃëµæÀº, ¾ðÁ¦¶óµµ °³½ÃÇÒ ¼ö°¡ ÀÖ¾î .Dq Ä¿¼­ ÀÇ À§Ä¡´Â .Va del , .Va get , .Va put , .Va sync ÀÇ °¢ routine¿¡ ÀÇÇÑ È£Ãâ¿¡ ÀÇÇØ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ½ÃÄö¼ÈÀÎ ÁÖ»çÀÇ »çÀÌÀÇ µ¥ÀÌŸº£À̽ºÀÇ ¼öÁ¤Àº Áֻ翡 ¹Ý¿µµË´Ï´Ù. Áï, Ä¿¼­ÀÇ Àü¿¡ »ðÀÔµÈ ·¹Äڵ尡 µ¹·ÁÁÖ¾îÁú ¶§±îÁö, Ä¿¼­ÀÇ µÚ·Î »ðÀÔµÈ ·¹ÄÚµå´Â µ¹·ÁÁÖ¾îÁöÁö ¾Ê½À´Ï´Ù. .Pp .Fa flags °ªÀº ´ÙÀ½ÀÇ °ªÀÇ 1 °³¿¡ ¼¼Æ® ÇÏÁö ¾ÊÀ¸¸é .Em µÇÁö ¾Ê½À´Ï´Ù . .Bl -tag -width indent .It Dv R_CURSOR ÁöÁ¤ÀÇ Å°¿¡ °ü·ÃÁöÀ» ¼ö ÀÖ¾ú´ø µ¥ÀÌÅͰ¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. À̰ÍÀº Ä¿¼­¸¦ ŰÀÇ À§Ä¡¿¡ ¼¼Æ® ¶Ç´Â ÃʱâÈ­ÇÑ´Ù°í ÇÏ´Â Á¡À¸·Î .Va get routine¿Í ´Ù¸¨´Ï´Ù ( .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 routine´Â ¿¡·¯ Á¾·á½Ã¿¡´Â -1 À» ¹Ýȯ ( .Va errno (À»)¸¦ ¼³Á¤), Á¤»ó Á¾·á½Ã¿¡´Â 0 À» µ¹·ÁÁÖ¾î, ÁöÁ¤ÀÇ Å° ¶Ç´Â ÇöÀçÀÇ Å°º¸´Ù ÀÛÀº°¡ ¶Ç´Â Å« Ű / µ¥ÀÌÅÍÀÇ Á¶°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â 1 À» µ¹·ÁÁÝ´Ï´Ù. .Dv DB_RECNO ¾×¼¼½º ¹æ½ÄÀÌ »ç¿ëµÇ°í ÀÖ¾î, °Ô´Ù°¡ µ¥ÀÌŸº£À̽º ÆÄÀÏÀÌ Ä³¸¯ÅÍ Æ¯¼ö ÆÄÀÏÀ̸ç, ¿ÏÀüÇÑ Å° / µ¥ÀÌÅÍÀÇ Á¶°¡ ±× ½ÃÁ¡¿¡¼­ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, .Va seq routine´Â 2 ¸¦ µ¹·ÁÁÝ´Ï´Ù. .It Va sync ij½¬µÈ Á¤º¸¸¦ µð½ºÅ©¿¡ Ç÷¡½Ã ÇÏ´Â routine¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. µ¥ÀÌŸº£À̽º°¡ ¸Þ¸ð¸®³»¿¡¸¸ Á¸ÀçÇÏ´Â °æ¿ì, .Va sync routine¿¡´Â ¾Æ¹« È¿°úµµ ¾ø°í, 󸮴 Ç×»ó Á¤»ó Á¾·áÇÕ´Ï´Ù. .Pp .Fa flags °ªÀº ´ÙÀ½ÀÇ °ª¿¡ ¼¼Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù. .Bl -tag -width indent .It Dv R_RECNOSYNC .Dv DB_RECNO ¾×¼¼½º ¹æ½ÄÀÌ »ç¿ëµÇ´Â °æ¿ì, ÀÌ Ç÷¡±×´Â .Va sync routine°¡, .Va recno ÆÄÀÏ ÀÚ½ÅÀÌ ¾Æ´Ï°í, recno ÆÄÀÏÀÇ ±â°¡ µÈ´Ù btree ÆÄÀÏ¿¡ Àû¿ëµÇµµ·Ï(µíÀÌ) ÇÕ´Ï´Ù (»ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â .Xr recno 3 ¸Þ´º¾ó ÆäÀÌÁöÀÇ .Va bfname Çʵ带 ÂüÁ¶ÇØ ÁÖ¼¼¿ä). .El .Pp .Va sync routine´Â ¿¡·¯ Á¾·á½Ã¿¡´Â -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 byte string¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ. .It Va size byte stringÀÇ ±æÀÌ. .El .Pp Ű¿Í µ¥ÀÌÅÍ byte string´Â, µ¿½Ã¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®¿¡ ÇÇÆ®ÇÒ ÇÊ¿ä (Àº)´Â ÀÖ½À´Ï´Ù¸¸, ÂüÁ¶ÇÒ ¼ö Àִ ij¸¯ÅÍ ¶óÀÎÀÇ ±æÀÌ¿¡´Â º»ÁúÀûÀ¸·Î´Â Á¦ÇÑÀÌ ¾ø½À´Ï´Ù. ¾×¼¼½º ¹æ½ÄÀº, byte stringÀÇ ¹ÙÀÌÆ® ¾Æ¶óÀο¡ ´ëÇØ¼­´Â ¾î¶² ÇÁ·ÎÅØ¼Çµµ Çϰí ÀÖÁö ¾Ê´Â °Í¿¡ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. .Sh ¿¡·¯ .Fn dbopen routine°¡ ¿¡·¯ Á¾·áÇϸé(ÀÚ), ÇÁ·Î±×·¥ ¶óÀ̺귯¸® routine .Xr open 2 (ÀÌ)³ª .Xr malloc 3 ±×¸®°í ¾²¿©Á® ÀÖ´Â ¿¡·¯, ¶Ç´Â ¾Æ·¡¿Í °°Àº ¿¡·¯¿¡ ´ëÇÑ´Ù .Va errno (À»)¸¦ ¼¼Æ® ÇÕ´Ï´Ù. .Bl -tag -width Er .It Bq Er EFTYPE ÆÄÀÏÀÇ Æ÷¸ËÀÌ À߸øµÇ¾î ÀÖ½À´Ï´Ù. .It Bq Er EINVAL ±âÁ¸ÀÇ ÆÄÀÏ ÁöÁ¤°ú ȣȯ¼ºÀÌ ¾ø´Â ÆÄ¶ó¹ÌÅÍ (ÇØ½¬ ÇÔ¼ö, ÆÐµå ¹ÙÀÌÆ®µî)À̳ª, ÇÔ¼ö¿¡ Àǹ̰¡ ¾ø´Â ÆÄ¶ó¹ÌÅͰ¡ ÁöÁ¤µÇ¾ú´Ù (¿¹¸¦ µé¾î, »çÀüÀÇ ÃʱâÈ­°¡ ÇàÇØÁöÁö ¾ÊÀº Ä¿¼­ÀÇ »ç¿ë), ¶Ç´Â ÆÄÀϰú ¼ÒÇÁÆ®¿þ¾îÀÇ ¹öÁ¯°£¿¡ ºÒÀÏÄ¡°¡ ÀÖ½À´Ï´Ù. .El .Pp .Va close routine°¡ ¿¡·¯ Á¾·áÇϸé(ÀÚ), ÇÁ·Î±×·¥ ¶óÀ̺귯¸® routine .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 ÀÇ °¢ routine°¡ ¿¡·¯ Á¾·áÇϸé(ÀÚ), ÇÁ·Î±×·¥ ¶óÀ̺귯¸® routine .Xr read 2 , .Xr write 2 , .Xr free 3 , .Xr malloc 3 ¿¡ ¾²¿©Á® ÀÖ´Â ¿¡·¯¿¡ ´ëÇÑ .Va errno (À»)¸¦ ¼¼Æ® ÇÕ´Ï´Ù. .Pp .Va fd routine´Â, ¸Þ¸ð¸®³»ÀÇ µ¥ÀÌŸº£À̽º·Î ¿¡·¯ Á¾·áÇϸé(ÀÚ), .Er ENOENT ¿¡ .Va errno (À»)¸¦ ¼¼Æ® ÇÕ´Ï´Ù. .Pp .Va sync routine°¡ ¿¡·¯ Á¾·áÇϸé(ÀÚ), ÇÁ·Î±×·¥ ¶óÀ̺귯¸® routine .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 ¾î´À ¾×¼¼½º ¹æ½Äµµ, º´Çà ¾×¼¼½º, ¶ô, ¶Ç´Â Æ®·£Àè¼Ç(transaction) (Àº)´Â, ¾î¶°ÇÑ Çü½Ä¿¡¼­µµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù.