°ø°³ µ¥ÀÌÅͺ£À̽º ¼­¹ö PostgreSQL(¸¶Áö¸·È¸)
-½Ã½ºÅÛ Ä«Å»·Î±×¿Í SQL¼­¹ö º¥Ä¡¸¶Å© À̾߱â

Çѵ¿ÈÆ /¸®´ª½ºÄÚ¸®¾Æ ´ëÇ¥ hoon@linuxkorea.co.kr

 

     

µé¾î°¡¸é¼­

    À̹ø PostgreSQL 8 ¹ø° ±â»ç°¡ ¿¬ÀçÀÇ ¸¶Áö¸·ÀÌ µÉ °Í °°´Ù. Áö±Ý±îÁö ÇÑ ³»¿ëÀº Àüü PostgreSQLÀÇ ±â´É Áß¿¡¼­ ¾à Àý¹Ý Á¤µµ ´Ù·é °Í °°Àºµ¥, ½ÇÁ¦ µ¥ÀÌÅͺ£À̽º ±¸Ãà Ãø¸éÀ» ´Ù·çÁö ¸øÇß´ø °Í °°°í ¾ÆÁ÷ ½ÇÀ» ³»¿ëµµ ¸¹Àºµ¥, ÇÊÀÚÀÇ »çÁ¤»ó ÀÌ Á¤µµ¿¡¼­ ¸¶¹«¸®¸¦ ÇØ¾ß ÇÒ °Í °°´Ù. ³ª¸ÓÁö ¸î °¡Áö ÇÏ°í ½Í¾ú´ø À̾߱â´Â µÞºÎºÐ¿¡¼­ ¾ð±ÞÇÏ°Ú´Ù.

     

±ÔÄ¢(rule) ½Ã½ºÅÛ

    ±ÔÄ¢ ½Ã½ºÅÛÀº ÀÏÁ¾ÀÇ Æ®¸®°Å¿Í ºñ½ÁÇÑ °ÍÀÌ´Ù. ÇÏÁö¸¸ PostgreSQLÀÇ ±ÔÄ¢ ½Ã½ºÅÛÀº Á¦´ë·Î µÇÁö ¾Ê´Â´Ù. °¡·É, ±ÔÄ¢À» »ý¼ºÇÒ ¶§, ½ÇÁ¦ ÇൿÇÒ SQL ±¸¹®À» Àû¾îÁÙ ¶§, instead¸¦ Àû¾îÁÖÁö ¾ÊÀ¸¸é ¿ø·¡ÀÇ SQL ÁúÀÇ°¡ ÇÏ°íÀÚ Çß´ø Àϸ¸ ÇÏ°í, ±ÔÄ¢À¸·Î »ý¼ºÇÑ ÇൿÀº ÇÏÁö ¾Ê´Â´Ù. instead¸¦ Àû¾îµÎ¸é ¿ø·¡ÀÇ »ç¿ëÀÚ Áö½Ã¹®Àº ¼öÇàÇÏÁö ¾Ê°í instead¸¦ Àû¾îµÎ¸é ¿ø·¡ÀÇ »ç¿ëÀÚ Áö½Ã¹®Àº ¼öÇàÇÏÁö ¾Ê°í instead ÀÌÈÄÀÇ ±¸¹®¸¸ ¼öÇàÇÑ´Ù. µû¶ó¼­ ¾µ ¸¸ÇÑ °ÍÀÌ µÇÁö ¾Ê´Â´Ù. »ç½Ç PostgreSQL ¸Å´º¾ó¿¡µµ »ç¿ëÇÏÁö ¸» °ÍÀ» °æ°íÇÏ°í ÀÖ´Ù. ¾ÕÀ¸·Î Á¡Â÷ Æ®¸®°Å°¡ ±ÔÄ¢ ½Ã½ºÅÛÀ» ´ëüÇÒ °ÍÀ¸·Î º¸ÀδÙ.

     

