Çѵ¿ÈÆ /¸®´ª½ºÄÚ¸®¾Æ ´ëÇ¥ hoon@linuxkorea.co.kr
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
µé¾î°¡¸é¼ À̹ø PostgreSQL 8 ¹ø° ±â»ç°¡ ¿¬ÀçÀÇ ¸¶Áö¸·ÀÌ µÉ °Í °°´Ù. Áö±Ý±îÁö ÇÑ ³»¿ëÀº Àüü PostgreSQLÀÇ ±â´É Áß¿¡¼ ¾à Àý¹Ý Á¤µµ ´Ù·é °Í °°Àºµ¥, ½ÇÁ¦ µ¥ÀÌÅͺ£À̽º ±¸Ãà Ãø¸éÀ» ´Ù·çÁö ¸øÇß´ø °Í °°°í ¾ÆÁ÷ ½ÇÀ» ³»¿ëµµ ¸¹Àºµ¥, ÇÊÀÚÀÇ »çÁ¤»ó ÀÌ Á¤µµ¿¡¼ ¸¶¹«¸®¸¦ ÇØ¾ß ÇÒ °Í °°´Ù. ³ª¸ÓÁö ¸î °¡Áö ÇÏ°í ½Í¾ú´ø À̾߱â´Â µÞºÎºÐ¿¡¼ ¾ð±ÞÇÏ°Ú´Ù.
±ÔÄ¢(rule) ½Ã½ºÅÛ ±ÔÄ¢ ½Ã½ºÅÛÀº ÀÏÁ¾ÀÇ Æ®¸®°Å¿Í ºñ½ÁÇÑ °ÍÀÌ´Ù. ÇÏÁö¸¸ PostgreSQLÀÇ ±ÔÄ¢ ½Ã½ºÅÛÀº Á¦´ë·Î µÇÁö ¾Ê´Â´Ù. °¡·É, ±ÔÄ¢À» »ý¼ºÇÒ ¶§, ½ÇÁ¦ ÇൿÇÒ SQL ±¸¹®À» Àû¾îÁÙ ¶§, instead¸¦ Àû¾îÁÖÁö ¾ÊÀ¸¸é ¿ø·¡ÀÇ SQL ÁúÀÇ°¡ ÇÏ°íÀÚ Çß´ø Àϸ¸ ÇÏ°í, ±ÔÄ¢À¸·Î »ý¼ºÇÑ ÇൿÀº ÇÏÁö ¾Ê´Â´Ù. instead¸¦ Àû¾îµÎ¸é ¿ø·¡ÀÇ »ç¿ëÀÚ Áö½Ã¹®Àº ¼öÇàÇÏÁö ¾Ê°í instead¸¦ Àû¾îµÎ¸é ¿ø·¡ÀÇ »ç¿ëÀÚ Áö½Ã¹®Àº ¼öÇàÇÏÁö ¾Ê°í instead ÀÌÈÄÀÇ ±¸¹®¸¸ ¼öÇàÇÑ´Ù. µû¶ó¼ ¾µ ¸¸ÇÑ °ÍÀÌ µÇÁö ¾Ê´Â´Ù. »ç½Ç PostgreSQL ¸Å´º¾ó¿¡µµ »ç¿ëÇÏÁö ¸» °ÍÀ» °æ°íÇÏ°í ÀÖ´Ù. ¾ÕÀ¸·Î Á¡Â÷ Æ®¸®°Å°¡ ±ÔÄ¢ ½Ã½ºÅÛÀ» ´ëüÇÒ °ÍÀ¸·Î º¸ÀδÙ.
½Ã½ºÅÛ Ä«Å»·Î±×´Â µ¥ÀÌÅÍ »çÀü PostgreSQLÀº È¿À²ÀûÀÎ µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛÀ»
°ü¸®Çϱâ À§ÇØ ´Ù¸¥ RDBMS¿Í ¸¶Âù°¡Áö·Î ³»ºÎÀûÀÎ Ä«Å»·Î±×¸¦ »ç¿ëÇÑ´Ù.
Ä«Å»·Î±×´Â ´Ù¸¥ RDBMS¿¡¼ µ¥ÀÌÅÍ »çÀüÀ̶ó ºÒ¸®±âµµ Çϸç, µ¥ÀÌÅͺ£À̽ºÀÇ
¿©·¯ °¡Áö Á¤º¸¸¦ Àϸñ Á¤¿¬ÇÏ°Ô ÀúÀåÇÏ°í ÀÖ´Â ½Ã½ºÅÛÀÇ Å×À̺íÀÌ´Ù.
PostgreSQLÀÇ ½Ã½ºÅÛ Ä«Å»·Î±×´Â Ŭ·¡½º/ŸÀÔ ½Ã½ºÅÛ Ä«Å»·Î±×¿Í
»ó¼Ó, ±ÔÄ¢ ½Ã½ºÅÛ, °Å´ë°´Ã¼, ³»ºÎ ¿ëµµÀÇ Ä«Å»·Î±× µîÀ¸·Î Å©°Ô
ÀÌ·ç¾îÁ® ÀÖ´Ù.
±× ¿Ü¿¡µµ ¿©·¯ °¡Áö Ä«Å»·Î±×°¡ ÀÖÁö¸¸ ±×´ÙÁö
ÀÚÁÖ »ç¿ëµÇÁö ¾Ê´Â´Ù. À§¿¡¼ ¾ð±ÞÇÑ Ä«Å»·Î±×´Â ÇϳªÀÇ Å×À̺íÀ̱â
¶§¹®¿¡ ±ÇÇÑÀÌ ÀÖ´Ù¸é °»½ÅÇÒ ¼ö ÀÖ´Â Ä«Å»·Î±×µµ ÀÖ´Ù. ÇÏÁö¸¸
postgres ¼öÆÛ »ç¿ëÀÚ³ª ÀÏ¹Ý »ç¿ëÀÚ°¡ °»½ÅÇÒ ¼ö ¾ø´Â Ä«Å»·Î±×µµ
ÀÖ´Ù. ¾Æ¿ï·¯ ¹«ÀÛÁ¤ Ä«Å»·Î±×¸¦ °»½ÅÇÏ´Ùº¸¸é ½Ã½ºÅÛ µ¥ÀÌÅÍ°¡
¾û±æ ¼öµµ ÀÖÀ¸¹Ç·Î ¹Ì¸® Àß ÆľÇÇÏ°í ÀûÀýÈ÷ Á¶Á¤ÇÑ´Ù¸é ÄèÀûÇÑ
µ¥ÀÌÅͺ£À̽º ȯ°æÀ» Á¶¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌÁ¦ Çϳª¾¿ Â÷·Ê·Î »ìÆ캸ÀÚ.
Ä«Å»·Î±×¸¦ ¼³¸íÇÏ´Â °¢ Ç׸ñ¿¡¼ ³ª¿À´Â Ä÷³Àº ¾Ë¾ÆµÎ¸é ÁÁÀº
°ÍÀ» Ãß·ÅÇÑ °ÍÀ¸·Î Ä÷³À» ¸ðµÎ ¿©±â¿¡¼ ¼¼úÇÏ´Â °ÍÀº ¾Æ´Ï´Ù.
pg_class - °ü°è(¶Ç´Â °´Ã¼)¿¡ ´ëÇÑ Á¾ÇÕÀûÀÎ Á¤º¸ pg_class Ä«Å»·Î±×´Â ½Ã½ºÅÛ¿¡¼ °ü°è¿¡ ´ëÇÑ
Á¾ÇÕÀûÀÎ Á¤º¸¸¦ ´ã°í ÀÖ´Ù. Áï, »ç¿ëÀÚ°¡ »ý¼ºÇÑ Å×À̺í, ºä µîÀÇ
À̸§°ú ¼ÒÀ¯ÀÚ´Â ´©±¸À̸ç, Æ©ÇÃ, ¼Ó¼ºÀº ¸î °³ÀÎÁö µî¿¡ ´ëÇÑ ³»¿ëÀ»
´Ù·ç°í ÀÖ´Ù. ÀÌÁß¿¡¼ ¸î °¡Áö Áß¿äÇÑ Ä®·³Àº ´ÙÀ½°ú °°´Ù.
ÀÏ¹Ý Å×ÀÌºí¿¡ ´ëÇØ ÁúÀǸ¦ ÇϵíÀÌ pg_class¿¡ ´ëÇؼµµ µ¿ÀÏÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù. Å×À̺íÀ» °£´ÜÇÏ°Ô ¸¸µé°í µ¥ÀÌÅ͸¦ ¾à°£ ÀÔ·ÂÇÑ ´ÙÀ½ ÁúÀǸ¦ Çغ¸ÀÚ. create table ȸ¿ø (À̸§ text, ÀüȹøÈ£ text,
ÁÖ¼Ò text, ³ªÀÌ int); relname|relowner|relnatts ȸ¿ø Å×À̺íÀÇ ¼ÒÀ¯ÀÚ´Â UNIX ID 500¹øÀÌ°í ¼Ó¼ºÀÇ °³¼ö´Â 4°³¶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. Ä«Å»·Î±×¿¡ ´ëÇÑ °»½ÅÀº ÇöÀç±îÁöÀÇ ¹öÀü¿¡¼´Â ¾à°£ ºÒ¾ÈÇÑ Ãø¸éÀÌ ÀÖ´Ù. Áï, ¾î¶² ƯÁ¤ÇÑ Ä«Å»·Î±×¿¡¼ A¶ó´Â Ŭ·¡½º¸¦ »èÁ¦Çϸé ÀÌÈÄ¿¡ A¶ó´Â À̸§ÀÇ Å¬·¡½º¸¦ »ý¼ºÇÏÁö ¸øÇÏ´Â °æ¿ì°¡ °¡²û ÀÖ´Ù. ´ÙÀ½°ú °°Àº ÁúÀǸ¦ »ç¿ëÇϸé óÀ½¿¡´Â Àß µÇ´Â °Í °°Áö¸¸ ³ªÁß¿¡ ¹®Á¦°¡ »ý±ä´Ù. delete from pg_class where relname = 'ȸ¿ø'; ERROR: cannot create ȸ¿ø pg_class¸¦ Á÷Á¢ °»½ÅÇϸé pg_classÀÇ ³»¿ë¸¸ °»½ÅµÇ°í, °ü·ÃµÈ pg_attribute¸¦ ºñ·ÔÇÑ ¿©·¯ Ŭ·¡½ºµéÀº °»½ÅµÇÁö ¾Ê¾Æ¼ »ý±â´Â ¹®Á¦·Î º¸ÀδÙ.
pg_attribute - Ä÷³¿¡ ´ëÇÑ Á¤º¸
attname|attlen|attnum ȸ¿ø2 Å×ÀÌºí¿¡¼ ÀüȹøÈ£ Ä÷³Àº Å×ÀÌºí ³»¿¡¼ µÎ ¹ø°¿¡ À§Ä¡ÇÏ°í, ¹ÙÀÌÆ® ±æÀÌ´Â °¡º¯À̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
pg_database - µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Á¤º¸ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ °£´ÜÇÑ
Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù.
datname |datdba|datpath template1| 501|template1
pg_group - ±×·ìº° »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸
insert into pg_group values ('users', 100,
'{500, 501, 506, 510}'); 500, 501 µîÀÇ ¼ýÀÚ´Â UNIX »ç¿ëÀÚ IDÀÌ°í, 100Àº ±×·ì IDÀÌ´Ù. À̵éÀº °¢°¢ /etc/passwd¿Í /etc/groupÀÇ °ü·Ã ³»¿ë¿¡ ÇØ´çÇÑ´Ù.
pg_shadow - À¯È¿ÇÑ »ç¿ëÀÚ¿Í ±× Çã¿ë ±ÇÇÑ
usename|usesysid|usecreatedb|usetrace|usesuper|usecatupd|passwd|valuntil hoonÀ̶ó´Â »ç¿ëÀÚ´Â UNIX »ç¿ëÀÚ 500¹øÀÌ°í, µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ°í, ÃßÀû Ç÷¡±×¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç, ´Ù¸¥ »ç¿ëÀÚ¸¦ µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ·Î Ãß°¡ÇÒ ¼ö ÀÖ´Â ¼öÆÛ À¯Àú ±ÇÇѵµ ÀÖÀ¸¸ç, Ä«Å»·Î±×¸¦ »ý»êÇÒ ¼ö ÀÖ´Â ±ÇÇѵµ ÀÖ´Ù. ÀÌ°ÍÀº postgres »ç¿ëÀÚ°¡ adduser·Î »ç¿ëÀÚ¸¦ Ãʱ⠻ý¼ºÇÒ ¶§ ¸ðµÎ yes·Î ÇßÀ» °æ¿ìÀÌ´Ù. update pg_shadow set usecatupd = 'f' where
usename = 'hoon'; Ä«Å»·Î±× °»½Å ±ÇÇÑÀ» ´Ù½Ã ºÎ¿©ÇÏ·Á¸é, postgres ¼öÆÛ »ç¿ëÀÚ·Î µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ¿© ÇØ´ç pg_shadow Ä÷³À» °»½ÅÇÏ¸é µÈ´Ù.
pg_listener - »óȲÀ» ûÃëÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º
select * from pg_listener; relname|listenerpid|notification Áö±Ý±îÁö Ä«Å»·Î±×¿¡ ´ëÇÑ Á¤º¸¸¦ »ìÆ캸¾Ò´Ù. ÀÌ¿Ü¿¡µµ ½Ã½ºÅÛ Ä«Å»·Î±×°¡ ¿©·¯ °³°¡ ÀÖÁö¸¸ ½Ç ¿ëµµ´Â ³ôÁö ¾Ê°í, PostgreSQL ½Ã½ºÅÛÀÌ ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹´Ù. µÉ ¼ö ÀÖÀ¸¸é Á¤½Ä ¸í·ÉÀ» »ç¿ëÇϵµ·Ï ÇÏ°í, Ä«Å»·Î±×¿¡ ´ëÇÑ °»½ÅÀº ²À ÇÊ¿äÇÑ °æ¿ì¿¡ ºÎºÐÀûÀ¸·Î »ç¿ëÇϱ⠹ٶõ´Ù. ¾Õ¿¡¼µµ ¼³¸íÇßµíÀÌ, Ä«Å»·Î±×¿¡ ´ëÇÑ ºÎºÐÀûÀÎ °»½ÅÀº Àüü Ä«Å»·Î±×ÀÇ À¯±âÀûÀÎ °ü°è¿¡ ÁÁÁö ¾ÊÀº ¿µÇâÀ» ¹ÌÄ¥ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
´Ù¸¥ RDBMS·ÎÀÇ µ¥ÀÌÅÍ ÀÌÀü µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ´Ùº¸¸é ´Ù¸¥ µ¥ÀÌÅͺ£À̽º
¼¹ö¿¡ µ¥ÀÌÅ͸¦ ÀÌÀüÇÏ¿©¾ß ÇÒ °æ¿ì°¡ °¡²û »ý±ä´Ù. ±â¾÷ȯ°æ¿¡¼
óÀ½¿¡´Â ¼Ò±Ô¸ð µ¥ÀÌÅͺ£À̽º¸¦ ±¸ÃàÇÏ´Ù°¡ µ¥ÀÌÅͺ£À̽º°¡ ´ë±Ô¸ð·Î
µÇ¾î¼ ÀÌÀüÀÇ ¹æ½ÄÀ¸·Î °ü¸®ÇϱⰡ °ï¶õÇØÁö°Å³ª ´Ù¸¥ ±â¾îÀÌ ´Ù¸¥
µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ°í ÀÖ¾î¼ È£È¯À» À§ÇØ ¼·Î ¸ÂÃß¾î¾ß ÇÒ
Çʿ伺ÀÌ ÀÖÀ» ¶§, µ¥ÀÌÅÍÀÇ ÀÌÀüÀÌ ¹®Á¦°¡ µÈ´Ù. ±×¸®°í µ¿ÀÏÇÑ
SQL ¼¹ö¶ó°í ÇÏ´õ¶óµµ ¹öÀüÀÌ °»½ÅµÊ¿¡ µû¶ó µ¥ÀÌÅÍÀÇ Çü½ÄÀÌ ¹Ù²ð
¶§µµ ÀÖ´Ù. ¾î´À SQL ¼¹ö³ª ¸¶Âù°¡ÁöÀÌ°ÚÁö¸¸ ±âº»ÀûÀ¸·Î µ¥ÀÌÅ͸¦
SQL ±¸¹®À¸·Î ÃàÃâÇÒ ¼ö ÀÖ´Â À¯Æ¿¸®Æ¼¸¦ Á¦°øÇÏ°í ÀÖ´Ù. PostgreSQL¿¡¼´Â
pg_dump°¡ ±×°ÍÀÌ´Ù. pg_dump´Â PostgreSQLÀÇ ¹°¸®ÀûÀÎ µ¥ÀÌÅͺ£À̽º¿¡¼
´Ù¾çÇÑ µ¥ÀÌÅ͸¦ ¾Æ½ºÅ° Çü½ÄÀÇ ÁúÀÇ(SQL¹®) ½ºÅ©¸³Æ®·Î ¸¸µé¾î
³½´Ù. µû¶ó¼ ÀÌ°ÍÀ» µ¿ÀÏÇÑ PostgreSQLÀÇ ´Ù¸¥ ¹öÀüÀ¸·Î ¿Å±æ ¼ö°¡
ÀÖ´Ù. ´Ù¸¥ SQL ¼¹ö·Î ¿Å±æ ¶§¿¡´Â SQL ¹®¹ýÀÌ ´Ù¸¦ ¼ö ÀÖÀ¸¹Ç·Î
ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ·² ¶§´Â ÇØ´ç ½ºÅ©¸³Æ®¸¦ ÀûÀýÈ÷ ÆíÁýÇÏ¿© ¿Å°ÜÁÖ¾î¾ß
ÇÑ´Ù. pg_dump´Â ¸î °¡Áö ÇÑ°è°¡ ÀÖ´Ù. Áï, »ç¿ëÀÚ Á¤ÀÇ ±ÔÄ¢°ú
ºä´Â ÀÌÇظ¦ ÇÏÁö ¸øÇØ, ¹ÛÀ¸·Î ÃàÃâÇÒ ¼ö ¾øÀ¸¸ç, ½Ã½ºÅÛ Ä«Å»·Î±×¿¡
ÀúÀåµÇ´Â ¸î¸î À妽ºµµ ¸¶Âù°¡Áö·Î ²ôÁý¾î ³¾ ¼ö ¾ø´Ù. ¾Æ¿ï·¯
°Å´ë °´Ã¼(large objects)µµ °¡´ÉÇÏÁö ¾ÊÀ¸¹Ç·Î µ¥ÀÌÅ͸¦ ÀÌÀüÇÒ
¶§ ÁÖÀÇÇØ¾ß ÇÑ´Ù. µû¶ó¼ ÁÖ·Î ÀÌÀü °¡´ÉÇÑ µ¥ÀÌÅ͸¦ Å×À̺íÀ̶ó°í
º¼ ¼öµµ ÀÖ´Ù.
PostgreSQLÀÇ ¾ÈÁ¤¼ºÀº ¾î´À ¼öÁØ? °¡²û PostgreSQLÀÇ ¾ÈÁ¤¼º¿¡ ´ëÇÑ Àǹ®À» Á¦±âÇÏ´Â
ºÐµéÀ» º¸¾Æ¿Ô´Ù. ÇÊÀÚµµ Áö±Ý±îÁö PostgreSQLÀ» »ç¿ëÇÏ¸é¼ ºÎºÐÀûÀ¸·Î
ºÒ¾ÈÇÑ ¸éÀÌ ÀÖ´Ù´Â °ÍÀ» ÀÎÁ¤ÇÏÁö ¾ÊÀ» ¼ö ¾ø´Ù. ƯÈ÷ °¡²û¾¿ psql¿¡¼
ºÎÀû´çÇÑ ÁúÀǸ¦ ¼¹ö¿¡°Ô Àü´ÞÇÏ¿´À» °æ¿ì, ¼¹ö¿ÍÀÇ Á¢¼ÓÀÌ ²÷¾îÁö´Â
°æ¿ì°¡ ÀÖ¾ú´Ù. ±×¸®°í, ¼ö¸¹Àº »ç¿ëÀÚ°¡ µ¿½Ã¿¡ PostgreSQL ¼¹ö¿¡
Á¢¼ÓÇÒ ¶§ ºÒ¾ÈÇÏ´Ù´Â À̾߱⸦ ¾î´À ¾÷ü¿¡ ±Ù¹«ÇÏ´Â ºÐÀ¸·ÎºÎÅÍ
À̾߱⸦ µè°í ÀÖ´Ù. MySQLÀ» Á¦ÀÛÇÑ TCX(http://www.tcx.se)»ç¿¡¼ ÀÚ»çÀÇ È¨ÆäÀÌÁö¿¡ ´Ù¾çÇÑ RDBMSµéÀÇ º¥Ä¡¸¶Å© °á°ú¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. ÀÌ È¸»ç¿¡¼ ¸¸µç '³ª¸¦ ¹ÌÄ¡°Ô ÇØÁÖ¼¼¿ä'(crash-me)¶ó´Â ¾ÈÁ¤¼º Å×½ºÆ® ÇÁ·Î±×·¥ÀÌ Àִµ¥, crash-me ÇÁ·Î±×·¥À» »ç¿ëÇÑ, MySQL, Access97, Oracle, mSQL, EMPRESS, PostgreSQL, Solid µîÀÇ µ¥ÀÌÅͺ£À̽º Å×½ºÆ®¿¡¼ »ì¾Æ³²Àº °ÍÀº MySQL, Access97, Oracle Á¤µµÀ̸ç, PostgreSQL 6.3.1, 6.3.2¸¦ ºñ·ÔÇÑ ´Ù¼öÀÇ »ó¿ë RDBMS±îÁö Å×½ºÆ® µµÁß¿¡ ´Ù¿îµÇ¾ú´Ù´Â À̾߱Ⱑ ÀÖ´Ù. ÇÊÀÚ¿¡°Ô »ó´çÈ÷ Ãæ°ÝÀûÀÎ »ç½Ç·Î ¹Þ¾Æµé¿©Áö±ä ÇßÁö¸¸, ½Ç¸ÁÇϱ⿡´Â ¾ÆÁ÷ À̸£´Ù°í º»´Ù. PostgreSQLÀÇ °æ¿ì¿¡ ¹öÀüÀÇ °»½ÅÀÌ »ó´çÈ÷ ºü¸£°Ô ÁøÇàµÇ°í ÀÖ°í, °³¹ß ÆÀ¿¡¼µµ ÀÌ¹Ì ÀÌ·¯ÇÑ ¾ÈÁ¤¼ºÀÇ ¹®Á¦¸¦ °¨ÁöÇÏ°í ÀÖÀ» °ÍÀ¸·Î º¸À̸ç, ´õ¿íÀÌ RDBMSÀÇ ¼Ò½º°¡ ¿©·¯ºÐ ¾Õ¿¡ ³õ¿© ÀÖÀ¸¹Ç·Î ¿ë±â¿Í ½Ç·Â¸¸ ÀÖ´Ù¸é Á÷Á¢ ¼öÁ¤ÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. °ø°³ ÇÁ·Î±×·¥ÀÌ ÀÌ Á¤µµÀÇ ¼º´ÉÀ» º¸¿©Áشٴ °ÍÀº ³î¶ó¿î °ÍÀÌ´Ù. ±×¸®°í ´ë´Ù¼öÀÇ ÀÛÀº ÀÛ¾÷¿¡´Â º° ¹®Á¦ ¾øÀÌ µ¹¾Æ°¡¹Ç·Î ¾È½ÉÇصµ µÈ´Ù.
PostgreSQL°ú ´Ù¸¥ RDBMSµéÀÇ º¥Ä¡¸¶Å©
¼Óµµ¸é ¸®´ª½º ȯ°æÀÇ RDBMS »ç¿ëÀÚ »çÀÌ¿¡¼ »ç½Ç·Î ¹Þ¾Æµé¿©Áö´Â ¼Ò¹®ÀÌ ¸î °¡Áö ÀÖ´Ù. PostgreSQLÀº ¾öû ´À¸®°í, mSQL°ú MySQL µîÀº ±âº»ÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º °»½Å ¶§¸¶´Ù fsync ·çƾÀ» È£ÃâÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. PostgreSQL¿¡´Â µÎ °¡Áö ¸ðµå°¡ ÀÖ´Ù. óÀ½ postmaster¸¦ ¶ç¿ï ¶§, -o '-F' ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é, ¸Å¹øÀÇ µ¥ÀÌÅÍ º¯È½Ã ¾ÈÁ¤¼ºÀ» À§ÇØ fsync ·çƾÀ» È£ÃâÇÏ¿© µð½ºÅ©¿¡ º¯ÈµÈ ³»¿ëÀ» ¸ðµÎ ¼ö·ÏÇÑ´Ù. ÀÌ ¿É¼ÇÀ» »ç¿ëÇϸé fsync ·çƾÀ» È£ÃâÇÏÁö ¾Ê¾Æ¼, °á±¹ ¿î¿µÃ¼Á¦ÀÇ À¯¿¬ÇÑ Ä³½Ì ´É·ÂÀ» ÃæºÐÈ÷ È°¿ëÇÏ°Ô µÇ¹Ç·Î, ÀüÀÚ¿¡ ºñÇØ 10¹è ÀÌ»óÀÇ ¼Óµµ Çâ»óÀ» °¡Á®¿À°Ô µÈ´Ù. PostgreSQLÀÌ ´À¸®´Ù´Â À̾߱â´Â fsync ·çƾÀ» »ç¿ëÇÏ´Â '°ÅºÏÀÌ' ¸ðµå¸¦ Ãʱ⠿ɼÇÀ¸·Î »ç¿ëÇÏ´Â »ç¿ëÀڵ鿡°Ô¼ ³ª¿À´Â ¸»ÀÌ´Ù. fsync¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é ´Ù·®ÀÇ º¹ÀâÇÑ ÀÛ¾÷ ½Ã¿¡ PostgreSQLÀº mSQLº¸´Ù »¡¶óÁø´Ù. ¸»ÀÌ ³ª¿Â ±è¿¡ mSQLÀÌ ¸Å¿ì ºü¸£´Ù´Â À̾߱⸦ ¤°í ³Ñ¾î°¡ÀÚ. mSQLÀÇ ±âº»ÀûÀÎ »ý°¢Àº ²À ÇÊ¿äÇÑ ±â´ÉÀ» Áö¿øÇϵÇ, ¼Óµµ¿¡¼ ÃÖ°íÀÇ Çâ»óÀ» °¡Áö°í ¿ÀÀÚ´Â °ÍÀº °ÅÀÇ ¸ðµç ¸é¿¡¼ ÃÖ°íÀÇ ¼Óµµ¸¦ ÀÚ¶ûÇÏ°í ÀÖÁö¸¸, Á¤·Ä(order by)°ú °áÇÕ(join)½Ã¿¡ Ä¡¸íÀûÀÎ ¾àÁ¡À» °¡Áö°í ÀÖ´Â °ÍÀ¸·Î ³ª¿ÍÀÖ´Ù. 10°³ÀÇ Ä÷³À» Á¤·Ä(order by)ÇÒ °æ¿ì¿¡ mSQLÀÇ ¼Óµµ´Â MySQL ¼Óµµº¸´Ù 350¹è ´À¸®°í, 100°³ÀÇ °´Ã¼¸¦ °áÇÕ(join)ÇÒ ¶§¿¡´Â 10,000¹è ´À¸®´Ù´Â °ÍÀÌ´Ù. ±× ¿Ü¿¡´Â ´ëü·Î ±²ÀåÈ÷ ºü¸£´Ù°í º¥Ä¡¸¶Å© °á°ú´Â À̾߱âÇÏ°í ÀÖ´Ù. TCX»çÀÇ °á°ú¸¦ ¸ðµÎ ½Å·ÚÇÒ ÇÊ¿ä´Â ¾øÁö¸¸, ´ëü·Î ¹ÏÀ» ¸¸ÇÑ °Í °°´Ù. Á¾ÇÕÀûÀÎ ¼Óµµ¸¦ »ìÆ캸¸é, MySQL > PostgreSQL (Fast Mode) > Solid > PostgreSQL (Slow Mode) > mSQLÀÇ ¼øÀ» º¸¿©ÁÖ°í ÀÖ´Ù. ¹°·Ð, Å×½ºÆ®ÀÇ ³»¿ëÀÌ ¾÷¹« ȯ°æ¿¡¼ ÀÚÁÖ »ç¿ëÇÏ´Â ¸ðµ¨ÀÌ ¾Æ´Ñ °ÍµéÀÌ ´õ·¯ ÀÖ¾î ½ÇÁ¦ÀûÀÎ ¼Óµµ´Â °³Àΰú ±â¾÷ÀÇ ÀϹÝÀûÀÎ ¾÷¹« ÆÐÅÏ¿¡ ±â¹ÝÇÏ¿© ½ÇÀü¿¡¼ Å×½ºÆ®µÇ¾î¾ß ÇÑ´Ù°í º»´Ù. °ú¿¬ °áÇÕ(join)À» 100°³¾¿À̳ª ÇÒ ÀÏÀÌ ÀÖÀ»±î?
±â´É¸é PostgreSQLÀº ÀϹÝÀûÀ¸·Î mSQL, MySQLº¸´Ù ¶Ù¾î³ ±â´ÉÀ» ¸¹ÀÌ °¡Áö°í ÀÖ´Ù. SQLÀÇ Ç¥ÁØÀûÀÎ ¸éµµ ´ë·« À̵麸´Ù ¸¹ÀÌ Áö¿øÇÏ°í ÀÖ´Ù. ƯÈ÷ MySQL °°Àº °æ¿ì¿¡´Â PostgreSQL¿¡¼ ±âº»ÀûÀ¸·Î Áö¿øÇÏ´Â ºä(view)¿Í Æ®¸®°Å, unionÀý, Æ®·£Àè¼Ç ±¸¹® µîÀ» Áö¿øÇÏÁö ¾Ê°í ÀÖ´Ù. ¹°·Ð PostgreSQL¿¡¼ Áö¿øÇÏ´Â Æ®¸®°Å´Â ±¸¹® ¼öÁØÀÌ ¾Æ´Ï¶ó ¼¹ö ¼öÁØÀÇ ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀÇ ¹®Á¦À̱ä ÇÏÁö¸¸ ¸»ÀÌ´Ù. ÀÌµé ±â´ÉÀº µ¥ÀÌÅͺ£À̽º ȯ°æ¿¡¼ ÀÚÁÖ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. MySQLÀÌ ¼Óµµ°¡ ºü¸£´Ù°í ³ª¿À´Â °ÍÀº ¼Óµµ ¹®Á¦¿¡¼ °¡Àå ¹Î°¨ÇÑ ¿µÇâÀ» ¹Þ´Â ±â´ÉÀ» Á¦°ÅÇÔÀ¸·Î½á ÀÌ·ç¾îÁø Ãø¸éÀÌ ´ÙºÐÈ÷ ÀÖ´Ù. µû¶ó¼ ±â´É ´ë ¼Óµµ¸éÀ» µûÁö°í º»´Ù¸é PostgreSQLÀÌ MySQL¿¡ ºñÇØ ´À¸®´Ù°í¸¸ ÇÒ ¼ö´Â ¾ø´Ù. ±× ¿Ü¿¡ µ¥ÀÌÅͺ£À̽ºÀÇ ÀÚ¿ø Á¦ÇÑ ºÎºÐÀ» º»´Ù¸é PostgreSQLÀÌ Á¶±Ý ºÎÁ·ÇÑ ºÎºÐÀÌ ÀÖ´Ù. È®Àå ±â´ÉÀ¸·Î µûÁø´Ù¸é »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö, ŸÀÔ, ¿¬»êÀÚ, ÀüüÇÔ¼ö µîÀ» º¹ÀâÇÏ°Ô Áö¿øÇÏ´Â PostgreSQLÀ» µû¶ó¿Ã RDBMS´Â ¾ø´Â °Í °°´Ù.
³ª¿À´Â ¸» ÀÛ³â 11¿ùºÎÅÍ ¿¬À縦 ½ÃÀÛÇÑ °Á¸¦ ÀÌÁ¦ ¸¶¹«¸®ÇÒ ¶§°¡ ¿Â °Í °°´Ù. ¾ÆÁ÷µµ ¸ø´ÙÇÑ ¼³¸íÀÌ ¸¹Áö¸¸, ¾Æ½¬¿î Á¡Àº Á¦´ë·Î µÈ ½ÇÀü µ¥ÀÌÅͺ£À̽º ±¸Ãà ¿¹Á¦¸¦ º¸¿©ÁÖÁö ¸øÇÑ °ÍÀÌ´Ù. ±× »çÀÌ¿¡ PostgreSQL ¹öÀüµµ ¸¹ÀÌ °»½ÅµÇ¾ú´Ù. ¿À·£ ½Ã°£ µ¿¾È PostgreSQLÀ» Ž±¸ÇÏ°í Å×½ºÆ® Çغ¸¸é¼ ´À³¤ Á¡Àº °ø°³ RDBMS°¡ »ý°¢º¸´Ù »ó´çÈ÷ ¸¹Àº ±â´ÉÀ» °¡Áö°í ÀÖ´Ù´Â °ÍÀ» ´À³¤ °ÍÀÌ´Ù. ÇÏÁö¸¸ ¾ÆÁ÷ ÇöÀç ÁøÇàÇüÀÌ´Ù. ºÎÁ·ÇÑ ºÎºÐµéÀº °è¼Ó ¼öÁ¤µÇ°í ÀÖ°í, ¹ßÀüÇÏ°í ÀÖ´Ù. ¼ö ¸Þ°¡¿¡ À̸£´Â ¹æ´ëÇÑ ¼Ò½º°¡ ¿©·¯ºÐÀÇ ´«¾Õ¿¡ ÆîÃÄÁ® ÀÖ°í, ¸¶À½´ë·Î ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ÀÚÀ¯°¡ ÀÖ´Ù. ¿Ü±¹ÀÇ À¯´Ï SQL ¼¹ö ¼Ò½º¸¦ ¾öû³ µ·À» ÁÖ°í »çµéÀÌ´Â »ç¶÷µµ Àִµ¥, ¾îÂî º¸¸é »ó´çÇÑ ÇູÀ» ´©¸± ÀÚÀ¯°¡ ¿ì¸®¿¡°Ô ÀÖ´ÂÁö ¸ð¸¥´Ù. ±×¸®°í ¾ó¸¶ Àü¿¡ ¹Ý°¡¿î ¼Ò½ÄÀÌ µé·Á¿Ô´Ù. °³¹ß Åø ȸ»ç·Î À¯¸íÇÑ º¼·£µå(ÇöÀç´Â ÀÎÇÁ¶óÀÌÁî·Î ¹Ù²î¾ú´Ù)ÀÇ °è¿»çÀÎ ÀÎÅÍÆäÀ̽º ¼ÒÇÁÆ®¿þ¾î(http://www.interbase.com) »ç¿¡¼ ÀÚ»çÀÇ Àü·« Ç°¸ñÀÎ InterBase SQL Server¸¦ ¸®´ª½º ¿ëÀ¸·Î ¹«·á·Î ¹èÆ÷ÇÏ°í ÀÖ´Ù´Â °ÍÀÌ´Ù. ÇÑ´«¿¡ ºÁµµ °ø°³ SQL ¼¹ö¿¡¼´Â º¸±â Èûµç °·ÂÇÑ ±â´É°ú Ä£¼÷ÇÑ »ç¿ëÀÚ Áö¿ø ±â´ÉÀÌ µ¸º¸ÀÌ´Â °Í °°´Ù. Áö±Ý±îÁö ¼³¸íÇÑ PostgreSQLÀÇ ¼Ò½º´Â ½Ã°£ÀÌ ³ª¸é ÇÊÀÚÀÇ È¨ÆäÀÌÁö¿¡ ¾÷·Îµå Çϵµ·Ï ÇÏ°Ú´Ù. ȨÆäÀÌÁö°¡ ÀÚÁÖ ¹Ù²î¾î¼ ¾Ö½á ã¾Æ¿Â µ¶ÀÚ ºÐµé¿¡°Ô ¹Ì¾ÈÇÑ ¸¶À½ÀÌ´Ù. ¸®´ª½º¿ùµå Áö¸éÀ» ÅëÇؼ °¡²û Àλ縦 µå¸± ¼ö ÀÖÀ» °Í °°´Ù. |