[[TableOfContents]] ÀÌ ¹®¼­´Â [Gentoo]¿¡¼­ [PostgreSQL]À» ¼³Ä¡Çϱâ À§ÇÑ ¹®¼­ÀÔ´Ï´Ù. http://www.gentoo.org/doc/en/postgres-howto.xml À» ¿øº»À¸·Î ÇÏ¿© ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. == ¼Ò°³ == === PostgreSQL ¼Ò°³ === ´ëºÎºÐÀÇ °³¹ßÀÚ¿Í ´Ù¸¥ µ¥ÀÌÅͺ£À̽º ¼Ö·ç¼Çµé¿¡ ´ëÇÏ¿© ´ëÈ­¸¦ ³ª´©¾î º¸¸é, µÎ °¡Áö Á¾·ùÀÇ µ¥ÀÌÅͺ£À̽º°¡ ÁÖ·Î ´ë´äÀ¸·Î ³ª¿É´Ï´Ù. Çϳª´Â [MySQL]ÀÌ°í ´Ù¸¥ Çϳª´Â ÀÌ ¹®¼­¿¡¼­ ´Ù·ç°íÀÚ ÇÏ´Â [PostgreSQL]ÀÔ´Ï´Ù. ¼­·Î°£ÀÇ Àå´ÜÁ¡¿¡ ´ëÇؼ­ ¿À·£ ½Ã°£µ¿¾È ³íÀïÀÌ ÀÖ¾î ¿ÔÁö¸¸, PostgreSQLÀÌ MySQLº¸´Ù ÁøÁ¤ÇÑ °ü°èÇü µ¥ÀÌÅͺ£À̽º ±¸Á¶¿¡´Â ´õ È®°íÇÏ´Ù´Â ¸»ÀÌ ÀÖ½À´Ï´Ù. FOREIGN KEY¿Í °°Àº ´ëºÎºÐÀÇ ±âº»ÀûÀΠƯ¡µéÀÌ MySQL 5¿¡¼­ Ãß°¡µÇ¾ú½À´Ï´Ù. ±×·¯³ª ¾î¶² »óȲÀÌ µÇµç, ÀÌ ¹®¼­´Â ¿©·¯ºÐÀÌ PostgreSQLÀ» »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽º·Î ¼±ÅÃÇß´Ù°í °¡Á¤ÇÕ´Ï´Ù. óÀ½ ÇØ¾ß ÇÒ ÀÏÀº emerge °úÁ¤À» ½ÃÀÛÇÏ´Â °ÍÀÔ´Ï´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼­´Â ±âº» ¼³Á¤ »Ó¸¸ ¾Æ´Ï¶ó emerge¸¦ ÅëÇÑ ¼³Ä¡ °úÁ¤À» ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. === PostgreSQL ¼³Ä¡Çϱâ === ½ÃÀÛÇÏ·Á¸é ¸ÕÀú PostgreSQL ÆÐÅ°Áö¸¦ emerge ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é ´ÙÀ½°ú °°Àº ÄÚµå·Î ¿É¼ÇÀÌ Á¦´ë·Î ¼³Á¤µÇ¾î ÀÖ´ÂÁö¸¦ ¸ÕÀú È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. || ÄÚµå ¸ñ·Ï 1.1: PostgreSQL ºôµå ¿É¼Ç È®ÀÎ || {{{ # emerge -pv postgresql These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild N ] dev-db/postgresql-8.0.4 -doc -kerberos +libg++ +nls +pam +perl -pg-hier -pg-intdatetime +python +readline (-selinux) +ssl -tcltk +xml2 +zlib 0 kB }}} ¿©±â ¼­·Î ´Ù¸¥ ºôµå ¿É¼ÇÀÌ ³ªÅ¸³»´Â °ÍÀÇ ¸ñ·ÏÀÌ ÀÖ½À´Ï´Ù. || USE Ç÷¡±× || ÀÇ¹Ì || || doc ||ÀÌ USE Ç÷¡±×´Â Ç¥ÁØ man ÆäÀÌÁöÀÇ ¿ÜºÎ ¹®¼­ ¼³Ä¡¸¦ ÄѰųª ²ü´Ï´Ù. °ø°£ÀÌ Àû°Å³ª ¹®¼­¸¦ ¾òÀ» ¼ö ÀÖ´Â ´Ù¸¥ ¹æ¹ý(¿Â¶óÀÎ µî)ÀÌ ÀÖÀ¸½Ã¸é ÀÌ°ÍÀ» ²ô½Ã¸é µË´Ï´Ù. || || kerberos ||µ¥ÀÌÅͺ£À̽º¿¡ ÀÌ ¿É¼ÇÀ» ÄѼ­ Á¢¼ÓÇϸé adminÀÌ µ¥ÀÌÅͺ£À̽º·ÎÀÇ »ç¿ëÀÚ/¼­ºñ½º¸¦ °ËÁõÇÒ ¶§, kerberos¸¦ »ç¿ëÇÏ´Â ¿É¼ÇÀ» °®½À´Ï´Ù. || || libg++ ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é PostgreSQLÀÇ C++ ¹ÙÀεùÀÌ ¼³Ä¡µË´Ï´Ù. C++ ÇÁ·Î±×·¡¸Ó°¡ ¿¬°áÇÒ ¼ö ÀÖ´Â libpq++°¡ ¼³Ä¡µË´Ï´Ù. || || nls ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é ¿µ¾î¸¦ »ç¿ëÇÏÁö ¾Ê´Â »ç¿ëÀÚ¸¦ À§ÇÏ¿© ¹ø¿ªµÈ ¹®ÀÚ¿­À» ¾µ ¼ö ÀÖ½À´Ï´Ù. || || pam ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖ°í, adminÀÌ PostgreSQL ¼³Á¤ ÆÄÀÏÀ» Á¦´ë·Î ¼³Á¤ÇÏ¸é »ç¿ëÀÚ/¼­ºñ½º´Â PAM(Pluggable Authentication Module)À» ÀÌ¿ëÇÏ¿© PostgreSQL¿¡ ·Î±×ÀÎ ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. || || perl ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é PostgreSQLÀÇ ÆÞ ¹ÙÀεùÀÌ ¼³Ä¡µË´Ï´Ù. || || pg-hier ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é ¿À¶óŬ µ¥ÀÌÅͺ£À̽ºÀÇ CONNECT ¹®¿¡¼­ º¼ ¼ö ÀÖ´Â °èÃþÀû ÁúÀǸ¦ ÄÑ´Â ÆÐÄ¡¸¦ Àû¿ëÇÏ°Ô µË´Ï´Ù. ¿À¶óŬ ÂüÁ¶ ¾È³»¼­¿¡ °èÃþÀû ÁúÀÇ¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸°¡ ÀÖ½À´Ï´Ù. || || pg-intdatetime ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é PostgreSQLÀº 64ºñÆ® Á¤¼ö ³¯Â¥ Çü½ÄÀ» Áö¿øÇÏ°Ô µË´Ï´Ù. || || python ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, PostgreSQLÀº ÆÄÀ̽㠹ÙÀεùÀ» ¼³Ä¡ÇÏ°Ô µË´Ï´Ù. || || readline ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, PostgreSQLÀº readline ½ºÅ¸ÀÏÀÇ ¸í·ÉÁÙ ÆíÁýÀ» Áö¿øÇÏ°Ô µË´Ï´Ù. ÀÌ°ÍÀº ¸í·É È÷½ºÅ丮¿Í isearch ±â´ÉÀ» Æ÷ÇÔÇÕ´Ï´Ù. || || selinux ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, PostgreSQLÀÇ selinux Á¤Ã¥ÀÌ ¼³Ä¡ µË´Ï´Ù. || || ssl || ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, PostgreSQLÀº OpenSSL ¶óÀ̺귯¸®·Î PostgreSQL Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö »çÀÌÀÇ Æ®·¡ÇÈÀ» ¾ÏȣȭÇÏ°Ô µË´Ï´Ù. || || tcltk ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, PostgreSQLÀº tcl/tk ¹ÙÀεùÀ» ¼³Ä¡ÇÏ°Ô µË´Ï´Ù. || || xml2 ||ÀÌ ¿É¼ÇÀÌ ÄÑÁ® ÀÖÀ¸¸é, XPATH ½ºÅ¸ÀÏ xml Áö¿øÀÌ ¼³Ä¡µÇ°Ô µË´Ï´Ù. PostgreSQLÀÇ xml Áö¿ø¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â PostgreSQL°ú XML¿¡¼­ ãÀ¸½Ç ¼ö ÀÖ½À´Ï´Ù. || || zlib ||ÀÌ°ÍÀº PostgreSQL ÀÚü¿¡¼­´Â »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù¸¸ pg_dump¿¡¼­ »ý¼ºÇÏ´Â ´ýÇÁ¸¦ ¾ÐÃàÇÕ´Ï´Ù. || ||'''ÁÖÀÇ:''' pg-hier ÆÐÄ¡ ÀÛ¼ºÀÚ´Â ÆÐÄ¡ ¾÷¹«¸¦ Áß´ÜÇÏ¿´À¸¸ç, ´ÙÀ½ ¹öÀü¿¡¼­´Â »èÁ¦µÉ °ÍÀÔ´Ï´Ù. || PostgreSQLÀ» ¿©·¯ºÐÀÇ ÇÊ¿ä¿¡ µû¶ó¼­ Ä¿½ºÅ͸¶ÀÌ¡ ÇÏ¿´´Ù¸é °è¼Ó ÁøÇàÇÏ¿© emerge¸¦ ½ÃÀÛÇϽʽÿÀ. || ÄÚµå ¸ñ·Ï 1.2: PostgreSQL emerge Çϱâ || {{{ # emerge postgresql (Output shortened) >>> /usr/lib/libecpg.so.5 -> libecpg.so.5.0 >>> /usr/bin/postmaster -> postgres * Make sure the postgres user in /etc/passwd has an account setup with /bin/bash as the shell * * Execute the following command * emerge --config =postgresql-8.0.4 * to setup the initial database environment. * >>> Regenerating /etc/ld.so.cache... >>> dev-db/postgresql-8.0.4 merged. }}} einfo Ãâ·Â¿¡¼­ ³ªÅ¸³µµíÀÌ, ¼³Ä¡ ÈÄ¿¡ ÇØ¾ß ÇÒ ÀÛ¾÷µéÀÌ ÀÖ½À´Ï´Ù. ´ÙÀ½ Àå¿¡¼­ PostgreSQLÀÇ ½ÇÁ¦ ¼³Á¤¿¡ ´ëÇؼ­ »ìÆ캼 °ÍÀÔ´Ï´Ù. == PostgreSQL ¼³Á¤Çϱâ == === Ãʱ⠵¥ÀÌÅͺ£À̽º ȯ°æ ¼³Á¤Çϱâ === ÀÌÀüÀÇ emerge Ãâ·Â¿¡¼­ ¾Ë·ÁÁØ ´ë·Î, Ãʱ⠵¥ÀÌÅͺ£À̽º ȯ°æÀ» ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª ÀÌ°ÍÀ» Çϱâ Àü¿¡ ÇÑ °¡Áö °í·ÁÇØ¾ß ÇÒ Á¡ÀÌ ÀÖ½À´Ï´Ù. MySQL °°Àº °Í°ú´Â ´Ù¸£°Ô, PostgreSQLÀÇ "root" Æнº¿öµå´Â ½ÇÁ¦ »ç¿ëÀÚÀÇ Æнº¿öµå¶ó´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª ebuild°¡ »ý¼ºÇÑ »ç¿ëÀÚ´Â Æнº¿öµå°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. µû¶ó¼­ ½ÃÀÛÇϱâ Àü¿¡ postgres »ç¿ëÀÚÀÇ Æнº¿öµå¸¦ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. || ÄÚµå ¸ñ·Ï 2.1: Æнº¿öµå ¼³Á¤ || {{{ # passwd postgres New UNIX password: Retype new UNIX password: passwd: password updated successfully }}} ÀÌÁ¦ ¼³Á¤ÀÌ µÇ¾ú°í, Ãʱ⠵¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. || ÄÚµå ¸ñ·Ï 2.2: emerge --config·Î µ¥ÀÌÅͺ£À̽º ȯ°æ ¼³Á¤Çϱâ || {{{ # emerge --config =postgresql-8.0.4 Configuring pkg... * Creating the data directory ... * Initializing the database ... The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale C. fixing permissions on existing directory /var/lib/postgresql/data ... ok creating directory /var/lib/postgresql/data/global ... ok creating directory /var/lib/postgresql/data/pg_xlog ... ok creating directory /var/lib/postgresql/data/pg_xlog/archive_status ... ok creating directory /var/lib/postgresql/data/pg_clog ... ok creating directory /var/lib/postgresql/data/pg_subtrans ... ok creating directory /var/lib/postgresql/data/base ... ok creating directory /var/lib/postgresql/data/base/1 ... ok creating directory /var/lib/postgresql/data/pg_tblspc ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 1000 creating configuration files ... ok creating template1 database in /var/lib/postgresql/data/base/1 ... ok initializing pg_shadow ... ok enabling unlimited row size for system tables ... ok initializing pg_depend ... ok creating system views ... ok loading pg_description ... ok creating conversions ... ok setting privileges on built-in objects ... ok creating information schema ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the -A option the next time you run initdb. Success. You can now start the database server using: /usr/bin/postmaster -D /var/lib/postgresql/data or /usr/bin/pg_ctl -D /var/lib/postgresql/data -l logfile start * * You can use /etc/init.d/postgresql script to run PostgreSQL instead of pg_ctl. * }}} ÀÌÁ¦ Ãʱ⠵¥ÀÌÅͺ£À̽º°¡ ¼³Á¤µÇ¾ú½À´Ï´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼­´Â ¼³Ä¡¸¦ °ËÁõÇÏ°í µ¥ÀÌÅͺ£À̽º¿¡ Á¢±ÙÇÒ »ç¿ëÀÚ¸¦ ¼³Á¤ÇÏ´Â °ÍÀ» ÇÏ°Ú½À´Ï´Ù. === PostgreSQL µ¥ÀÌÅͺ£À̽º ¼³Á¤ === ÀÌÁ¦ PostgreSQLÀÌ ¼³Á¤µÇ¾ú½À´Ï´Ù. ÀÌÁ¦ ¼³Ä¡¸¦ °ËÁõÇØ º¸´Â °ÍÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù. ¸ÕÀú, ¼­ºñ½º°¡ Á¦´ë·Î ½ÃÀ۵ǴÂÁö È®ÀÎÇØ º¾½Ã´Ù. || ÄÚµå ¸ñ·Ï 2.3: PostgreSQL ¼­ºñ½º ½ÃÀÛÇϱâ || {{{ # /etc/init.d/postgresql start * Starting PostgreSQL ... [ ok ] }}} ÀÌ°ÍÀÌ Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÀÌ µÇ¸é, ºÎÆÃµÉ ¶§¸¶´Ù ½ÃÀÛÇÒ ¼ö ÀÖµµ·Ï ±âº» runlevel¿¡ Ãß°¡ÇØ ÁÖ´Â °ÍÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 2.4: ±âº» runlevel¿¡ Ãß°¡Çϱâ || {{{ # rc-update add postgresql default * postgresql added to runlevel default }}} ÀÌÁ¦ ¼­ºñ½º°¡ ½ÃÀ۵Ǿú°í µ¥ÀÌÅͺ£À̽º¸¦ °Ë»çÇØ º¼ ½Ã°£ÀÔ´Ï´Ù. ½ÃÀÛÇÏ·Á¸é createdb ¸í·ÉÀ» ½á¼­ test µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé¾î º¾½Ã´Ù. -U ¿É¼ÇÀ» ³Ñ°Ü¼­ »ç¿ëÀÚ À̸§(³Ñ±âÁö ¾ÊÀ¸¸é ±âº»°ªÀ¸·Î ÇöÀç »ç¿ëÀÚ À̸§ÀÌ µË´Ï´Ù)¸¦ Á¤ÇÏ°í, -W ¿É¼ÇÀ¸·Î ÀÌÀü¿¡ ¸¸µé¾ú´ø ¾ÏÈ£¸¦ ¿äûÇÕ´Ï´Ù. °á±¹ ¸¸µé°íÀÚ ÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡ À̸§À» Á¤ÇØ ÁÖ¾ú½À´Ï´Ù. || ÄÚµå ¸ñ·Ï 2.5: createdb·Î µ¥ÀÌÅͺ£À̽º »ý¼ºÇϱâ || {{{ $ createdb -U postgres -W test Password: CREATE DATABASE }}} µ¥ÀÌÅͺ£À̽º°¡ ¼º°øÀûÀ¸·Î ¸¸µé¾îÁ³À¸¸ç, µ¥ÀÌÅͺ£À̽º°¡ ±âº»ÀûÀÎ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´ÂÁö È®ÀÎÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. °è¼ÓÇؼ­ dropdb ¸í·ÉÀ¸·Î µ¥ÀÌÅͺ£À̽º¸¦ ¶³¾î¶ß¸®°í(Áö¿ö¹ö¸®°í) ´ÙÀ½¿¡ ´Ù½Ã ¾µ µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 2.6: dropdb·Î µ¥ÀÌÅͺ£À̽º ¶³¾î¶ß¸®±â || {{{ $ dropdb -U postgres -W test Password: DROP DATABASE }}} ÀÌÁ¦, postgres »ç¿ëÀÚ¸¸ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ºÐ¸íÈ÷ ´ÙÁß »ç¿ë ȯ°æÀº ¼³Á¤ÀÇ ÀÏÁ¾Àº ¾Æ´Õ´Ï´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼­ »ç¿ëÀÚ °èÁ¤¿¡ ´ëÇÑ °ÍÀ» »ìÆ캼 °ÍÀÔ´Ï´Ù. === µ¥ÀÌÅͺ£À̽º »ç¿ëÀÚ °èÁ¤ ¼³Á¤Çϱâ === ÀÌ¹Ì ¾ð±ÞÇßµíÀÌ, postgres »ç¿ëÀÚ·Î ·Î±×ÀÎ ÇØ¾ß ÇÑ´Ù´Â °ÍÀº ´ÙÁß »ç¿ëÀÚ È¯°æ¿¡¼­´Â ÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì¿¡ ´Ù¾çÇÑ »ç¿ëÀÚ¿Í ¼­ºñ½º°¡ ¼­¹ö¿¡ Á¢±ÙÇÒ °ÍÀÌ°í °¢°¢Àº ¼­·Î ´Ù¸¥ Æ۹̼ÇÀÌ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. µû¶ó¼­ ÀÌ°ÍÀ» ´Ù·ç·Á¸é createuser ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸í·ÉÀº ¸î¸î SQL ÁúÀǹ®À» ¼öÇàÇÏ´Â ´ë½Å¿¡ ¾µ ¼ö ÀÖ°í, adminÀÇ °üÁ¡¿¡¼­ ÈξÀ ´õ À¯¿¬ÇÕ´Ï´Ù. °è¼ÓÇؼ­ µÎ ¸íÀÇ »ç¿ëÀÚ, Áï ´Ù¸¥ »ç¿ëÀÚ¿Í °ü¸®ÀÚ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Â 'superuser'¿Í ÀÏ¹Ý »ç¿ëÀÚ¸¦ »ý¼ºÇÒ °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 2.7: superuser ¼³Á¤Çϱâ || {{{ (replace chris with the username you'd like to use) $ createuser -a -d -P -E -U postgres -W chris Enter password for new user: Enter it again: Password: CREATE USER }}} ÀÌÁ¦ superuser¸¦ »ý¼ºÇÏ¿´½À´Ï´Ù. ¸í·ÉÁÙ ¿É¼Ç -a´Â ´Ù¸¥ »ç¿ëÀÚ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ¶ó´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. -d´Â µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé ¼ö ÀÖ´Â »ç¿ëÀÚ¶ó´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. -P´Â ÀÌ »ç¿ëÀÚÀÇ ¾ÏÈ£¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖ°Ô ÇØ ÁÖ°í, -E´Â º¸¾È ¸ñÀûÀ» À§ÇÏ¿© ±×°ÍÀ» ¾ÏȣȭÇÕ´Ï´Ù. ÀÌÁ¦ ÀÏ¹Ý »ç¿ëÀÚ¸¦ ¼³Á¤Çϸ鼭 ÀÌ »õ·Î¿î »ç¿ëÀÚÀÇ Æ۹̼ÇÀ» °Ë»çÇØ º¾½Ã´Ù. || ÄÚµå ¸ñ·Ï 2.8: ÀÏ¹Ý »ç¿ëÀÚ ¼³Á¤Çϱâ || {{{ (replace chris with the username you've just created) $ createuser -A -D -P -E -U chris -W testuser Enter password for new user: Enter it again: Password: CREATE USER }}} ¼º°øÇß½À´Ï´Ù! »õ »ç¿ëÀÚ¸¦ ÀÌÀü¿¡ ¸¸µé¾ú´ø superuser¸¦ ÅëÇÏ¿© ¸¸µé¾ú½À´Ï´Ù. -A¿Í -D ¿É¼ÇÀº -a¿Í -dÀÇ ¹Ý´ë·Î½á, ´Ù¸¥ »ç¿ëÀÚ¿Í µ¥ÀÌÅͺ£À̽ºÀÇ »ç¿ëÀ» °ÅºÎÇÕ´Ï´Ù. ÀÌÁ¦ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ°¡ ¸¸µé¾îÁ³°í »õ·Î¿î µ¥ÀÌÅͺ£À̽º°¡ ¸¸µé¾îÁ³À¸¹Ç·Î ´ÙÀ½ Àå¿¡¼­´Â »õ µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µå´Â °ÍÀ» »ìÆ캸°Ú½À´Ï´Ù. == PostgreSQL »ç¿ëÇϱâ == === ÆÛ¹Ì¼Ç ¼³Á¤Çϱâ === »õ µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅͺ£À̽º¸¦ »õ·Î ¸¸µé°í ´Ù¸¥ »ç¿ëÀÚ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ°¡ ÀÖ°í ¹«¾ùÀ̵ç ÇÒ ¼ö ÀÖ´Â ¸ÞÀÎ postgres »ç¿ëÀÚ°¡ ÀÖ½À´Ï´Ù. ÀÌÀü¿¡ ¸¸µé¾ú´ø »ç¿ëÀÚ´Â ÇöÀç ¼­¹ö¿¡ ·Î±×ÀÎÇÒ ¼ö ÀÖ°í, ±×°Í¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ´Â µ¥ÀÌÅ͸¦ »ðÀÔÇÏ°í ²¨³¾ ¼ö ÀÖ¾îÇá Çϸç, ¶§·Î´Â ´Ù¸¥ ¿©·¯ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. µû¶ó¼­ ÀÌ »õ »ç¿ëÀÚ°¡ ¾î¶² °ÍÀ̵ç ÇÒ ¼ö ÀÖ¾î¾ß ÇÏ°í, ÀûÇÕÇÑ Æ۹̼ÇÀ» ¼³Á¤ÇÏ¿©¾ß ÇÕ´Ï´Ù. ÀÌ°ÍÀº -O ¸Å°³º¯¼ö¸¦ createdb¿¡ ³Ñ°ÜÁÖ´Â °ÍÀ¸·Î ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. superuser·Î MyDB¶ó´Â »õ µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé°í ±×°ÍÀ» ÀÌÀüÀÇ testuserÀÇ ¼ÒÀ¯·Î ¸¸µå´Â °ÍºÎÅÍ ½ÃÀÛÇÒ °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.1: MyDB µ¥ÀÌÅͺ£À̽º ¸¸µé±â || {{{ $ createdb -O testuser -U chris -W MyDB Password: CREATE DATABASE }}} µÇ¾ú½À´Ï´Ù. ÀÌÁ¦´Â »õ MyDB µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé¾ú°í, testuser°¡ ±×°Í¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» °Ë»çÇϱâ À§ÇÏ¿© testuser·Î ÀÌ »õ MyDB µ¥ÀÌÅͺ£À̽º¿¡ ·Î±×ÀÎÇÏ¿© º¼ °ÍÀÔ´Ï´Ù. psql ÇÁ·Î±×·¥À¸·Î ÀÌ°ÍÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¸í·ÉÁÙ¿¡¼­ PostgreSQL µ¥ÀÌÅͺ£À̽º·Î ¿¬°áÇϴµ¥ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. µû¶ó¼­ »õ µ¥ÀÌÅͺ£À̽º¿¡ ÀÌ·¸°Ô ¿¬°áÇÕ´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.2: testuser·Î MyDB µ¥ÀÌÅͺ£À̽º¿¡ ·Î±×ÀÎÇϱâ || {{{ $ psql -U testuser -W MyDB Password: Welcome to psql 8.0.4, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit MyDB=> }}} ÀÌÁ¦ testuser·Î µ¥ÀÌÅͺ£À̽º¿¡ ·Î±×ÀÎÇÏ¿´À¸¸ç, ¸î °¡Áö ¸í·ÉÀ» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. PostgreSQLÀ» ÀÌ¿ëÇÏ´Â ´À³¦À» ¹ÞÀ¸·Á¸é ´ÙÀ½ ¼½¼Ç¿¡¼­ psql Ŭ¶óÀ̾ðÆ®¸¦ µ¹¾Æ´Ù´Ï´Â ±âº» ¸í·É¿¡ ´ëÇÏ¿© »ìÆ캸½Ê½Ã¿À. === ±âº» PostgreSQL ¸í·É°ú Å×À̺í ÀÛ¼ºÇϱâ === MySQLÀ» »ç¿ëÇØ º» ÀûÀÌ ÀÖÀ¸½Å ºÐµéÀ» À§ÇÏ¿© ²À Àоî¾ß ÇÒ °ÍÀÌ ÀÖ½À´Ï´Ù. ¿©±â¼­ PostgreSQLÀÌ ¸í·ÉÀ» ¼öÇàÇÏ´Â °Í°ú °ü·ÃÇÏ¿© µ¶Æ¯ÇÑ ¹«¾ð°¡¸¦ ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ½ÃÀÛÇÏ·Á¸é ¿©±â¿¡¼­ ³íÀÇÇÏ°íÀÚ ÇÏ´Â ¸í·ÉÀÇ ¸ñ·ÏÀ» º¸½Ê½Ã¿À. || ¸í·É || »ç¿ë¹ý || µ¿µîÇÑ MySQL ¸í·É || ||\c[onnect] [DBNAME|- [USER]] ||´Ù¸¥ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÑ´Ù ||USE DATABASE || ||\q ||psql Ŭ¶óÀ̾ðÆ®¸¦ Á¾·áÇÑ´Ù ||quit || ||\i FILE ||FILE¿¡¼­ ¸í·ÉÀ» ¼öÇàÇÑ´Ù ||source FILE || ||\o [FILE] ||ÁúÀǹ®ÀÇ °á°ú¸¦ FILE·Î º¸³½´Ù ||INTO OUTFILE, but outputs everything (not just SELECTS) || ||\d [NAME] ||(´Ù¸¥ ¾ÆÀÌÅÛµµ ¹°·ÐÀ̸ç) µ¥ÀÌÅͺ£À̽º³ª Å×À̺íÀ» ¹¦»çÇÑ´Ù ||DESC(RIBE) || ||\db [PATTERN] ||PATTERN¿¡ ¸Â´Â ¾µ ¼ö ÀÖ´Â Å×À̺íÀÇ ¸ñ·ÏÀ» ³ª¿­ÇÑ´Ù (ÆÐÅÏÀ» ÁÖÁö ¾ÊÀ¸¸é ¸ðµç Å×À̺íÀ» ³ª¿­) ||SHOW TABLES || \c[onnect]¸¦ Á¦¿ÜÇÏ°í ¸ðµç ¸í·ÉÀº ÀÌ ¼½¼ÇÀÇ µÚ¿¡¼­ º¸¿©ÁÙ °ÍÀÔ´Ï´Ù. µû¶ó¼­ Áö±ÝÀº µ¥ÀÌÅͺ£À̽º°¡ ºñ¾î ÀÖ½À´Ï´Ù. ±× ¸»Àº µ¥ÀÌÅ͸¦ »ðÀÔÇÒ ÇÊ¿ä°¡ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª µ¥ÀÌÅ͸¦ »ðÀÔÇϴ ù °ÉÀ½Àº Å×ÀÌºí¿¡ ³Ö´Â °ÍÀÔ´Ï´Ù. Áö±Ý ÇöÀç·Î¼­´Â Å×À̺íÀÌ µ¥ÀÌÅͺ£À̽º¿¡ ¾øÀ¸¹Ç·Î, ÀÌ°ÍÀ» ¸ÕÀú ¸¸µé¾î¾ß ÇÕ´Ï´Ù. CREATE TABLE ¸í·ÉÀ¸·Î ÀÌ°ÍÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç׸ñÀÇ Å×À̺íÀ» ¸¸µé °ÍÀÔ´Ï´Ù. »óÇ° ID¿Í ¼³¸í, °¡°ÝÀÌ µé¾î°£ Å×À̺íÀ» ¸¸µé °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.3: »óÇ° Å×ÀÌºí ¸¸µé±â || {{{ MyDB=> CREATE TABLE products ( MyDB(> product_id SERIAL, MyDB(> description TEXT, MyDB(> price DECIMAL MyDB(> ); NOTICE: CREATE TABLE will create implicit sequence "products_product_id_seq" for serial column "products.product_id" CREATE TABLE }}} NOTICE´Â ¹«½ÃÇÏ¿©µµ µÇ°í ¿ÏÀüÈ÷ ¹«ÇØÇÕ´Ï´Ù. ÇÔ¼öÀÇ ¸¶Áö¸· ÁÙÀÎ CREATE TABLEÀ» º¸¸é ¸í·ÉÀÌ ¼º°øÀûÀ¸·Î ÀÌ·ç¾îÁ³´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª °è¼ÓÇؼ­ Å×À̺íÀÌ Á¤¸» ¼º°øÀûÀ¸·Î ¸¸µé¾îÁ³´ÂÁö \d ¸í·ÉÀ» ÅëÇÏ¿© ¾Ë¾Æº¾½Ã´Ù. || ÄÚµå ¸ñ·Ï 3.4: »õ·Î ÀÛ¼ºÇÑ Å×ÀÌºí »ìÆ캸±â || {{{ MyDB=> \d products Table "public.products" Column | Type | Modifiers -------------+---------+------------------------------------------------------------------ product_id | integer | not null default nextval('public.products_product_id_seq'::text) description | text | price | numeric | }}} Á¤¸»·Î Å×À̺íÀÌ ¸¸µé¾îÁ³½À´Ï´Ù. ÀÌÁ¦ Å×À̺íÀÌ ¸¸µé¾îÁ³À¸´Ï µ¥ÀÌÅ͸¦ Áý¾î³Ö¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ¼½¼Ç¿¡¼­ µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ Áý¾î³Ö´Â °ÍÀ» »ìÆ캼 °ÍÀÔ´Ï´Ù. === µ¥ÀÌÅ͸¦ µ¥ÀÌÅͺ£À̽º¿¡ »ðÀÔÇϱâ === ÀÌ ¼½¼ÇÀº »õ·Î ¸¸µé¾îÁø Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ Áý¾î³Ö´Â µÎ °¡Áö ¹æ¹ýÀ» »ìÆ캼 °ÍÀÔ´Ï´Ù. ù ¹ø°·Î °¡Àå ±âº»ÀûÀÎ ¸í·ÉÀÎ INSERT¸¦ ¾Ë¾Æº¾½Ã´Ù. || ÄÚµå ¸ñ·Ï 3.5: INSERT ±¸¹® || {{{ INSERT INTO [tablename] (column1,column2,column3) VALUES(value1,value2,value3) }}} Å×À̺í À̸§Àº µ¥ÀÌÅ͸¦ Áý¾î³ÖÀ» Å×À̺íÀÇ À̸§À» Æ÷ÇÔÇÕ´Ï´Ù. (column1,column2,column3)Àº ƯÁ¤ Ä÷³¿¡ °ªÀ» ³ÖÀ» ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. VALUES(value,value2,value3)Àº °ªÀÇ ³ª¿­ÀÔ´Ï´Ù. ÀÌ °ªµéÀº Ä÷³°ú °°Àº ¼ø¼­(column1ÀÌ value1À» °®°í, column2°¡ value2¸¦ °®°í, column3ÀÌ value3¸¦ °®´Â´Ù)°¡ µË´Ï´Ù. À̵éÀÇ ¼ö´Â ¼­·Î °°¾Æ¾ß ÇÕ´Ï´Ù. °è¼ÓÇؼ­ Ç׸ñÀ» Å×ÀÌºí¿¡ ³Ö¾î º¾½Ã´Ù. ||'''Áß¿ä:''' µ¥ÀÌÅͺ£À̽º¿¡¼­ ¿À·§µ¿¾È ÀÛ¾÷Çϸ鼭 °³ÀÎÀûÀ¸·Î INSERT ¸í·É¹®À» À§¿Í °°ÀÌ Á¤È®ÇÏ°Ô ÇÒ °ÍÀ» ÃßõÇÕ´Ï´Ù. °³¹ßÀÚµéÀº INSERT INTO¿¡¼­ Ä÷³ À̸§À» ¸í½ÃÇÏÁö ¾Ê°í ½Ç¼ö·Î Á¾Á¾ »ç¿ëÇÕ´Ï´Ù. »õ Ä÷³ÀÌ µ¥ÀÌÅͺ£À̽º¿¡ Ãß°¡µÉ ¼öµµ À־ ÀÌ°ÍÀº ºñ»ý»êÀûÀÔ´Ï´Ù. °ª°ú Ä÷³ÀÇ ¼ö°¡ ¼­·Î °°Áö ¾Ê¾Æ¼­ ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. »õ·Î¿î Ä÷³À» Ãß°¡ÇÒ °ÍÀ» 300% È®½ÅÇÏÁö ¾Ê´Â´Ù¸é Ç×»ó Ä÷³À» ¸í½ÃÇØ ÁÖ¼¼¿ä. || || ÄÚµå ¸ñ·Ï 3.6: Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ »ðÀÔÇϱâ || {{{ MyDB=> INSERT INTO products (description,price) VALUES('A test product', 12.00); INSERT 17273 1 }}} ¸¶Áö¸· ÁÙÀº ¾à°£ ¼³¸íÀÌ ÇÊ¿äÇÕ´Ï´Ù. insert ¸í·ÉÀÇ ¹Ýȯ°ªÀº OID (°´Ã¼ ½Äº°ÀÚ)¿Í »ðÀÔµÈ ÁÙÀÇ ¼öÀÔ´Ï´Ù. OID´Â ÀÌ °¡À̵åÀÇ ¹üÀ§¸¦ Á¶±Ý ³Ñ¾î¼± °ÍÀÌ°í PostgreSQL ¸Å´º¾ó¿¡ ÁÁÀº Á¤º¸°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌÁ¦ 20,000 »óÇ°À» °¡Áö°í ÀÖ´Â »óȲ¿¡¼­ ÀÌ insert ¹®Àº Á¶±Ý ¹ø°Å·Î¿ï ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¸ðµç °ÍÀ» ÀÒ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. COPY ¸í·ÉÀÌ ÆÄÀÏÀ̳ª stdin¿¡¼­ Å×À̺íÀ» »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â csv(Äĸ¶·Î ±¸ºÐµÈ °ª) ÆÄÀÏÀÌ ÀÖ´Ù°í ÇÏ°í, ÀÌ°Í¿¡ »óÇ° id, ¼³¸í, °¡°ÝÀÌ ÀÖ´Ù°í ÇսôÙ. ÆÄÀÏÀº ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.7: products.csv || {{{ 2,meat,6.79 3,soup,0.69 4,soda,1.79 }}} ÀÌÁ¦ COPY ¸í·ÉÀ¸·Î µ¥ÀÌÅ͸¦ Áý¾î³Ö¾î º¾½Ã´Ù. ||'''Áß¿ä:''' postgres »ç¿ëÀÚ¸¸ÀÌ ÆÄÀÏ¿¡¼­ µ¥ÀÌÅ͸¦ Áý¾î³ÖÀ» ¼ö Àֱ⠶§¹®¿¡ COPY FROM STDIN ¸í·ÉÀ» »ç¿ëÇÏ¿´½À´Ï´Ù. (¸í¹éÇÑ º¸¾È»óÀÇ ÀÌÀ¯) || || ÄÚµå ¸ñ·Ï 3.8: COPY¸¦ »ç¿ëÇÏ¿© »óÇ° Å×ÀÌºí¿¡ Áý¾î³Ö´Â ¸ð½À || {{{ MyDB=> COPY products FROM STDIN WITH DELIMITER AS ','; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> 2,meat,6.79 >> 3,soup,0.69 >> 4,soda,1.79 >> \. }}} ºÒÇàÈ÷µµ, ÀÌ ÁÙÀÌ INSERT INTO ¸í·É¾î¿Í °°Àº »óÅ Á¤º¸¸¦ º¸¿©ÁÖÁö´Â ¾Ê½À´Ï´Ù. µ¥ÀÌÅÍ°¡ µé¾î°¬´ÂÁö ¾î¶»°Ô ¾Ë ¼ö ÀÖÀ»±î¿ä? ´ÙÀ½ ¼½¼Ç¿¡¼­ µ¥ÀÌÅ͸¦ È®ÀÎÇϱâ À§ÇÏ¿© ½ÇÇàÇÏ´Â ÁúÀǹ®À» »ìÆ캼 °ÍÀ̺ó´Ù. === PostgreSQL ÁúÀÇ »ç¿ëÇϱâ === À̹ø ¼½¼Ç¿¡¼­´Â Å×ÀÌºí ³»¿¡ ÀÖ´Â Á¤º¸¸¦ º¸´Â SELECT¹®¿¡ ´ëÇÏ¿© ¼³Æì º¼ °ÍÀÔ´Ï´Ù. ±âº»ÀûÀÎ SELECT Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.9: SELECT ±¸¹® || {{{ SELECT (column1,column2|*) FROM (table) [WHERE (conditionals)] }}} Ä÷³À» ¼±ÅÃÇÏ´Â ¹æ¹ýÀº µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù. ù ¹ø° °ÍÀº *·Î ¸ðµç Ä÷³À» ¼±ÅÃÇÏ´Â ¹æ¹ýÀÌ°í µÎ ¹ø°´Â º¸°íÀÚ Çϴ ƯÁ¤ Ä÷³ÀÇ ¸ñ·ÏÀ» ¸í½ÃÇÏ´Â °ÍÀÔ´Ï´Ù. µÎ ¹ø°´Â Å« ¸ñ·ÏÀ» º¸±âº¸´Ù´Â ƯÁ¤ Ä÷³¸¸ º¸·Á°í ÇÏ´Â °æ¿ì¿¡ ²Ï³ª Æí¸®ÇÕ´Ï´Ù. SELECT¿¡ *·Î ¸ðµç Ä÷³À» ¸í½ÃÇÏ´Â °ÍºÎÅÍ ½ÃÀÛÇØ º¾½Ã´Ù. || ÄÚµå ¸ñ·Ï 3.10: »óÇ° Å×ÀÌºí º¸±â || {{{ MyDB=> SELECT * FROM products; product_id | description | price ------------+----------------+------- 1 | A test product | 12.00 2 | meat | 6.79 3 | soup | 0.69 4 | soda | 1.79 (4 rows) }}} ¿©±â¼­ ³ªÅ¸³­ ´ë·Î, ¸ðµç µ¥ÀÌÅÍ°¡ Á¤¸»·Î Å×ÀÌºí¿¡ µé¾î°¬½À´Ï´Ù. ÀÌÁ¦ ¼³¸í°ú °¡°Ý¸¸ º¸°íÀÚ ÇÑ´Ù°í ÇÏ°í, »óÇ° id´Â º¸°í ½ÍÁö ¾Ê´Ù°í ÇսôÙ. ÀÌÁ¦ Ä÷³À» ¸í½ÃÇÑ SELECT ÇüŸ¦ »ç¿ëÇÒ °ÍÀÔ´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.11: »óÇ° Å×ÀÌºí¿¡¼­ ƯÁ¤ Ä÷³À» º¸±â || {{{ MyDB=> SELECT description,price FROM products; description | price ----------------+------- A test product | 12.00 meat | 6.79 soup | 0.69 soda | 1.79 (4 rows) }}} ÀÌÁ¦ »óÇ°°ú °¡°Ý¸¸ º¸À̱⠶§¹®¿¡ Áß¿äÇÑ ÀÚ·á¿¡ ÁýÁßÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. ÀÌÁ¦ $2.00ÀÌ ³Ñ´Â Ç׸ñ¸¸À» º¸°íÀÚ ÇÑ´Ù°í ÇսôÙ. ¿©±â WHERE ÀýÀ» °£ÆíÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù. || ÄÚµå ¸ñ·Ï 3.12: »óÇ° Å×À̺íÀÇ Æ¯Á¤ ÇàÀ» º¸±â || {{{ MyDB=> SELECT description,price FROM products WHERE price > 2.00; description | price ----------------+------- A test product | 12.00 meat | 6.79 (2 rows) }}} ÀÌÁ¦ $2.00ÀÌ ³Ñ´Â »óÇ°ÀÌ È­¸é¿¡ ³ªÅ¸³ª¼­ ´õ¿í ÁýÁßÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. Á¤º¸ ÁúÀÇÀÇ ÀÌ·± ÇüÅ´ ¾ÆÁÖ °­·ÂÇÏ°í ±Øµµ·Î À¯¿ëÇÑ º¸°í¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. === ¸ÎÀ½¸» === PostgreSQLÀÇ °¡À̵尡 ¿©±â¼­ ³¡ÀÌ ³³´Ï´Ù. ÀúÀÇ Áú¹®¿¡ ´ë´äÀ» ÇØ ÁÖ½Ã¾î µµ¿ÍÁֽŠÁ¨Åõ PostgreSQL À¯Áö¸¦ ¸Ã°í ÀÖ´Â ¸¶»çµµ¸ð ³ª°¡³ë¾¾¿¡°Ô Å©°Ô °¨»çÇÕ´Ï´Ù. ÀÌ °¡À̵忡 ¾î¶² Á¦¾ÈÀÌ¶óµµ ÀÖÀ¸½Ã¸é chriswhite@gentoo.org ¿¡ º¸³» ÁֽʽÿÀ. ´õ È®ÀåÀûÀÎ ¹®¼­¸¦ ¿øÇϽøé PostgreSQL À¥»çÀÌÆ®¸¦ º¸½Ê½Ã¿À.