½Ã½ºÅÛ Ä«Å»·Î±×´Â µ¥ÀÌÅÍ »çÀü

    PostgreSQLÀº È¿À²ÀûÀÎ µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛÀ» °ü¸®Çϱâ À§ÇØ ´Ù¸¥ RDBMS¿Í ¸¶Âù°¡Áö·Î ³»ºÎÀûÀÎ Ä«Å»·Î±×¸¦ »ç¿ëÇÑ´Ù. Ä«Å»·Î±×´Â ´Ù¸¥ RDBMS¿¡¼­ µ¥ÀÌÅÍ »çÀüÀ̶ó ºÒ¸®±âµµ Çϸç, µ¥ÀÌÅͺ£À̽ºÀÇ ¿©·¯ °¡Áö Á¤º¸¸¦ Àϸñ Á¤¿¬ÇÏ°Ô ÀúÀåÇÏ°í ÀÖ´Â ½Ã½ºÅÛÀÇ Å×À̺íÀÌ´Ù. PostgreSQLÀÇ ½Ã½ºÅÛ Ä«Å»·Î±×´Â Ŭ·¡½º/ŸÀÔ ½Ã½ºÅÛ Ä«Å»·Î±×¿Í »ó¼Ó, ±ÔÄ¢ ½Ã½ºÅÛ, °Å´ë°´Ã¼, ³»ºÎ ¿ëµµÀÇ Ä«Å»·Î±× µîÀ¸·Î Å©°Ô ÀÌ·ç¾îÁ® ÀÖ´Ù.
    ÀÌÁß¿¡¼­ »ç¿ëÀÚ¿¡°Ô Àǹ̰¡ ÀÖ´Â ¸î °¡Áö Ä«Å»·Î±×¸¦ »ìÆ캸ÀÚ. ³»¿ëÀº [Ç¥ 1]°ú °°´Ù.
     

    À̸§

    ¼³¸í

    pg_class

    Å×À̺í, ½ÃÄö½º, À妽º, ºäÀÇ °´Ã¼¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.

    pg_database

    ÇöÀç ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ °£´ÜÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.

    pg_group

    µ¥ÀÌÅͺ£À̽ºÀÇ ±×·ìº° »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.

    pg_shadow

    À¯È¿ÇÑ »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.

    pg_listener

    µ¥ÀÌÅͺ£À̽º »óÀÇ º¯È­¸¦ ûÃëÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º¿¡ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.

 

    ±× ¿Ü¿¡µµ ¿©·¯ °¡Áö Ä«Å»·Î±×°¡ ÀÖÁö¸¸ ±×´ÙÁö ÀÚÁÖ »ç¿ëµÇÁö ¾Ê´Â´Ù. À§¿¡¼­ ¾ð±ÞÇÑ Ä«Å»·Î±×´Â ÇϳªÀÇ Å×À̺íÀ̱⠶§¹®¿¡ ±ÇÇÑÀÌ ÀÖ´Ù¸é °»½ÅÇÒ ¼ö ÀÖ´Â Ä«Å»·Î±×µµ ÀÖ´Ù. ÇÏÁö¸¸ postgres ¼öÆÛ »ç¿ëÀÚ³ª ÀÏ¹Ý »ç¿ëÀÚ°¡ °»½ÅÇÒ ¼ö ¾ø´Â Ä«Å»·Î±×µµ ÀÖ´Ù. ¾Æ¿ï·¯ ¹«ÀÛÁ¤ Ä«Å»·Î±×¸¦ °»½ÅÇÏ´Ùº¸¸é ½Ã½ºÅÛ µ¥ÀÌÅÍ°¡ ¾û±æ ¼öµµ ÀÖÀ¸¹Ç·Î ¹Ì¸® Àß ÆľÇÇÏ°í ÀûÀýÈ÷ Á¶Á¤ÇÑ´Ù¸é ÄèÀûÇÑ µ¥ÀÌÅͺ£À̽º ȯ°æÀ» Á¶¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌÁ¦ Çϳª¾¿ Â÷·Ê·Î »ìÆ캸ÀÚ. Ä«Å»·Î±×¸¦ ¼³¸íÇÏ´Â °¢ Ç׸ñ¿¡¼­ ³ª¿À´Â Ä÷³Àº ¾Ë¾ÆµÎ¸é ÁÁÀº °ÍÀ» Ãß·ÅÇÑ °ÍÀ¸·Î Ä÷³À» ¸ðµÎ ¿©±â¿¡¼­ ¼­¼úÇÏ´Â °ÍÀº ¾Æ´Ï´Ù.
     

    ¢Ñ PostgreSQL 6.3.2¿¡¼­ Àڱ׸¶ÇÑ ÇÑ±Û ¹®Á¦

    6.3.1 ¹öÀüÀÌ ³ª¿ÂÁö ¾ó¸¶ µÇÁö ¾Ê¾Æ¼­ 6.3.2 ¹öÀüÀÌ ³ª¿Ô´Ù. ±â´ÉÀÌ È®ÃæµÇ¾ú´Ù±â º¸´Ù ¹ö±× ¼öÁ¤ Ãø¸éÀÇ ¼º°ÝÀÌ °­ÇÏ´Ù. PostgreSQL 6.3 ÀÌ»óÀÇ ¹öÀü¿¡¼­ Àڱ׸¶ÇÑ ÇÑ±Û »ç¿ë ¹®Á¦¸¦ »ìÆ캸ÀÚ.
    ù ¹ø° ³»¿ëÀº PostgreSQLÀ» ÄÄÆÄÀÏÇÏ°í ³ª¼­ psql¿¡¼­ ¡¬d ¸í·ÉÀ¸·Î º¸´Ï ÇÑ±Û Å×À̺í À̸§°ú Ä®·³ À̸§ÀÌ ±ú¾îÁ® º¸Àδٴ °ÍÀÌ´Ù. ÄÄÆÄÀϽà ./configure ÆÄÀÏ¿¡ ·ÎÄÉÀÏ °ü·Ã ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ÇÑ±Û »ç¿ëÀº MB=EUC_KRÀ» Makefile.custom ÆÄÀÏ¿¡ Àû¾îÁÖ´Â °Í¸¸À¸·Î ÃæºÐÇÏ´Ù.
    µÎ ¹ø° ³»¿ëÀº psql¿¡¼­ ¡¬d Å×À̺í À̸§°ú °°ÀÌ »ç¿ëÇßÀ» ¶§, Å×À̺í À̸§¿¡ ÇØ´çÇÏ´Â Å×À̺íÀÌ ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í Ãâ·ÂµÇÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ÀÌ ¹®Á¦´Â ¡¬d "ÇÑ±Û Å×À̺í À̸§"°ú °°ÀÌ »ç¿ëÇϸé ÇØ°áµÈ´Ù. psqlÀº ³»ºÎÀûÀ¸·Î ¡¬d ´ÙÀ½ÀÇ Å×ÀÌºí ¸í¿¡¼­ ""°¡ ³ª¿À¸é ±×´ë·Î »ç¿ëÇÏÁö¸¸, ±×³É ¡¬d Å×À̺í°ú °°ÀÌ ÀÎ¿ë ±¸¹®ÀÌ ¾øÀ¸¸é ´ÙÁß ¹ÙÀÌÆ® ȯ°æÀ» °í·ÁÇÏÁö ¾Ê°í, ¿µ¹® ´ë¹®ÀÚ°¡ ³ª¿À¸é ¸ðµÎ ¼Ò¹®ÀÚ·Î ¹Ù²Ù¾î ¹ö¸®±â ¶§¹®ÀÌ´Ù. ÀÎ¿ë ºÎÈ£¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Á¤¼®À̱ä ÇÏÁö¸¸ ºÒÆíÇÏ´Ù°í »ý°¢µÇ¸é postgresql-6.3.2/src/bin/psql/psql.c¿¡¼­ 609¿¡¼­ 612ÁÙÀ» ÇѱÛÀÏ °æ¿ì µÎ ¹ø° ¹ÙÀÌÆ®¸¦ ¼Ò¹®ÀÚ·Î º¯°æÇÏÁö ¾Êµµ·Ï ¼öÁ¤ÇÏ¸é µÈ´Ù.

 

 

