C¿Í C++°ü·Ã

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   GDBM °­Á #1/2 1998/07/20 (21:25)
À̸§ ±èÈ¿¿ø
¹øÈ£ 11
Á¶È¸ 852
º»¹® -----------------------------------------------------------------------------

         ÇÏÀÌÅÚ ½Ã»ðÀ̽ŠÇѵ¿ÈÆ´ÔÀÇ gdbm °­ÁÂÀÔ´Ï´Ù.


         -------------------------------------------------------------------------


         #620   Çѵ¿ÈÆ   (ddoch   )
         [°­ÁÂ] DB¸¦ ÆíÇÏ°Ô, gdbm (1)                 06/02 20:15   495 line

         GNU gdbm (GNU DataBase Manager) ÇÁ·Î±×·¡¹Ö °­Á (1)
         ----------------------------------------------------

          ±Û¾´ÀÌ   : Çѵ¿ÈÆ ddoch@hitel.kol.co.kr
          ³¯  Â¥   : 1997.5.30
          ÀúÀÛ±Ç   : »ó¾÷ÀûÀÎ ¿ëµµ°¡ ¾Æ´ÑÇÑ ¾îµð·Îµç À̵¿ ¹× °ÔÁ¦ °¡´É
          ºÎŹ»çÇ× : Áú¹®°ú °ü·ÃµÈ ³»¿ëÀ̳ª ´äº¯À» ¿äÇÏ´Â ³»¿ëÀº ¸ÞÀÏ·Î
         Àû¾îÁÖÁö
                     ¸¶½Ã°í °ü·Ã ÇÁ·Î±×·¡¹Ö °Ô½ÃÆÇÀ» ÀÌ¿ëÇØ ÁÖ½Ã¸é ¼ºÀDz¯ ´äº¯ÇØ
                     µå¸®°Ú½À´Ï´Ù. Á¦°¡ »ó´çÈ÷ °ÔÀ¸¸¥ °ü°è·Î Áú¹®¸ÞÀÏ¿¡ Á¦´ë·Î
         ´ä
                     º¯À» ¸øÇص帮°í ÀÖ´Â Á¡ Á˼ÛÇÕ´Ï´Ù.


           ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê  
          ¢Ê                ¸ñ      Â÷                    ¢Ê
            ¢Ê                                              ¢Ê
          ¢Ê      1. µé¾î°¡´Â ¸»                          ¢Ê
            ¢Ê      2. µµÀÔ°ú Àü°³                          ¢Ê
          ¢Ê      3. ¿©·¯ ÇÔ¼öµé                          ¢Ê
            ¢Ê      4. ±×¿ÜÀÇ ´Ù¸¥ °Í                       ¢Ê
          ¢Ê      5. ÇÁ·Î±×·¥À» Çѹø Â¥º¾½Ã´Ù             ¢Ê
            ¢Ê                                              ¢Ê
           ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê ¢Ê


         1. µé¾î°¡´Â ¸»

         ¾È³çÇϼ¼¿ä. ddoch Çѵ¿ÈÆÀÔ´Ï´Ù.

         ¸®´ª½º¸¦ »ç¿ëÇϽø鼭, µ¥ÀÌÅÍ Ã³¸®¸¦ ¸¹ÀÌ ÇÏ½Ç °ÍÀÔ´Ï´Ù. ¿¹Àü¿¡
         DOS¿¡¼­ µ¹¾Æ
         °¡´ø dBASE °°Àº °ÍÀ» »ç¿ëÇϽôø ±â¾ïÀÌ ¾î·ÅDzÀÌ ¶°¿À¸£½Ã´Â
         ºÐµéµµ °è½Ç°Ì´Ï´Ù.
         ¸¹Àº ºÐµé Áß¿¡¼­ ¸®´ª½º¿¡¼­ ¾µ¸¸ÇÑ µ¥ÀÌÅͺ£À̽º°¡ ¾ø³ªÇÏ°í
         Ã£À¸½Ã´Â ºÐµéµµ ¸¹
         ÀÌ °è½Ã´õ±º¿ä.

         'µðºñÀÔ¹®'... ±Û½ê¿ä..
         Àû´çÇÑ ÀÔ¹®Ã¥À» Çϳª ±¸Çϼż­ º¸¼Åµµ ÁÁÀ» °ÍÀÔ´Ï´Ù. DB¿¡ ´ëÇØ
         Àü¹®ÇÁ·Î±×·¡
         ¸Ó°¡ ¾Æ´Ñ ÀÏ¹Ý ÇÁ·Î±×·¡¸Ó³ª »ç¿ëÀÚ¶ó¸é ±»ÀÌ ±×·² ÇÊ¿ä±îÁö´Â ¾øÀ»
         °Ì´Ï´Ù.

         Àß ¾Æ½Ã°ÚÁö¸¸, ¸®´ª½º¿¡¼­ µ¹¾Æ°¡´Â °ü°èÇü µ¥ÀÌÅͺ£À̽º
         ½Ã½ºÅÛ(RDBMS, ÁÙ¿©¼­
         'RDB' ¶ó°íµµ ÇÏÁÒ)À¸·Î´Â ¸¹Àº °ÍµéÀÌ ÀÖ½À´Ï´Ù. ´ëÇ¥ÀûÀÎ °ÍÀ¸·Î´Â
         °ø°³¿ëÀÎ
         postgreSQLÀÌ ÀÖÀ¸¸ç, °ø°³¿ëÀº ¾Æ´Ñ mSQL, ±×¿Ü¿¡ ´Ù¸¥ ÅøµéÀÌ ¸¹ÀÌ
         ÀÖ½À´Ï´Ù.
         ±×¿Ü¿¡µµ ÇöÀç ¸¹Àº »ó´çÈ÷ ÈǸ¢ÇÑ ±â´ÉµéÀ» °¡Áø RDBMSµéÀÌ ³ª¿À°í
         ÀÖ´Â »óÅÂ
         ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °ÍµéÀº ÃÖÁ¾»ç¿ëÀÚ¿¡°Ôµµ ÈǸ¢ÇÑ DB ¸Å´ÏÁ®°¡ µÇ°í,
         ÇÁ·Î±×·¡¸Ó
         ¿¡°Ôµµ È°¿ëÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ±â´ÉµéÀ» Á¦°øÇÕ´Ï´Ù.

         ±âȸ°¡ ÀÖÀ¸¸é, postgreSQL °°Àº °ÍÀº ´ÙÀ½±âȸ¿¡ ¼Ò°³Çϱâ·Î ÇÏ°í,
         À̹ø ±âȸ¿¡ ¸»¾¸µå¸± °ÍÀº, ÇÁ·Î±×·¡¸Ó¿¡°Ô ¿ä±äÇÑ DB °ü¸®
         ÅøÀÔ´Ï´Ù.

         "ÇÁ·Î±×·¥ ÀÛ¼ºÁß DB°ü·Ã ºÎºÐÀ» ¾î¶»°Ô ó¸®ÇϽʴϱî?" ¶ó´Â
         Áú¹®¿¡, RDBMS¿Í ¿¬
         µ¿ÇÏ¿© ó¸®ÇϽô ºÐµéµµ °è½Ç °ÍÀÌ°í ¸ðµç ·çƾÀ» ³»ºÎÀûÀ¸·Î
         ¸¸µé¾î¼­ »ç¿ëÇÏ
         ½Ã´Â ºÐ, C ³ª C++·Î Â¥¿©Áø  DB ó¸®ÅøÀ» »ç¿ëÇϽô ºÐµéµµ ÀÖÀ»
         °ÍÀÔ´Ï´Ù.
         Àúµµ »ç½Ç RDBMS ³ª DB ó¸®ÅøµéÀº Àß »ç¿ëÇÏÁö ¾Ê¾Ò½À´Ï´Ù.
         »ç¿ëÇϸé ÁÁÀ» ÅÙµ¥,
         ´ÜÁö ±ÍÂú´Ù´Â ÇϳªÀÇ ÀÌÀ¯¸¸À¸·Î ³»ºÎÀûÀ¸·Î Æã¼ÇÀ» ¸¸µé¾î¼­
         Ã³¸®¸¦ ¸¹ÀÌ ÇØ
         ¿Ô´ø °Í °°½À´Ï´Ù.

         ÇÏÁö¸¸, ÇÁ·Î±×·¥ÀÌ ´ëÇüÈ­ µÇ°í, Áß¿äÇÑ DB¸¦ ´Ù·é´Ù´øÁö, ¶Ç´Â
         ÆÛÆ÷¸Õ½º Çâ»ó,
         ´ÙÁß ÇÁ·Î¼¼½º ȯ°æ¿¡¼­ÀÇ ¿©·¯¹®Á¦ µéÀ» ÇØ°áÇÏ°í ½Í´Ù¸é DB
         Ã³¸®Àü¹® ÅøÀ̳ª,
         RDBMS ¸¦ »ç¿ëÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù.

         gdbm Àº ³»ºÎÀûÀ¸·Î DB¸¦ Àü¹®ÀûÀ¸·Î ó¸®ÇÏ´Â ¿©·¯ ÇÔ¼ö·Î ±¸¼ºµÈ
         ¶óÀ̺귯¸®ÀÔ
         ´Ï´Ù. GNU 'dbm'Àº Philip A. Nelson ¾¾¿¡ ÀÇÇØ ¾²¿©Á³½À´Ï´Ù. »ç½Ç GNU
         dbmÀº
         ´Ù¸¥ Ç¥ÁØ UNIX dbm ÀÎ 'dbm' À̳ª 'ndbm'°ú ȣȯ¼ºÀ» À¯ÁöÇϱâ À§Çؼ­
         ³»ºÎ¿¡ µû
         ·Î Á¤ÀÇµÈ Çì´õÆÄÀÏ°ú ¶óÀ̺귯¸®¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.

         ÀÌ ¼ÒÇÁÆ®¿þ¾îµéÀº ÇÏÀÌÅÚ ¸®´ª½ºµ¿ÀÚ·á½Ç('gdbm173.tgz')À̳ª
         sunsite.unc.edu
         ÀÇ "/pub/Linux/libs/db/" ¿¡¼­ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÇöÀç ½±°Ô ±¸ÇÒ ¼ö ÀÖ´Â
         gdbm
         ÀÇ ¹öÁ¯Àº 1.7.3 À̸ç, ¼Ò½º¸¦ ±¸Çϼż­ ¼³Ä¡¸¦ ÇϽñ⠹ٶø´Ï´Ù. ¹°·Ð,
         °øÀ¯¶óÀÌ
         ºê·¯¸®¿Í Çì´õÆÄÀϸ¸À¸·Î µÈ ¹ÙÀ̳ʸ® ¹èÆ÷ÆÇÀ¸·Î ±¸Çؼ­ ¼³Ä¡Çصµ
         gdbm À» »ç¿ëÇÏ
         ´Â µ¥´Â ÁöÀåÀÌ ¾øÁö¸¸ Ȥ½Ã¶óµµ ¸ð¸¦ 'dbm' À̳ª 'ndbm' °úÀÇ È£È¯¼ºÀ»
         À¯ÁöÇϱâ
         À§ÇÑ ¶óÀ̺귯¸® ¹× Çì´õÆÄÀÏÀº ºüÁ® ÀÖÀ¸´Ï ÁÖÀÇÇϽñ⠹ٶø´Ï´Ù.
         gdbm Àº 1.7.1
         ÀÇ ¸Þ´º¾óÀ» ³»ºÎ¿¡ info ÆÄÀÏÇü½ÄÀ¸·Î Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. ±×¿Ü¿¡
         ¹öŬ¸®ÀÇ 'db'
         µµ ÀÖ±ä ÇÏÁö¸¸, ¹öŬ¸®ÀÇ db º¸´Ù´Â GPLÀ» µû¸£°í ÀÖ´Â gdbmÀ»
         »ç¿ëÇϽñ⸦ ±ÇÀå
         ÇÕ´Ï´Ù.

         'gdbm' À» »ç¿ëÇÏ¸é ¾î¶² °ÍÀÌ ÁÁÀ»±î¿ä?

         1) µ¥ÀÌÅÍ ÆÄÀÏÀÇ »èÁ¦, °»½Å, ÆíÁý µîµîÀÇ °ü¸®¿¡ Á÷Á¢ ½Å°æÀ» ¾²Áö
         ¾Ê¾Æµµ
            µË´Ï´Ù. ÀÌ ÀÛ¾÷Àº gdbm ÀÌ ÃÖÀûÈ­µÈ »óŸ¦ À¯ÁöÇϸ鼭 ¿¡·¯»óÅ¿Í
         ¿©·¯
            °¡ÁöÀÇ °æ¿ì¿¡ gdbm ÀÌ ³»ºÎÀûÀ¸·Î ´ëÀÀÇÏ´Ï ½Å°æ ¾µ ÇÊ¿ä´Â
         ¾ø½À´Ï´Ù.

         2) µ¥ÀÌÅÍ °Ë»ö¿¡ ÃÖ¼±ÀÇ ¾Ë°í¸®ÁòÀ» »ç¿ëÇϹǷΠ¼Óµµ¸éÀ̳ª ÆÛÆ÷¸Õ½º
         ¸é¿¡¼­
            »ó´çÇÑ È¿°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. DB ¸¦ ÀÏÀÏÀÌ ÇÏÀ§ ·¹À̾î±îÁö
         ¼ÕÀ¸·Î
            Â© °æ¿ì¿¡ ¹ß»ýÇÏ´Â °¢Á¾ °íÈ¿À² ¾Ë°í¸®ÁòÀ» ±¸ÇöÇϱâ À§Çؼ­
         ¸Ó¸®¸¦ ½âÀÏ
            Çʿ伺ÀÌ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ ÀÛ¾÷Àº gdbm ÀÌ ÃÖ¼±ÀÇ È¿À²¼ºÀ»
         À¯ÁöÇϸ鼭
            Çؽ¬Å×À̺íÀ» ÅëÇØ ´ë½ÅÇÕ´Ï´Ù.

         3) DB ±¸Ãà°ú ¿î¿ë¿¡ ³ë·ÂÀÌ ÈξÀ Àû°Ô µé¾î°©´Ï´Ù.
            gdbm ¿¡ ÀûÀýÇÑ µ¥ÀÌÅ͸¦ ³Ñ°ÜÁÜÀ¸·Î½á DB ±¸ÃàÀº ³¡ÀÌ ³ª¹Ç·Î
         ³ª¸ÓÁö ³ë·Â
            À» ´Ù¸¥ °÷¿¡ ½ñÀ» ¼ö ÀÖ½À´Ï´Ù.
            ¹°·Ð, RDBMS ÀÇ ÀåÁ¡ÀÎ º¹ÀâÇÑ °ü°è¸¦ ó¸®Çϰųª À¶Å뼺À»
         ¹ßÈÖÇÏÁö´Â ¸ø
            ÇÏÁö¸¸ ±×¸¸Å­ »ç¿ëÀ̳ª ¿î¿ëÀÌ ¿ëÀÌÇÏ´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù.

         4) 'dbm', 'ndbm' °úÀÇ È£È¯¼ºÀ» À¯ÁöÇÏ´Â ·çƾÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù.
            gdbm ¿¡¼­ Á¦°øÇÏ´Â ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ¿© Ç¥ÁØ UNIX 'dbm' À̳ª
         'ndbm' °ú
            È£È¯ÇÏ´Â ÇÁ·Î±×·¥À» © ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í 'dbm' À̳ª 'ndbm' ¿¡¼­
         »ç¿ë
            ÇÏ´ø µ¥ÀÌÅͺ£À̽º ÆÄÀÏÀ» 'gdbm' ÀÌ »ç¿ëÇÏ´Â ÆÄÀÏÀÇ Æ÷¸ËÀ¸·Î
         À¯Æ¿¸®Æ¼¸¦
            »ç¿ëÇÏ¿© ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð, GNU 'dbm' ÀÇ ±â´ÉÀº ´õ¿í´õ
         Çâ»óµÈ ±â´É
            À» Á¦°øÇÕ´Ï´Ù.


              +-----------------+      request        +-----------------+
              |  GDBM function  |   ------------->    | internal DB    |
              |                 |    DB name, key     |                 |
              | gdbm_open       |                     |  db create      |
              | gdbm_fetch      |      result         |  hash table     |
              | .........       |   <-------------    |  searching ...  |
              +-----------------+   modified DB       +-----------------+
             |                      return value   | |                   |
             +-------------------------------------+ +-------------------+
                      User area                         GDBM Internal area

                      [ GDBM µ¥ÀÌÅÍ º£À̽º ¸Þ´ÏÁ®ÀÇ °³³ä ]


         °á·ÐÀûÀ¸·Î ¸»¾¸µå¸®¸é, DB ±¸ÃàÀ̳ª DB ³»ºÎ¿¡±îÁö ÇÁ·Î±×·¡¸Ó°¡
         ½Å°æ¾µ ÇÊ¿ä¾ø
         ÀÌ gdbm ¶óÀ̺귯¸®°¡ Á¦°øÇØÁÖ´Â ÀÎÅÍÆäÀ̽º ÇÔ¼ö¸¦ ÅëÇؼ­ ÀûÀýÇÑ
         µ¥ÀÌÅ͸¸ ³Ñ
         °ÜÁÖ¸é µÈ´Ù´Â À̾߱âÀ̹ǷΠDB ÇÁ·Î±×·¡¹Ö¿¡ ¾ÆÁÖ Æí¸®ÇÏ°Ô »ç¿ëÇÒ
         ¼ö ÀÖ½À´Ï´Ù.

         ´Ü, 12°³ÀÇ ÇÔ¼ö¸¸ ÀÍÈ÷½Ã¸é ¿©·¯ºÐµéÀÇ DB ÇÁ·Î±×·¡¹Ö¿¡ È°·Â¼Ò°¡ µÉ
         °ÍÀÔ´Ï´Ù.

         º» °­Á´ gdbm ÀÇ info ¸Þ´º¾ó¿¡ ¹ÙÅÁÇϸ鼭, ¿¹¸¦ µé¾î°¡¸é¼­
         ¼³¸íÇϵµ·Ï ÇÏ°Ú
         ½À´Ï´Ù.


         2. µµÀÔ°ú Àü°³

         gdbm Àº Ç¥ÁØ UNIX dbm ÀÇ ÇÔ¼ö¿Í À¯»çÇÏ°Ô ÀÛµ¿ÇÏ´Â µ¥ÀÌÅÍ º£À̽º
         ÇÔ¼ö¸ðÀ½Áý
         ÀÔ´Ï´Ù. ÀÌ ÇÔ¼öµéÀ» »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º ÆÄÀϵéÀ» ¸¸µé°Å³ª
         Ã³¸®ÇÒ ¼ö ÀÖ½À
         ´Ï´Ù. gdbm ÀÇ ±âº»ÀûÀ¸·Î key/data ¸¦ ¦À¸·Î µ¥ÀÌÅͺ£À̽º ÆÄÀÏ¿¡
         ÀúÀåÇÏ¿© ó
         ¸® ÇÕ´Ï´Ù. key ´Â Áߺ¹µÇÁö ¾Ê´Â À¯ÀÏÇÑ °ªÀ̾î¾ß Çϸç, °¢°¢ÀÇ key´Â
         ´Ü ÇϳªÀÇ
         µ¥ÀÌÅ;ÆÀÌÅÛ°ú °áºÎÁö¾îÁ®¾ß ÇÕ´Ï´Ù. key´Â °ðÀå ¼ø¼­´ë·Î Á¤¸®µÈ
         »óÅ·ΠÁ¢±Ù
         ÇÒ ¼ö ¾ø½À´Ï´Ù. gdbm ÀÇ ±âº»ÀûÀÎ À¯´ÖÀº ´ÙÀ½ÀÇ ±¸Á¶Ã¼ÀÔ´Ï´Ù.

               typedef struct {
         char *dptr;
                       int  dsize;
               } datum;

         ÀÌ ±¸Á¶Ã¼´Â Å©±â°¡ Á¦ °¢°¢ÀÎ key¿Í data ¾ÆÀÌÅÛÀ» Çã¿ëÇÕ´Ï´Ù.
         char * ÇüÀÎ dptr ¿¡ ¾ó¸¶´øÁö Å©°í º¹ÀâÇÑ ±¸Á¶Ã¼¶óµµ ÁÖ¼Ò¸¦ ÀúÀåÇÏ¿©
         °ªÀ» ²¨
         Áý¿¡ ³¾¶§´Â Çüº¯È¯ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

         key/data ´Â ÇѦÀ¸·Î gdbm ÀÇ µð½ºÅ© ÆÄÀÏ¿¡ ÀúÀåÀÌ µË´Ï´Ù. ÀÌ°ÍÀº
         gdbm µ¥ÀÌÅÍ
         º£À̽º¶ó°í ºÎ¸¨´Ï´Ù. ÇϳªÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ µ¥ÀÌÅͺ£À̽ºÀÇ key¿Í
         data¸¦ ó¸®
         ÇϱâÀ§Çؼ­´Â gdbm µ¥ÀÌÅͺ£À̽º¸¦ ¿­¾î¾ß ÇÕ´Ï´Ù. ´ç¿¬ÇÑ
         À̾߱â°ÚÁö¿ä..
         ¶ÇÇÑ, gdbm ¿¡¼­´Â ÇϳªÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ µ¿½Ã¿¡ ¿©·¯
         µ¥ÀÌÅͺ£À̽º¸¦ ¿©´Â °ÍÀÌ
         °¡´ÉÇÕ´Ï´Ù. ÇϳªÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ ÇÑ°³ÀÇ gdbm µ¥ÀÌÅͺ£À̽º¸¦ ¿­
         ¶§, ±×°ÍÀº
         'reader' ³ª 'writer'·Î ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. º¸Åë gdbm µ¥ÀÌÅͺ£À̽º´Â
         Çѹø¿¡
         ÇϳªÀÇ writer¿¡ ÀÇÇØ ¸¹ÀÌ °³ºÀµË´Ï´Ù. ±×·¯³ª, ¸¹Àº reader µéÀº ÇØ´ç
         µ¥ÀÌÅÍ
         º£À̽º¸¦ µ¿½Ã¿¡ ¿­ ¼ö ÀÖ½À´Ï´Ù. reader ¿Í writer ´Â µ¿½Ã¿¡ gdbm
         µ¥ÀÌÅͺ£À̽º
         ¸¦ ¿­Áö´Â ¸øÇÕ´Ï´Ù.

         gdbm Àº µ¥ÀÌÅͺ£À̽º¸¦ ´Ù·ç±âÀ§Çؼ­ ´ÙÀ½ÀÇ ÇÔ¼öµéÀ» Áö¿øÇÕ´Ï´Ù.
         ÇÔ¼öÀ̸§°ú
         ÀÎÀڵ鿡¼­µµ ±× ¿ªÇÒÀ» ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. 12°³ Á¤µµÀÇ
         ÇÔ¼ö¼ÂÀÌ´Ï ±×¸®
         ¸¹Àº °ÍÀº ¾Æ´Ò °Ì´Ï´Ù. ÀÌ ÇÔ¼öµéÀº 'gdbm.h'¿¡ ¼±¾ðµÇ¾î Àִµ¥,
         'gdbm.h'´Â
         ¼³Ä¡½Ã '/usr/include' ³ª '/usr/local/include' ¿¡ À§Ä¡ ÇÒ °ÍÀÔ´Ï´Ù.

             #include <gdbm.h>
             
             GDBM_FILE gdbm_open(name, block_size, flags, mode, fatal_func);
             void gdbm_close(dbf);
             int gdbm_store(dbf, key, content, flag);
             datum gdbm_fetch(dbf, key);
             int gdbm_delete(dbf, key);
             datum gdbm_firstkey(dbf);
             datum gdbm_nextkey(dbf, key);
             int gdbm_reorganize(dbf);
           void gdbm_sync(dbf);
             int gdbm_exists(dbf, key);
             char *gdbm_strerror(errno);
             int gdbm_setopt(dbf, option, value, size)


         3. ¿©·¯ ÇÔ¼öµé

         1) µ¥ÀÌÅÍ º£À̽º ¿­±â

          ¿©±â¿¡¼­´Â gdbm ½Ã½ºÅÛÀ» ÃʱâÈ­½ÃÅ°´Â °ÍÀ» ¼³¸íÇÕ´Ï´Ù. ÃʱâÈ­
         ·çƾ½ÇÇà ÈÄ¿¡
          0 ¹ÙÀÌƮ¥¸® ÆÄÀÏÀÌ »ý°å´Ù¸é Á¤»óÀûÀ¸·Î ¼öÇàµÈ °ÍÀÔ´Ï´Ù.
          'gdbm' ¤ÔÆÄÀÏÀ» °³ºÀÇÏ´Â ÇÁ·Î½ÃÁ®´Â ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_FILE dbf;
          dbf = gdbm_open(name, block_size, flags, mode, fatal_func);

          °¢°¢ÀÇ ÆĶó¸ÞÅÍ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

          char *name
            ÆÄÀÏÀÇ ¿ÏÀüÇÑ À̸§. gdbm ¿¡¼­´Â È®ÀåÀÚ °³³äµµ ¾øÀ¸¸ç Ưº°ÇÑ
         È®Àå¸íÀ» µÚ
            ¿¡ ºÙÀÌÁöµµ ¾Ê½À´Ï´Ù.

          int block_size
            ÀÌ°ÍÀº ÃʱâÈ­ ÇÒ µ¿¾È ´Ù¾çÇÑ »ý¼ºÀ» À§ÇÑ Å©±â¸¦ °áÁ¤Çϱâ À§ÇØ
         »ç¿ëÇÕ´Ï´Ù.
            ½ÇÁ¦ÀûÀ¸·Î´Â µð½ºÅ©¿¡¼­ ¸Þ¸ð¸®·Î Çѹø¿¡ Àü¼ÛÇÏ´Â Å©±â¸¦
         ³ªÅ¸³À´Ï´Ù. ÀÌÀü
            ¿¡ ±× ÆÄÀÏÀÌ ÃʱâÈ­ µÇ¾ú´Ù¸é ÀÌ ÀÎÀÚ´Â ¹«½ÃµÇ¸ç, ÃÖ¼Ò°ªÀº
         512À̸ç, ¸¸ÀÏ
            ÀÌ ÀÎÀÚÀÇ °ªÀÌ 512º¸´Ù ÀÛ´Ù¸é ÇØ´ç ÆÄÀÏ ½Ã½ºÅÛÀÇ ºí·Ï»çÀÌÁî°¡
         »ç¿ëµÇ¸ç,
            ´Ù¸¥ °æ¿ì´Â block_size °ªÀÌ »ç¿ëµË´Ï´Ù.
            µû¶ó¼­, ÃÖ´ëÀÇ È¿À²À» ³¾ ¼ö ÀÖ´Â Å©±â¸¦ ÁöÁ¤Çϸé ÁÁÀ» °ÍÀÔ´Ï´Ù.

          int flags
            flags °¡ GDBM_READER ·Î ¼¼Æ®µÇ¾î ÀÖÀ¸¸é, ´ÜÁö µ¥ÀÌÅͺ£À̽º
         ÆÄÀÏÀ» Àб⸸
            À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ 'gdbm_store', 'gdbm_delete' ·çƾÀ»
         È£ÃâÇÏ¸é ´ç
            ¿¬È÷ ½ÇÆÐÇÏ°Ô µË´Ï´Ù.
            ¸¹Àº reader µéÀº ¶ÇÇÑ, µ¿½Ã¿¡ ÇÑ µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÒ ¼ö
         ÀÖ½À´Ï´Ù.
            flags °¡ GDBM_WRITER À̸é, µ¥ÀÌÅͺ£À̽º¸¦ ÀÐ°í ¾²±â¸¦ ¸ðµÎ ÇÒ
         ¼ö ÀÖÀ¸¸ç,
            ¹èŸÀûÀÎ Á¢±ÙÀÌ ÇÊ¿äÇÕ´Ï´Ù. (µ¿½Ã¿¡ ÇÑÆÄÀÏ¿¡ ¾²±â¸¦ ½ÃµµÇÒ °æ¿ì,
         ¾î¶² ºÒ
            »ó»ç°¡ ÀϾ´Â Áö´Â ÃßÃà¿¡ ¸Ã±â°Ú½À´Ï´Ù. :))
            flags °¡ GDBM_WRCREAT ·Î ¼¼Æ®µÇ¾î ÀÖÀ¸¸é, µ¥ÀÌÅͺ£À̽º¸¦
         ÀÐ°í ¾²±â¸¦ ¸ðµÎ
            ÇÒ ¼ö ÀÖÀ¸¸ç, µ¥ÀÌÅͺ£À̽º°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, »õ·Î¿î °ÍÀ» Çϳª
         ¸¸µì´Ï
            ´Ù.
            flags °¡ GDBM_NEWDB ·Î ¼¼Æ®µÇ¾î ÀÖÀ¸¸é, µ¥ÀÌÅͺ£À̽º°¡ ±âÁ¸¿¡
         ÀÖ´ÂÁö ¾ø´Â
            Áö¿¡ »ó°üÇÏÁö ¾Ê°í »õ·Î¿î °ÍÀ» Çϳª ¸¸µé¸ç, Àб⠾²±â¸¦ ¸ðµÎ ÇÒ ¼ö
         ÀÖ½À
            ´Ï´Ù.
            ¸ðµç writer (GDBM_WRITER, GDBM_WRCREAT, GDBM_NEWDB)
         ¿¡´Â GDBM_FAST Ç÷¡
            ±×¸¦ Ãß°¡·Î ¼¼ÆÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿É¼ÇÀº ÃÖ´ëÇÑÀÇ Áö¿¬¾²±â¸¦
         ÇÔÀ¸·Î½á
            ¼Óµµ»óÀÇ ÀÕÁ¡À» °¡Á®¿À´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. µû¶ó¼­, ÀÌ ¿É¼ÇÀ»
         »ç¿ëÇϸé, ¼Ó
            µµ»óÀÇ ÀÕÁ¡Àº °¡Á®¿Ã ¼ö ÀÖÀ¸³ª writer °¡ ºñÁ¤»óÀûÀÎ Áß´ÜÀ» ÇÒ
         °æ¿ì¿¡´Â,
            µ¥ÀÌÅÍ°¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù.
            ¸¸ÀÏ ¿¡·¯°¡ ¹ß»ýÇß´Ù¸é, NULLÀ» ¸®ÅÏ°ªÀ¸·Î µ¹·ÁÁÖ°í, Àû´çÇÑ °ªÀÌ
            gdbm_errno ¿¡ ¼¼Æ®°¡ µÉ °ÍÀÔ´Ï´Ù. ¿¡·¯°¡ ¾ø´Ù¸é, gdbm ÆÄÀÏ
         µð½ºÅ©·´Æ®
            Æ÷ÀÎÅÍ°¡ ¸®Åϵ˴ϴÙ.

          int mode
            ÆÄÀÏ ¸ðµå. (chmod(2)¿Í open(2)¿¡¼­ »ç¿ëÇÏ´Â ÆÄÀϸðµå)   
          
          void (*fatal_func) ()
            Ä¡¸íÀûÀÎ ¿¡·¯°¡ ¹ß»ýÇÏ¿´À» °æ¿ì¿¡ gdbm ÀÌ È£ÃâÇÒ ÇÔ¼öÀÔ´Ï´Ù. ÀÌ
         ÇÔ¼öÀÇ
            ÀÎÀÚ´Â ¹®ÀÚ¿­¸¸ÀÌ °¡´ÉÇÕ´Ï´Ù. ±× °ªÀÌ NULLÀ̶ó¸é gdbm ÀÌ
         Á¦°øÇÒ °ÍÀ̸ç,
            gdbm Àº ±âº» ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.


         ¸®ÅÏ°ªÀÎ, 'dbf' ´Â gdbm ÆÄÀÏ¿¡ Á¢±ÙÇÏ´Â ´Ù¸¥ ¸ðµç ÇÔ¼öµéÀÌ »ç¿ëÇÏ´Â
         Æ÷ÀÎÅÍ
         ÀÔ´Ï´Ù. ¸¸ÀÏ ¸®ÅÏ°ªÀÌ NULL À̶ó¸é, gdbm_open Àº ½ÇÆÐÇÑ °ÍÀ̸ç,
         ¿¡·¯´Â gdbm
         ¿¡·¯¸¦ ¼¼Æ®ÇÏ´Â gdbm_errno ¿Í ÆÄÀÏ ½Ã½ºÅÛÀÇ ¿¡·¯°¡ Ç¥½ÃµÇ´Â errno
         ¿¡ ¼¼Æ®µË
         ´Ï´Ù.  (¿¡·¯ÄÚµå´Â 'gdbm.h'¸¦ ÂüÁ¶Çϼ¼¿ä.)

         ÀÌÈÄ¿¡¼­ ¼³¸íÇÏ´Â ¸ðµç È£Ãâµé¿¡ À־ 'dbf' ´Â gdbm_open ÀÌ
         ¸®ÅÏÇÑ Æ÷ÀÎÅ͸¦
         ÂüÁ¶ÇÕ´Ï´Ù.

         2) µ¥ÀÌÅͺ£À̽º ´Ý±â

         ¿­¾úÀ¸¸é ´Ý´Â °ÍÀº ´ç¿¬ÇÑ °ÍÀÌ°ÚÁÒ? ¹«´õ¿î ¿©¸§µµ ´Ù°¡¿À´Â µ¥
         ³ÃÀå°í¿¡¼­ ½Ã¿ø
         ÇÑ ¼ö¹ÚÀ» Çѵ¢¾î¸® ²¨³»°í´Â ¹®À» ¾È´Ý¾Æ³õÀ¸¸é, ´ÙÀ½¿¡ ½Ã¿øÇÑ
         À½·á¼ö¸¦ »©¸Ô
         À» ¼ö ¾øÀ» °Ì´Ï´Ù. :)

         ¿©·¯ ¶óÀ̺귯¸® ÇÔ¼öµéÀ» »ç¿ëÇϽô٠º¸¸é, ±âº»ÀûÀ¸·Î
         ÃʱâÈ­ºÎºÐ(init ¶Ç´Â
         open), 󸮺κÐ, ¸¶¹«¸®ºÎºÐ(close ¶Ç´Â free..)À¸·Î µÇ¾î ÀÖ´Â °æ¿ì°¡
         ¸¹½À´Ï´Ù.

         gdbm ¶óÀ̺귯¸®¿¡µµ ´Ý´Â ÇÔ¼ö´Â ÀÖ½À´Ï´Ù.

             gdbm_close(dbf);

          GDBM_FILE dbf
           À¯ÀÏÇÑ ÇϳªÀÇ ÀÎÀÚ´Â gdbm_open ¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍÀÔ´Ï´Ù.

         gdbm_close °¡ È£ÃâµÇ¸é gdbm ÆÄÀÏÀ» ´Ý°í 'dbf' ¿¡ ÇÒ´çµÈ ¸ðµç ¸Þ¸ð¸¦
         ÀÚÀ¯·Ó
         °Ô ÇÕ´Ï´Ù.

         3) µ¥ÀÌÅͺ£À̽º¿¡ »ðÀÔ ¶Ç´Â ´ëü

         gdbm_store ´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ·¹Äڵ带 »ðÀÔÇϰųª ´ëüÇÏ´Â
         ¿ªÇÒÀ» ÇÕ´Ï´Ù.

             ret = gdbm_store(dbf, key, content, flag);

         °¢°¢ÀÇ ÀÎÀÚ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_FILE dbf
            gdbm_open ÀÌ ¸®ÅÏÇÑ Æ÷ÀÎÅÍ

          datum key
            `key' µ¥ÀÌÅÍ

          datum content
            key ¿Í °ü·ÃµÇ´Â data

          int flag
            ÀÌ Ç÷¡±×´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ÇØ´ç key °¡ ÀÌ¹Ì ÀÖÀ» °æ¿ì¿¡ ÃëÇÒ
         ÇൿÀ»
            Á¤ÀÇÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
            GDBM_REPLACE ´Â ÀÌ¹Ì ÀÖ´Â data¸¦ »õ·Î¿î 'content' ·Î
         ´ëüÇÕ´Ï´Ù.
            GDBM_INSERT ´Â 'key' °¡ ÀÌ¹Ì ÀÖÀ» °æ¿ì¿¡ ¾Æ¹« Çൿµµ ÇÏÁö ¾Ê°í
         ¿¡·¯¸¦
            ¸®ÅÏÇϵµ·Ï ÇÕ´Ï´Ù.

          ¸®ÅÏµÈ 'ret' ÀÇ °ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.

          -1
            È£ÃâÀÚ°¡ °ø½ÄÀûÀÎ writer °¡ ¾Æ´Ï°Å³ª, 'key' ³ª 'content' ¿¡ NULL
         Çʵ带
            ÁöÁ¤ÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ ¾ÆÀÌÅÛÀ» ÀúÀåÇÏÁö ¸øÇÑ °æ¿ìÀÔ´Ï´Ù.
            'key' ¿Í 'content' µÑ´Ù NULL °ªÀÌ ¾Æ´Ñ µ¥ÀÌÅÍ Æ÷ÀÎÅÍ(dptr) Çʵ带
         °¡Á®
            ¾ß ÇÕ´Ï´Ù. ´Ù¸¥ ÇÔ¼ö°¡ NULL µ¥ÀÌÅÍÆ÷ÀÎÅÍ(dptr) Çʵ带 ¿¡·¯¸¦
         °Ë»çÇϱâ
            À§ÇØ »ç¿ëÇÏ¿´´Ù¸é, NULL Çʵå´Â À¯¿ëÇÑ µ¥ÀÌÅÍ°¡ µÉ ¼ö ¾ø½À´Ï´Ù.

          +1
            ÀÎÀÚ 'flag' °¡ GDBM_INSERT ÀÌ°í 'key' °¡ ÀÌ¹Ì µ¥ÀÌÅͺ£À̽º¿¡
         À־ ¾ÆÀÌ
            ÅÛÀÌ ÀúÀåµÇÁö ¸øÇÑ °æ¿ìÀÔ´Ï´Ù.

          0
            ¼º°øÀûÀÏ °æ¿ì. 'content' ´Â 'key' ¿Í ¿¬°üµÇ¾úÀ¸¸ç, µð½ºÅ©»óÀÇ ÆÄÀÏÀÌ
         ¾÷
            µ¥ÀÌÆ®µÇ¾î¼­ »õ·Î¿î µ¥ÀÌÅͺ£À̽ºÀÇ ±¸Á¶´Â ÀÌ ÇÔ¼ö°¡ ¸®ÅÏÇϱâ
         ÀüºÎÅÍ ¿µÇâ
            À» ¹ÌĨ´Ï´Ù.

          ¸¸ÀÏ, µ¥ÀÌÅͺ£À̽º¿¡ ÀÌ¹Ì ÀÖ´Â 'key' ¿¡ ÇØ´çµÈ µ¥ÀÌÅ͸¦ ÀúÀåÇÑ´Ù¸é,
         gdbmÀº
          GDBM_REPLACE °¡ ¼¼Æ®µÇ¾î ÀÖ´Â °æ¿ì¿¡,  ¿À·¡µÈ µ¥ÀÌÅ͸¦ »õ·Î¿î
         µ¥ÀÌÅÍ·Î ´ë
          Ã¼ÇÒ °ÍÀÔ´Ï´Ù.
          ¾Æ¿ï·¯, ÇϳªÀÇ °°Àº key °ª¿¡ µÎ°³ÀÇ µ¥ÀÌÅÍ ¾ÆÀÌÅÛÀ» ÁöÁ¤ÇÒ ¼ö
         ¾øÀ¸¸ç, ÀÌ·²
          °æ¿ì¿¡ gdbm_store ´Â ¿¡·¯¸¦ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.

          gdbm ÀÇ Å©±â´Â 'dbm' À̳ª 'ndbm' °ú °°ÀÌ Á¦ÇѵÇÁö´Â ¾Ê½À´Ï´Ù.
         ¿©·¯ºÐµéÀÇ
          µ¥ÀÌÅÍ´Â ¿øÇÏ´Â ¸¸Å­ Å©°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

          
         4) µ¥ÀÌÅÍ º£À̽º¿¡¼­ ·¹Äڵ带 °Ë»öÇϱâ

          µ¥ÀÌÅͺ£À̽º¸¦ °Ë»öÇÏ´Â ÇÔ¼ö´Â gdbm_fetch ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â
         ÁÖ¾îÁø
          Å°°ªÀ¸·Î ÀÌ¿Í °ü·ÃµÈ Á¤º¸¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅÏµÈ ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ´Â
         µ¿ÀûÀ¸·Î
          ÇÒ´çµÈ ¸Þ¸ð¸® ºí·ÏÀ» °¡¸£Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù.

               content = gdbm_fetch(dbf, key);

          °¢°¢ÀÇ ÀÎÀÚ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_FILE dbf
            gdbm_open ¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍ
          
          datum key
            key data
           
         'content' ¿¡¼­ ¸®ÅÏµÈ datum Àº ¹ß°ßµÈ µ¥ÀÌÅÍ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ÀÔ´Ï´Ù.
         ¸¸ÀÏ µ¥ÀÌ
         ÅÍ Æ÷ÀÎÅÍ(dptr)°¡ NULL À̶ó¸é µ¥ÀÌÅ͸¦ ¹ß°ßÇÏÁö ¸øÇÑ °ÍÀÔ´Ï´Ù.
         µ¥ÀÌÅÍÆ÷ÀÎÅÍ
         (dptr) °¡ NULL ÀÌ ¾Æ´Ï¶ó¸é dptr Àº ÇÒ´çµÈ µ¥ÀÌÅ͸¦ °¡¸£Åµ´Ï´Ù.
         'gdbm' Àº
         ÀÚµ¿ÀûÀ¸·Î ÀÌ µ¥ÀÌÅ͸¦ ¸Þ¸ð¸® ÇìÁ¦ ÇÏÁö´Â ¾Ê½À´Ï´Ù. ¿©·¯ºÐµéÀº
         ÀÌ°ÍÀ» ´Ù »ç
         ¿ëÇÏ°í ³ª¼­ ÀÚÀ¯·Ó°Ô ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ÀåÁ¡Àº ³ªÁß¿¡ ´Ù½Ã
         »ç¿ëÇϱâ À§
         Çؼ­ ÀÌ °á°ú¸¦ º¹»çÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â À̾߱âÀÔ´Ï´Ù. Æ÷ÀÎÅ͸¸
         ÀúÀåÇÏ¸é ³ªÁß¿¡
         ´Ù½Ã »ç¿ëÇÒ ¼ö ÀÖ°ÚÁö¿ä.

         gdbm_fetch ¿Í´Â Á¶±Ý ´Ù¸£°Ô °£´ÜÇÏ°Ô ÇØ´çÇÏ´Â key ¿¡ ´ëÀÀÇÏ´Â
         µ¥ÀÌÅÍ°¡ ÀÖ´Â
         Áö¸¦ °£´ÜÇÏ°Ô »ìÇ¥º¼ ¼öµµ ÀÖ½À´Ï´Ù.

              ret = gdbm_exists(dbf, key);

         ÇØ´ç ÀÎÀÚ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

         GDBM_FILE dbf
           gdbm_open ¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍ

         datum key
           'key' data
          
         ÀÌ ·çƾÀº ¾î¶°ÇÑ ¸Þ¸ð¸®µµ ÇÒ´çÇÏÁö ¾ÊÀ¸¸ç, ´ÜÁö ÇØ´çÇÏ´Â 'key' °¡
         Á¸ÀçÇÏ´Â
         Áö ÇÏÁö ¾Ê´Â Áö¿¡ µû¶ó true ³ª faluse ¸¦ ¸®ÅÏÇÕ´Ï´Ù.

         5) µ¥ÀÌÅͺ£À̽º¿¡¼­ ·¹ÄÚµå Á¦°ÅÇϱâ

          µ¥ÀÌÅͺ£À̽º¿¡¼­ ·¹Äڵ带 Á¦°ÅÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ Çϸé
         µË´Ï´Ù.

               ret = gdbm_delete(dbf, key);

          °¢°¢ÀÇ ÀÎÀÚ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_FILE dbf
            gdbm_open ¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍ

          datum key
            'key' µ¥ÀÌÅÍ

          ¾ÆÀÌÅÛÀÌ ¾ø°Å³ª ¿äûÀÚ°¡ reader ¶ó¸é ret °ªÀº -1 ÀÔ´Ï´Ù. ¼º°øÀûÀ¸·Î
         Á¦°ÅÇß
          ´Ù¸é 0À» ¸®ÅÏÇÕ´Ï´Ù.

          gdbm_delete ´Â key ¿¡ °ü·ÃµÈ ¾ÆÀÌÅÛ°ú key ¸¦ µ¥ÀÌÅͺ£À̽º 'dbf' ¿¡¼­
         Á¦°Å¸¦
          ÇÕ´Ï´Ù. µð½ºÅ©»óÀÇ ÆÄÀÏÀº ¾÷µ¥ÀÌÆ®µÇ°í »õ·Î¿î µ¥ÀÌÅͺ£À̽ºÀÇ
         ±¸Á¶´Â ÀÌ ÇÔ¼ö
          °¡ ¸®ÅÏÇϱâÀü ºÎÅÍ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

         6) ·¹Äڵ忡 ¿¬¼ÓÀûÀ¸·Î Á¢±ÙÇϱâ

          ´ÙÀ½ÀÇ µÎ°³ÀÇ ÇÔ¼ö´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸ðµç ¾ÆÀÌÅÛÀ» Á¢±ÙÇÒ ¼ö
         ÀÖ½À´Ï´Ù.
          ÀÌ·¯ÇÑ Á¢±ÙÀº 'key' °ªÀÌ ¿¬¼ÓµÇÁö ¾Ê½À´Ï´Ù. ±×·¯³ª
         µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸ðµç
          'key' ¸¦ Çѹø ¹æ¹®ÇÑ´Ù´Â °ÍÀº º¸ÁõÇÕ´Ï´Ù. ¹æ¹®ÇÏ´Â ¼ø¼­´Â Çؽ¬ °ª°ú
         °ü·Ã
          ÀÌ ÀÖ½À´Ï´Ù. gdbm_firstkey ´Â µ¥ÀÌÅͺ£À̽º¿¡¼­ ¸ðµç Å°¸¦ ¹æ¹®Çϱâ
         ½ÃÀÛÇÏ
          ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. gdbm_nextkey ´Â 'dbf' ÀÇ Çؽ¬ ±¸Á¶¿¡¼­ ´ÙÀ½
         ¿£Æ®¸®¸¦ ¹ß
          °ßÇÏ°í ÀоîµéÀÔ´Ï´Ù.

               key = gdbm_firstkey(dbf);

               nextkey = gdbm_nextkey(dbf, key);

          °¢°¢ÀÇ ÀÎÀÚ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_FILE dbf
            gdbm_open ¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍ

          datum `key'
          datum nextkey
            'key' data

          ¸®ÅÏ°ªÀº µÑ´Ù datum ÇüÀÔ´Ï´Ù. ¸¸ÀÏ key.dptr À̳ª nextkey.dptr ÀÌ
         NULLÀ̶ó¸é
          , ù¹ø° 'key' ³ª ´ÙÀ½ 'key' °¡ ¾øÀ» °æ¿ìÀÔ´Ï´Ù. dptr Æ÷ÀÎÅÍ´Â malloc ¿¡

          ÀÇÇØ ÇÒ´çµÈ µ¥ÀÌÅÍ¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀ̸ç gdbm Àº ±×°ÍÀ» ¾Ë¾Æ¼­ free
         ÇÏÁö ¾Ê´Â
          ´Ù´Â °ÍÀ» ´Ù½Ã Çѹø À¯ÀÇÇϼ¼¿ä.

          ÀÌ ÇÔ¼öµéÀº µ¥ÀÌÅͺ£À̽º¸¦ Àбâ¸ðµå ¾Ë°í¸®ÁòÀ¸·Î ¹æ¹®ÇÑ´Ù°í
         ÇÕ´Ï´Ù.

          ÆÄÀÏ '¹æ¹®' Àº Çؽ¬Å×ÀÌºí¿¡ ±âÃÊÇÕ´Ï´Ù. gdbm_delete ´Â Çؽ¬
         Å×À̺íÀ» ÀçÁ¤
          ·ÄÇÕ´Ï´Ù. ¿ø·¡ key ÀÇ ¼ø¼­´Â ¸ðµç °æ¿ì¿¡ À־ º¯°æµÇÁö ¾ÊÀº ä·Î
         ³²¾ÆÀÖ
          ´Ù´Â °ÍÀ» º¸ÁõÇÏÁö´Â ¸øÇÕ´Ï´Ù. ¸¸¾à ·çÇÁ°¡ ´ÙÀ½°ú °°ÀÌ ½ÇÇàµÈ´Ù¸é
         ¾î¶² ¸î
          ¸î key ´Â ¹æ¹®ÇÏÁö ¾Ê°Ô ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù.
          
                key = gdbm_firstkey ( dbf );
                while ( key.dptr ) {
                 nextkey = gdbm_nextkey ( dbf, key );
                  if ( some condition ) {
                    gdbm_delete ( dbf, key );
                    free ( key.dptr );
                  }
                  key = nextkey;
                }

         7) µ¥ÀÌÅͺ£À̽ºÀÇ µ¿½Ã¼º

          µ¥ÀÌÅͺ£À̽º¸¦ óÀ½¿¡ GDBM_FAST Ç÷¡±×·Î ¿­¾ú´Ù¸é, gdbm Àº
         º¯°æµÈ ³»¿ëÀÌ
          µð½ºÅ©·Î ¿ÏÀüÇÏ°Ô ¾²¿©Áö±â¸¦ ±â´Ù¸®Áö ¾Ê½À´Ï´Ù. À̸¦ °æ¿ì
         ¾îÇø®ÄÉÀ̼ÇÀÌ
          ºñÁ¤»óÀûÀÎ Áß´ÜÀÌ µÇ¾úÀ» ¶§ µ¥ÀÌÅͺ£À̽º°¡ º¯Á¶µÉ À§Ç輺À»
         °¡Áö°í ÀÖ½À´Ï
          ´Ù. ´ÙÀ½ÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù¸é ÇöÀç¿¡ º¯È­µÈ ¸ðµç °ÍµéÀ» ÇØ´ç
         µ¥ÀÌÅͺ£À̽º
          ÆÄÀÏ·Î ¾²±â¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

             gdbm_sync(dbf);

          ½©¸í·É¿¡¼­ 'sync'·Î Áö¿¬¾²±â µÈ °ÍÀ» µð½ºÅ©·Î ¾²´Â °Í°ú
         ºñ½ÁÇÕ´Ï´Ù.

          GDBM_FILE dbf
            gdbm_open¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍ

          ÀÌ ÇÔ¼ö´Â º¸Åë ¸¹Àº º¯È­°¡ ÀÖ°í ³­ ´ÙÀ½¿¡, ¿À·£½Ã°£µ¿¾È wait ¸¦
         Çϱâ ÀÌÀü¿¡
          È£ÃâÇÕ´Ï´Ù.
          gdbm_close ´Â ÀÚµ¿ÀûÀ¸·Î 'gdbm_sync' ¸¦ È£ÃâÇÑ°Í°ú °°Àº È¿°ú¸¦
         °¡Áö¸ç, µ¥
          ÀÌÅͺ£À̽º¿¡¼­ º¯È­°¡ ÀÖ°í³­ ´ÙÀ½¿¡ Áï°¢ÀûÀ¸·Î ´ÝÇû´Ù¸é
         ´õÀÌ»óÀÇ È£ÃâÀº ÇÊ
          ¿ä¾ø½À´Ï´Ù.

         8) ¿¡·¯ ¸Þ½ÃÁö

          gdbm ÀÇ ¿¡·¯Äڵ带 ¿¡·¯ ¹®ÀÚ¿­·Î º¯È¯Çϱâ À§Çؼ­´Â ´ÙÀ½ ·çƾÀ»
         »ç¿ëÇØ¾ß ÇÕ
          ´Ï´Ù.

               ret = gdbm_strerror(errno)

          gdbm_error errno
            gdbm ¿¡·¯ÄÚµå. º¸Åë gdbm_errno ÀÔ´Ï´Ù.

          ÀÌ ÇÔ¼ö´Â »ç¿ëÀÚ°¡ ÀÐÀ» ¼ö ÀÖ´Â ¹®ÀÚ¿­À» ¹ÝȯÇÕ´Ï´Ù.

         9) ¿É¼Ç ¼¼ÆÃÇϱâ

          gdbm Àº ÇöÀç ¿­·ÁÁ® ÀÖ´Â µ¥ÀÌÅͺ£À̽º»ó¿¡¼­ ¾î¶² ¿É¼ÇÀ» »õ·ÎÀÌ
         ¼³Á¤ÇÒ ¼ö
          ÀÖ´Â ´É·ÂÀ» Á¦°øÇÕ´Ï´Ù.

               ret = gdbm_setopt(dbf, option, value, size)

          °¢°¢ÀÇ ÀÎÀÚÀÇ Àǹ̴ ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_FILE dbf
            gdbm_open ¿¡¼­ ¸®ÅÏµÈ Æ÷ÀÎÅÍ

          int option
            ¼¼Æ®µÉ ¿É¼Ç

          int *value
            'option' ÀÌ ¼¼Æ®µÉ °ª¿¡ ´ëÇÑ Æ÷ÀÎÅÍ

          int size
            'value' ¿¡ ÀÇÇØ Æ÷ÀÎÅ͵Ǵ µ¥ÀÌÅÍÀÇ ±æÀÌ

          À¯È¿ÇÑ ¿É¼ÇÀº ´ÙÀ½°ú °°½À´Ï´Ù.

          GDBM_CACHESIZE - ³»ºÎ ¹öŶ ij½¬ »çÀÌÁ ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº
         GDBM_FILE
                           µð½ºÅ©·´Æ®´ç Çѹø¾¿¸¸ ¼³Á¤µÉ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í µ¥ÀÌÅÍ
                           º£À̽º¸¦ óÀ½ Á¢±ÙÇÑ ÀÌÈķδ 100À¸·Î ÀÚµ¿À¸·Î ¼¼Æõ˴Ï
                           ´Ù.

          GDBM_FASTMODE -  fast mode ¸¦ ÄѰųª ²ü´Ï´Ù. ÀÌ ¿É¼ÇÀ»
         »ç¿ëÇϸé ÀÌ¹Ì ¿­·Á
                        ¼­ È°¼ºÈ­µÈ µ¥ÀÌÅͺ£À̽º¿¡¼­ fast mode ¸¦ Åä±ÛÇÒ ¼ö ÀÖ½À
                           ´Ï´Ù.
                           value ´Â TRUE ³ª FALSE ·Î ¼¼ÆÃÇÕ´Ï´Ù.

          ÇÔ¼öÀÇ ¼öÇàÀÌ ½ÇÆеǾúÀ» ¶§¿¡´Â -1 ÀÌ ¸®ÅϵǸç, ¼º°øÀûÀÏ °æ¿ì¿¡´Â
         0À» ¸®ÅÏ
          ÇÕ´Ï´Ù. ½ÇÆÐÇßÀ» °æ¿ì Àü¿ªº¯¼öÀÎ gdbm_errno °¡ ÀûÀýÇÏ°Ô
         ¼¼Æõ˴ϴÙ.

          ¿¹¸¦ µé¸é, gdbm_open À» »ç¿ëÇÏ¿© ÀÌ¹Ì ¿­·ÁÁ® ÀÖ´Â µ¥ÀÌÅÍ
         º£À̽º¸¦, ÀÌÀü¿¡´Â
          ¾î¶»°Ô Á¢±ÙµÇ¾ú´øÁö°£¿¡, Äɽ¬ 10À» »ç¿ëÇÏ¿© ¼¼ÆÃÇÑ´Ù¸é, ´ÙÀ½°ú
         °°Àº Äڵ尡
          µÉ°ÍÀÔ´Ï´Ù.

                int value = 10;
                ret = gdbm_setopt(dbf, GDBM_CACHESIZE, &value, sizeof(int));


          ÀÌÁ¦ gdbm ÀÇ 12°³ ÇÔ¼ö¸¦ ´Ù ¾Ë¾Æº¸¾Ò½À´Ï´Ù.

          ´ÙÀ½À¸·Î ±×¿ÜÀÇ °£´ÜÇÑ ¸î°¡Áö¸¦ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

         (´ÙÀ½ ÀåÀ¸·Î ³Ñ±â°Ú½À´Ï´Ù.)


HomePage Backward Forward Post Reply List
1998 by swindler