pg_class - °ü°è(¶Ç´Â °´Ã¼)¿¡ ´ëÇÑ Á¾ÇÕÀûÀÎ Á¤º¸

    pg_class Ä«Å»·Î±×´Â ½Ã½ºÅÛ¿¡¼­ °ü°è¿¡ ´ëÇÑ Á¾ÇÕÀûÀÎ Á¤º¸¸¦ ´ã°í ÀÖ´Ù. Áï, »ç¿ëÀÚ°¡ »ý¼ºÇÑ Å×À̺í, ºä µîÀÇ À̸§°ú ¼ÒÀ¯ÀÚ´Â ´©±¸À̸ç, Æ©ÇÃ, ¼Ó¼ºÀº ¸î °³ÀÎÁö µî¿¡ ´ëÇÑ ³»¿ëÀ» ´Ù·ç°í ÀÖ´Ù. ÀÌÁß¿¡¼­ ¸î °¡Áö Áß¿äÇÑ Ä®·³Àº ´ÙÀ½°ú °°´Ù.
     

    À̸§

    ŸÀÔ

    ¼³¸í

    relname

    NameData

    °ü°è(¶Ç´Â Å×À̺í)ÀÇ À̸§

    relowner

    oid

    °ü°èÀÇ ¼ÒÀ¯ÀÚÀÇ UNIX ½Ã½ºÅÛ ID

    relnatts

    int2

    Ä÷³ÀÇ °³¼ö

 

    ÀÏ¹Ý Å×ÀÌºí¿¡ ´ëÇØ ÁúÀǸ¦ ÇϵíÀÌ pg_class¿¡ ´ëÇؼ­µµ µ¿ÀÏÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù. Å×À̺íÀ» °£´ÜÇÏ°Ô ¸¸µé°í µ¥ÀÌÅ͸¦ ¾à°£ ÀÔ·ÂÇÑ ´ÙÀ½ ÁúÀǸ¦ Çغ¸ÀÚ.

    create table ȸ¿ø (À̸§ text, ÀüÈ­¹øÈ£ text, ÁÖ¼Ò text, ³ªÀÌ int);
    select relname, relowner, relnatts from pg_class where relname = 'ȸ¿ø';

    relname|relowner|relnatts
    ------+------+------
    ȸ¿ø     |       500|        4

    ȸ¿ø Å×À̺íÀÇ ¼ÒÀ¯ÀÚ´Â UNIX ID 500¹øÀÌ°í ¼Ó¼ºÀÇ °³¼ö´Â 4°³¶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. Ä«Å»·Î±×¿¡ ´ëÇÑ °»½ÅÀº ÇöÀç±îÁöÀÇ ¹öÀü¿¡¼­´Â ¾à°£ ºÒ¾ÈÇÑ Ãø¸éÀÌ ÀÖ´Ù. Áï, ¾î¶² ƯÁ¤ÇÑ Ä«Å»·Î±×¿¡¼­ A¶ó´Â Ŭ·¡½º¸¦ »èÁ¦Çϸé ÀÌÈÄ¿¡ A¶ó´Â À̸§ÀÇ Å¬·¡½º¸¦ »ý¼ºÇÏÁö ¸øÇÏ´Â °æ¿ì°¡ °¡²û ÀÖ´Ù. ´ÙÀ½°ú °°Àº ÁúÀǸ¦ »ç¿ëÇϸé óÀ½¿¡´Â Àß µÇ´Â °Í °°Áö¸¸ ³ªÁß¿¡ ¹®Á¦°¡ »ý±ä´Ù.

    delete from pg_class where relname = 'ȸ¿ø';
    create table ȸ¿ø (À̸§ text, ÀüÈ­¹øÈ£ text, ÁÖ¼Ò text, ³ªÀÌ int);

    ERROR: cannot create ȸ¿ø

    pg_class¸¦ Á÷Á¢ °»½ÅÇϸé pg_classÀÇ ³»¿ë¸¸ °»½ÅµÇ°í, °ü·ÃµÈ pg_attribute¸¦ ºñ·ÔÇÑ ¿©·¯ Ŭ·¡½ºµéÀº °»½ÅµÇÁö ¾Ê¾Æ¼­ »ý±â´Â ¹®Á¦·Î º¸ÀδÙ.

     

pg_attribute - Ä÷³¿¡ ´ëÇÑ Á¤º¸

 

    À̸§

    ŸÀÔ

    ¼³¸í

    attname

    NameData

    Ä÷³ À̸§

    attlen

    int2

    Ä÷³ÀÇ ¹ÙÀÌÆ® ±æÀÌ, °¡º¯ ±æÀÌ´Â -1

    attnum

    int2

    Ä÷³ ¹øÈ£, Å×ÀÌºí¿¡¼­ Ä÷³Àº 1ºÎÅÍ ½ÃÀÛ


    create table ȸ¿ø2 (À̸§ text, ÀüÈ­¹øÈ£ text, ÁÖ¼Ò text, ³ªÀÌ int);
    select attname, attlen, attnum from pg_attribute where attname = 'ÀüÈ­¹øÈ£';

    attname|attlen|attnum
    ------+----+-----
    ÀüÈ­¹øÈ£|    -1|       2

    ȸ¿ø2 Å×ÀÌºí¿¡¼­ ÀüÈ­¹øÈ£ Ä÷³Àº Å×ÀÌºí ³»¿¡¼­ µÎ ¹ø°¿¡ À§Ä¡ÇÏ°í, ¹ÙÀÌÆ® ±æÀÌ´Â °¡º¯À̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

     

pg_database - µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Á¤º¸

    ½Ã½ºÅÛ¿¡ Á¸ÀçÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ °£´ÜÇÑ Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù.
     

    À̸§

    ŸÀÔ

    ¼³¸í

    datname

    NameData

    µ¥ÀÌÅͺ£À̽º À̸§

    datdba

    oid

    ÇØ´ç µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚÀÇ UNIX ½Ã½ºÅÛ ID

    text

    datpath

    µ¥ÀÌÅͺ£À̽º µð·ºÅ丮 $PGDATA¸¦ ±âÁØ


    select * from pg_database;

    datname |datdba|datpath
    -------+-----+-------

    template1|    501|template1
    test         |    501|test
    mydb      |    500|mydb

     

pg_group - ±×·ìº° »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸

 

    À̸§

    ŸÀÔ

    ¼³¸í

    groname

    NameData

    ±×·ì À̸§

    grosysid

    int2

    ±×·ìÀÇ UNIX ±×·ì ID

    int2

    grolist[]

    ±×·ì ȸ¿øµéÀÇ UNIX »ç¿ëÀÚ IDÀÇ ¸ñ·Ï


    UNIX ½ºÅ¸ÀÏÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡µµ ±×·ìº° »ç¿ëÀÚ °³³äÀÌ Àû¿ëµÇµíÀÌ, PsotgreSQL µ¥ÀÌÅͺ£À̽º ½Ã½ºÅÛ¿¡µµ ¸¶Âù°¡ÁöÀÌ´Ù. ÀϹÝÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º¿¡ ´Ù¾çÇÑ »ç¿ëÀÚµéÀÌ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¹Ç·Î, »ç¿ëÀÚÀÇ ºÎ¼­³ª ¾÷¹« ¼º°Ý¿¡ µû¶ó ±×·ìÀ» ³ª´©¾î ÁÖ¾î, ±ÇÇÑ ¼³Á¤À» µû·Î ÇÒ ¼ö ÀÖ´Ù. Áï, ±ÇÇÑÀ» ºÎ¿©(grant)ÇÒ ¶§ ±×·ì ID°¡ ¿ä±äÇÏ°Ô »ç¿ëµÈ´Ù. ¿©±â¼­´Â users¶ó´Â ±×·ìÀ» ¸¸µé¾î ¸î¸î »ç¿ëÀÚ¸¦ µî·ÏÇÏ°í, ȸ¿ø2ÇÏ´Â Å×À̺íÀÇ »ç¿ë±ÇÀ» ÀÌµé »ç¿ëÀÚ¿¡°Ô Çã¿ëÇÑ´Ù.

    insert into pg_group values ('users', 100, '{500, 501, 506, 510}');
    grant all on ȸ¿ø2 to group users;

    500, 501 µîÀÇ ¼ýÀÚ´Â UNIX »ç¿ëÀÚ IDÀÌ°í, 100Àº ±×·ì IDÀÌ´Ù. À̵éÀº °¢°¢ /etc/passwd¿Í /etc/groupÀÇ °ü·Ã ³»¿ë¿¡ ÇØ´çÇÑ´Ù.

     

pg_shadow - À¯È¿ÇÑ »ç¿ëÀÚ¿Í ±× Çã¿ë ±ÇÇÑ

 

    À̸§

    ŸÀÔ

    ¼³¸í

    usename

    NameData

    »ç¿ëÀÚÀÇ À̸§

    usesysid

    int2

    »ç¿ëÀÚÀÇ UNIX »ç¿ëÀÚ ID

    bool

    usecreatedb

    »ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé ¼ö ÀÖ´Â °¡ÀÇ ¿©ºÎ

    bool

    usetrace

    »ç¿ëÀÚ°¡ ÃßÀû Ç÷¡±×¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Â °¡ÀÇ ¿©ºÎ

    bool

    usesuper

    »ç¿ëÀÚ°¡ postgres ¼öÆÛÀ¯Àú°¡ µÉ ¼ö Àִ°¡ÀÇ ¿©ºÎ

    bool

    usecatupd

    »ç¿ëÀÚ°¡ Ä«Å»·Î±×¸¦ °»½ÅÇÒ ¼ö Àִ°¡ÀÇ ¿©ºÎ


    select * from pg_shadow where usename = 'hoon';

    usename|usesysid|usecreatedb|usetrace|usesuper|usecatupd|passwd|valuntil
    -------+------+---------+-------+------+--------+-----+-----
    hoon      |          500|t     |t         |t           |t         |           |

    hoonÀ̶ó´Â »ç¿ëÀÚ´Â UNIX »ç¿ëÀÚ 500¹øÀÌ°í, µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ°í, ÃßÀû Ç÷¡±×¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ¸¸ç, ´Ù¸¥ »ç¿ëÀÚ¸¦ µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ·Î Ãß°¡ÇÒ ¼ö ÀÖ´Â ¼öÆÛ À¯Àú ±ÇÇѵµ ÀÖÀ¸¸ç, Ä«Å»·Î±×¸¦ »ý»êÇÒ ¼ö ÀÖ´Â ±ÇÇѵµ ÀÖ´Ù. ÀÌ°ÍÀº postgres »ç¿ëÀÚ°¡ adduser·Î »ç¿ëÀÚ¸¦ Ãʱ⠻ý¼ºÇÒ ¶§ ¸ðµÎ yes·Î ÇßÀ» °æ¿ìÀÌ´Ù.

    update pg_shadow set usecatupd = 'f' where usename = 'hoon';
    UPDATE 1
    update pg_shadow set usecatupd = 't' where usename = 'hoon';
    ERROR: pg_shadow: Permission denied.

    Ä«Å»·Î±× °»½Å ±ÇÇÑÀ» ´Ù½Ã ºÎ¿©ÇÏ·Á¸é, postgres ¼öÆÛ »ç¿ëÀÚ·Î µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ¿© ÇØ´ç pg_shadow Ä÷³À» °»½ÅÇÏ¸é µÈ´Ù.

     

pg_listener - »óȲÀ» ûÃëÇÏ°í ÀÖ´Â ÇÁ·Î¼¼½º

 

    À̸§

    ŸÀÔ

    ¼³¸í

    relname

    NameData

    µ¿½Ã¼º ÅëÁö¸¦ Èñ¸ÁÇϴ Ŭ·¡½ºÀÇ À̸§

    listenerpid

    int4

    µ¿½Ã¼º ÅëÁö¸¦ ±â´Ù¸®°í ÀÖ´Â, ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¼­¹ö ÇÁ·Î¼¼½º ID


    PostgreSQL ¼­¹ö¿¡´Â µ¿½Ã¼º ÅëÁö¿Í ûÃë¶ó´Â ±â´ÉÀÌ ÀÖ´Ù. º°´Þ¸® Áß¿äÇÑ °ÍÀº ¾Æ´Ï°í, ÇÁ·Î¼¼½º »çÀÌÀÇ µ¿½Ã¼ºÀ» Á» ´õ È®½ÇÈ÷ Çϱâ À§ÇØ Áö¿øÇÏ´Â ±â´ÉÀÌ´Ù. µ¿ÀÏÇÑ Å×ÀÌºí »ó¿¡¼­ ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ¸ÕÀú ÀÛ¾÷À» ½ÃÀÛÇϱâ Àü¿¡ notify¸¦ ÇÏ°í, ´ÙÀ½¿¡ µ¿ÀÏÇÑ Å×À̺íÀ» Á¢±ÙÇÏ·Á´Â ÇÁ·Î¼¼½º°¡ listenÀ» Çϸé, listenÇÏ´Â ÇÁ·Î¼¼½º´Â ÇØ´ç Å×ÀÌºí¿¡¼­ notifyÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½º¿¡°Ô¼­ µ¿½Ã¼º ÅëÁö¸¦ ¹Þ°Ô µÈ´Ù. ÀÌ ¶§ listenÇÏ´Â ÇÁ·Î¼¼½º¿¡ ´ëÇÑ Á¤º¸°¡ pg_listener Ä«Å»·Î±×¿¡ Á¢¼öµÇ´Â °ÍÀÌ´Ù.

    select * from pg_listener;

    relname|listenerpid|notification
    ------+--------+--------
    ȸ¿ø2    |      17816|  0

    Áö±Ý±îÁö Ä«Å»·Î±×¿¡ ´ëÇÑ Á¤º¸¸¦ »ìÆ캸¾Ò´Ù. ÀÌ¿Ü¿¡µµ ½Ã½ºÅÛ Ä«Å»·Î±×°¡ ¿©·¯ °³°¡ ÀÖÁö¸¸ ½Ç ¿ëµµ´Â ³ôÁö ¾Ê°í, PostgreSQL ½Ã½ºÅÛÀÌ ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹´Ù. µÉ ¼ö ÀÖÀ¸¸é Á¤½Ä ¸í·ÉÀ» »ç¿ëÇϵµ·Ï ÇÏ°í, Ä«Å»·Î±×¿¡ ´ëÇÑ °»½ÅÀº ²À ÇÊ¿äÇÑ °æ¿ì¿¡ ºÎºÐÀûÀ¸·Î »ç¿ëÇϱ⠹ٶõ´Ù. ¾Õ¿¡¼­µµ ¼³¸íÇßµíÀÌ, Ä«Å»·Î±×¿¡ ´ëÇÑ ºÎºÐÀûÀÎ °»½ÅÀº Àüü Ä«Å»·Î±×ÀÇ À¯±âÀûÀÎ °ü°è¿¡ ÁÁÁö ¾ÊÀº ¿µÇâÀ» ¹ÌÄ¥ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

     

´Ù¸¥ RDBMS·ÎÀÇ µ¥ÀÌÅÍ ÀÌÀü

    µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ´Ùº¸¸é ´Ù¸¥ µ¥ÀÌÅͺ£À̽º ¼­¹ö¿¡ µ¥ÀÌÅ͸¦ ÀÌÀüÇÏ¿©¾ß ÇÒ °æ¿ì°¡ °¡²û »ý±ä´Ù. ±â¾÷ȯ°æ¿¡¼­ óÀ½¿¡´Â ¼Ò±Ô¸ð µ¥ÀÌÅͺ£À̽º¸¦ ±¸ÃàÇÏ´Ù°¡ µ¥ÀÌÅͺ£À̽º°¡ ´ë±Ô¸ð·Î µÇ¾î¼­ ÀÌÀüÀÇ ¹æ½ÄÀ¸·Î °ü¸®ÇϱⰡ °ï¶õÇØÁö°Å³ª ´Ù¸¥ ±â¾îÀÌ ´Ù¸¥ µ¥ÀÌÅͺ£À̽º¸¦ »ç¿ëÇÏ°í À־ ȣȯÀ» À§ÇØ ¼­·Î ¸ÂÃß¾î¾ß ÇÒ Çʿ伺ÀÌ ÀÖÀ» ¶§, µ¥ÀÌÅÍÀÇ ÀÌÀüÀÌ ¹®Á¦°¡ µÈ´Ù. ±×¸®°í µ¿ÀÏÇÑ SQL ¼­¹ö¶ó°í ÇÏ´õ¶óµµ ¹öÀüÀÌ °»½ÅµÊ¿¡ µû¶ó µ¥ÀÌÅÍÀÇ Çü½ÄÀÌ ¹Ù²ð ¶§µµ ÀÖ´Ù. ¾î´À SQL ¼­¹ö³ª ¸¶Âù°¡ÁöÀÌ°ÚÁö¸¸ ±âº»ÀûÀ¸·Î µ¥ÀÌÅ͸¦ SQL ±¸¹®À¸·Î ÃàÃâÇÒ ¼ö ÀÖ´Â À¯Æ¿¸®Æ¼¸¦ Á¦°øÇÏ°í ÀÖ´Ù. PostgreSQL¿¡¼­´Â pg_dump°¡ ±×°ÍÀÌ´Ù. pg_dump´Â PostgreSQLÀÇ ¹°¸®ÀûÀÎ µ¥ÀÌÅͺ£À̽º¿¡¼­ ´Ù¾çÇÑ µ¥ÀÌÅ͸¦ ¾Æ½ºÅ° Çü½ÄÀÇ ÁúÀÇ(SQL¹®) ½ºÅ©¸³Æ®·Î ¸¸µé¾î ³½´Ù. µû¶ó¼­ ÀÌ°ÍÀ» µ¿ÀÏÇÑ PostgreSQLÀÇ ´Ù¸¥ ¹öÀüÀ¸·Î ¿Å±æ ¼ö°¡ ÀÖ´Ù. ´Ù¸¥ SQL ¼­¹ö·Î ¿Å±æ ¶§¿¡´Â SQL ¹®¹ýÀÌ ´Ù¸¦ ¼ö ÀÖÀ¸¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ·² ¶§´Â ÇØ´ç ½ºÅ©¸³Æ®¸¦ ÀûÀýÈ÷ ÆíÁýÇÏ¿© ¿Å°ÜÁÖ¾î¾ß ÇÑ´Ù. pg_dump´Â ¸î °¡Áö ÇÑ°è°¡ ÀÖ´Ù. Áï, »ç¿ëÀÚ Á¤ÀÇ ±ÔÄ¢°ú ºä´Â ÀÌÇظ¦ ÇÏÁö ¸øÇØ, ¹ÛÀ¸·Î ÃàÃâÇÒ ¼ö ¾øÀ¸¸ç, ½Ã½ºÅÛ Ä«Å»·Î±×¿¡ ÀúÀåµÇ´Â ¸î¸î À妽ºµµ ¸¶Âù°¡Áö·Î ²ôÁý¾î ³¾ ¼ö ¾ø´Ù. ¾Æ¿ï·¯ °Å´ë °´Ã¼(large objects)µµ °¡´ÉÇÏÁö ¾ÊÀ¸¹Ç·Î µ¥ÀÌÅ͸¦ ÀÌÀüÇÒ ¶§ ÁÖÀÇÇØ¾ß ÇÑ´Ù. µû¶ó¼­ ÁÖ·Î ÀÌÀü °¡´ÉÇÑ µ¥ÀÌÅ͸¦ Å×À̺íÀ̶ó°í º¼ ¼öµµ ÀÖ´Ù.
    µ¿ÀÏÇÑ PostgreSQLÀÇ »óÀ§ ¹öÀüÀ¸·Î´Â »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔ, ÇÔ¼ö, Å×À̺í, À妽º, Àüü ÇÔ¼ö, ¿¬»êÀÚ µîµµ ÀÌÀüÇÒ ¼ö ÀÖÁö¸¸, ´Ù¸¥ SQL ¼­¹ö·Î µ¥ÀÌÅ͸¦ ÀÌÀüÇÒ ¶§¿¡´Â ½Ö¹æÀÇ SQL ¼­¹ö È®Àå ±â´ÉÀº Á¦´ë·Î »ì¸± ¼ö ¾øÀ¸¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù.
    °á±¹, Ÿ SQL ¼­¹ö·Î Â÷ÈÄ¿¡ µ¥ÀÌÅ͸¦ ÀÌÀüÇÒ °èȹÀ̶ó¸é, PostgreSQLÀÇ È®Àå ±â´É(»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö, ŸÀÔ, À妽º, Àüü ÇÔ¼ö, ¿¬»êÀÚ µî)À» ºñ·ÔÇÑ, ȣȯµÇÁö ¾Ê´Â SQL¹®Àº ¹Ì¸®ºÎÅÍ »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. SQL92, SQL3 µî°ú °°Àº ´Ù¾çÇÑ Ç¥ÁصéÀÌ ÀÖÀ¸¹Ç·Î ´ëºÎºÐÀÇ SQL ¼­¹ö¿¡¼­ Áö¿øÇϴ ǥÁØÀ» Áß½ÉÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÌ Â÷ÈÄÀÇ µ¥ÀÌÅÍ ÀÌÀüÀ» À§ÇÑ ÁÁÀº ¹æ¹ýÀÌ´Ù.

     

PostgreSQLÀÇ ¾ÈÁ¤¼ºÀº ¾î´À ¼öÁØ?

    °¡²û PostgreSQLÀÇ ¾ÈÁ¤¼º¿¡ ´ëÇÑ Àǹ®À» Á¦±âÇÏ´Â ºÐµéÀ» º¸¾Æ¿Ô´Ù. ÇÊÀÚµµ Áö±Ý±îÁö PostgreSQLÀ» »ç¿ëÇϸ鼭 ºÎºÐÀûÀ¸·Î ºÒ¾ÈÇÑ ¸éÀÌ ÀÖ´Ù´Â °ÍÀ» ÀÎÁ¤ÇÏÁö ¾ÊÀ» ¼ö ¾ø´Ù. ƯÈ÷ °¡²û¾¿ psql¿¡¼­ ºÎÀû´çÇÑ ÁúÀǸ¦ ¼­¹ö¿¡°Ô Àü´ÞÇÏ¿´À» °æ¿ì, ¼­¹ö¿ÍÀÇ Á¢¼ÓÀÌ ²÷¾îÁö´Â °æ¿ì°¡ ÀÖ¾ú´Ù. ±×¸®°í, ¼ö¸¹Àº »ç¿ëÀÚ°¡ µ¿½Ã¿¡ PostgreSQL ¼­¹ö¿¡ Á¢¼ÓÇÒ ¶§ ºÒ¾ÈÇÏ´Ù´Â À̾߱⸦ ¾î´À ¾÷ü¿¡ ±Ù¹«ÇÏ´Â ºÐÀ¸·ÎºÎÅÍ À̾߱⸦ µè°í ÀÖ´Ù.
    »ç½Ç PostgreSQLÀº »ç¿ëÀÚÀÇ ½Ç¼ö¸¦ °¨ÁöÇÏ°í º¸È£ÇÒ ¸¸Å­ ÃæºÐÈ÷ °í·ÁµÇ¾î ÀÖÁö ¾Ê´Ù. PostgreSQL ¸Å´º¾óÀ» Á¢Çغ¸¸é ±×·± ¼³¸íÀÌ ÀÚÁÖ ³ª¿Â´Ù. Áï, 'ÀÌ·¯ ÀÌ·¯ÇÑ ±â´ÉÀÌ ÀÖÁö¸¸ ¾ÆÁ÷ ÃæºÐÈ÷ Å×½ºÆ®µÇÁö ¾ÊÀº °ÍÀÌ´Ï ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù', '¾î¶² ±â´ÉÀº Á¦°øÇÏÁö¸¸, ÀÌ¿¡ ´ëÇÑ ¿¡·¯´Â SQL ¼­¹ö¿¡¼­ ÃæºÐÈ÷ °¨ÁöÇÏÁö ¸øÇÑ´Ù. »ç¿ëÀÚ°¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù.'´Â µîÀÇ À̾߱Ⱑ ±×°ÍÀÌ´Ù. »ç¿ëÀÚ°¡ ¿Ã¹Ù·Î »ç¿ëÇϱ⸸Çϸé PostgreSQLÀº ¾ÆÁÖ ¸ÚÁö°Ô µ¿ÀÛÇÏÁö¸¸, ¾ðÁ¦³ª »ç¿ëÀÚ°¡ ½Ç¼ö¸¦ ÇÏÁö ¾ÊÀ¸¸®¶õ º¸ÀåÀ» ¸øÇÑ´Ù. ÀÌ·¯ÇÑ Á¡ÀÌ PostgreSQLÀÇ ´ÜÁ¡ÀÌ ¾Æ´Ò±î »ý°¢ÇÑ´Ù. µû¶ó¼­ ÀÌ°ÍÀº 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ÀÇ ¼Ò½º´Â ½Ã°£ÀÌ ³ª¸é ÇÊÀÚÀÇ È¨ÆäÀÌÁö¿¡ ¾÷·Îµå Çϵµ·Ï ÇÏ°Ú´Ù. ȨÆäÀÌÁö°¡ ÀÚÁÖ ¹Ù²î¾î¼­ ¾Ö½á ã¾Æ¿Â µ¶ÀÚ ºÐµé¿¡°Ô ¹Ì¾ÈÇÑ ¸¶À½ÀÌ´Ù. ¸®´ª½º¿ùµå Áö¸éÀ» ÅëÇؼ­ °¡²û Àλ縦 µå¸± ¼ö ÀÖÀ» °Í °°´Ù.




¡ã top

homeÀ¸·Î...