19.3. ÅÛÇø´ µ¥ÀÌÅͺ£À̽º

½ÇÁ¦ CREATE DATABASE´Â ±âÁ¸ÀÇ µ¥ÀÌÅͺ£À̽º¸¦ º¹»çÇÏ¿© ÀÛµ¿ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼­´Â template1. ÀÇ Ç¥ÁØ ½Ã½ºÅÛ µ¥ÀÌÅͺ£À̽º¸¦ º¹»çÇÕ´Ï´Ù. µû¶ó¼­, ÀÌ µ¥ÀÌÅͺ£À̽º´Â »õ·Ó°Ô ÀÛ¼ºµÈ µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍÀÇ "ÅÛÇø´"ÀÌ µË´Ï´Ù. template1¿¡ ¿ÀºêÁ§Æ®¸¦ Ãß°¡ÇßÀ» °æ¿ì, Ãß°¡ÇÑ ¿ÀºêÁ§Æ®´Â ±× ÈÄ¿¡ ÀÛ¼ºµÇ´Â »ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º¿¡ º¹»çµÇ¾î Áý´Ï´Ù.. ÀÌ´Â µ¥ÀÌÅͺ£À̽º Ç¥ÁØ ¿ÀºêÁ§Æ® ÁýÇÕ¿¡ °³º°ÀûÀÎ »çÀÌÆ® º¯°æÀ» Çã¶ôÇÕ´Ï´Ù. ¿¹¸¦ µé¾î PL/pgSQLÀýÂ÷ ¾ð¾î¸¦ template1¿¡ ¼³Ä¡Çß´Ù¸é, µ¥ÀÌÅͺ£À̽º¸¦ ÀÛ¼ºÇÒ ¶§¿¡ Ãß°¡ Á¶ÀÛ ¾øÀÌ, ÀÚµ¿ÀûÀ¸·Î ÀÌ ¾ð¾î¸¦ »ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º·Î »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

template0. À̸§ÀÇ µÎ ¹øÂ° Ç¥ÁØ ½Ã½ºÅÛ µ¥ÀÌÅͺ£À̽º°¡ ÀÖ½À´Ï´Ù. ÀÌ µ¥ÀÌÅͺ£À̽º´Â template1ÀÇ Ãʱ⠳»¿ë°ú °°Àº µ¥ÀÌÅ͸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù. Áï, »ç¿ë ¹öÁ¯ÀÇ PostgreSQL¿¡¼­ ¹Ì¸® Á¤ÀÇµÈ Ç¥ÁØ ¿ÀºêÁ§Æ®·Î¸¸ ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. template0´Â initdb ÈÄ¿¡ º¯°æµÇ¾î¼­´Â ¾ÈµË´Ï´Ù. CREATE DATABASE¸¦ ¸í·ÉÇÔÀ¸·Î½á template1 ´ë½Å¿¡ template0¸¦ º¹»çÇϵµ·Ï ½ÇÇàÇÏ¿©, template1¿¡¼­ °³º°ÀûÀ¸·Î »çÀÌÆ®¿¡ Ãß°¡µÈ °ÍÀ» Æ÷ÇÔÇÏÁö ¾Ê´Â "¼ø¼öÇÑ" »ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. À̴ ƯÈ÷, pg_dump ´ýÇÁ·ÎºÎÅÍ º¹±¸ÇÒ ¶§¿¡ Æí¸®ÇÕ´Ï´Ù. ÀÌ ´ýÇÁ ½ºÅ©¸³Æ®´Âtemplate1¿¡ Á¸ÀçÇÏ´Â Ãß°¡µÈ ºÎºÐ°ú Ãæµ¹ ¾øÀÌ ¼ø¼öÇÑ µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµÇ¾î¾ß¸¸ ÇÕ´Ï´Ù. ÀÌÀü µ¥ÀÌÅͺ£À̽ºÀÇ ³»¿ëÀ» ¿Ã¹Ù¸£°Ô Àç»ý¼ºÇϱâ À§ÇØ ÇàÇØÁý´Ï´Ù.

template0¸¦ º¹»çÇØ¼­ µ¥ÀÌÅͺ£À̽º¸¦ ÀÛ¼ºÇÏ·Á¸é,

CREATE DATABASE 
dbname
 TEMPLATE template0;

SQL ȯ°æÀ¸·ÎºÎÅÍ ½ÇÇàÇÏ´ÂÁö, ¶Ç´Â

createdb -T template0 
dbname

½©·ÎºÎÅÍ ½ÇÇàÇÕ´Ï´Ù.

Ãß°¡ÀûÀÎ ÅÛÇø´ µ¥ÀÌÅͺ£À̽º¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í CREATE DATABASEÀÇ ÅÛÇø´À¸·Î À̸§À» ÁöÁ¤ÇÔÀ¸·Î½á, Ŭ·¯½ºÅÍ¿¡¼­ ÀÓÀÇÀÇ µ¥ÀÌÅͺ£À̽º¸¦ º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ ±â´ÉÀº (¾ÆÁ÷) ¹ü¿ë ¸ñÀûÀÇ "COPY DATABASE" ±â´ÉÀ» ÀǵµÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù. º¹»çµÇ´Â µ¿¾È, ´Ù¸¥ ¼¼¼ÇÀº µ¥ÀÌÅͺ£À̽º ¼Ò½º¿¡ Á¢¼ÓÇÒ ¼ö°¡ ¾ø´Ù´Â °ÍÀÌ °¡Àå Å« Á¦ÇÑÁ¡ÀÔ´Ï´Ù. CREATE DATABASE´Â ½ÃÀÛÇÒ ¶§ ´Ù¸¥ Á¢¼ÓÀÌ Á¸ÀçÇÏ¸é ½ÇÆÐÇÕ´Ï´Ù. °Ô´Ù°¡ CREATE DATABASE°¡ ¿Ï·áµÉ ¶§±îÁö, µ¥ÀÌÅͺ£À̽º ¼Ò½º¿¡ »õ·Î¿î Á¢¼ÓÀº lock outµË´Ï´Ù.

pg_database °¢°¢ÀÇ µ¥ÀÌÅͺ£À̽º¿¡´Â À¯¿ëÇÑ µÎ °³ÀÇ Ç÷¡±×°¡ Á¸ÀçÇÕ´Ï´Ù. datistemplate°ú datallowconnÀÇ ¿­¿¡ ÀÖ½À´Ï´Ù. datistemplate´Â µ¥ÀÌÅͺ£À̽º°¡ CREATE DATABASEÀÇ ÅÛÇ÷¿À¸·Î »ç¿ëµÇ´Â °ÍÀ» ¸í·ÉÇϵµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Ç÷¡±×°¡ ¼³Á¤µÇ¸é, CREATEDB ±ÇÇÑÀ» °¡Áö´Â »ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽º¸¦ º¹Á¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼³Á¤µÇÁö ¾ÊÀº °æ¿ì, ½´ÆÛ À¯Àú¿Í µ¥ÀÌÅÍÀÇ ¼ÒÀ¯ÀÚ¸¸ÀÌ º¹Á¦°¡ °¡´ÉÇÕ´Ï´Ù. datallowconnÀÌ falseÀÏ °æ¿ì, µ¥ÀÌÅͺ£À̽º·Î »õ·Ó°Ô Á¢¼Ó ÇÒ ¼ö ¾ø½À´Ï´Ù(±×·¯³ª, false Ç÷¡±×·Î ¼³Á¤ÇÔÀ¸·Î½á¸¦ ±âÁ¸ÀÇ ¼¼¼ÇÀº ´ÝÈ÷Áö ¾Ê½À´Ï´Ù). template0µ¥ÀÌÅͺ£À̽º´Â º¯°æÀ» ¸·±â À§ÇØ, º¸Åë datallowconn = false·Î µÇ¾î ÀÖ½À´Ï´Ù. template0¿Í template1 ¸ðµÎ´Â Ç×»ódatistemplate = true·Î ¼³Á¤µÇ¾î¾ß¸¸ ÇÕ´Ï´Ù.

Note: template1°ú template0Àº template1ÀÌ CREATE DATABASE µðÆúÆ® ¼Ò½º µ¥ÀÌÅͺ£À̽ºÀÇ À̸§À̶ó´Â °Í ÀÌ¿ÜÀÇ Æ¯º°ÇÑ ±ÇÇÑÀ» °¡ÁöÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î template1¸¦ »èÁ¦Çϰí, template0·Î ÀçÀÛ¼ºÇصµ ¾Æ¹« ¹®Á¦°¡ ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ ÇൿÀº ºÎÁÖÀÇ·Î ºÒÇÊ¿äÇÑ ¸¹Àº ºÎºÐÀ» template1¿¡ Ãß°¡ÇßÀ» °æ¿ì¿¡ ÃßõÇÕ´Ï´Ù. (template1¸¦ »èÁ¦ÇÏ·Á¸é ,pg_database.datistemplate = false·Î ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. )

µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅͰ¡ ÃʱâÈ­µÉ ¶§, postgresµµ ÀÛ¼ºµË´Ï´Ù. ÀÌ´Â »ç¿ëÀÚ¿Í ¾îÇø®ÄÉÀ̼ÇÀ» À§ÇÑ µðÆúÆ® µ¥ÀÌÅͺ£À̽º·Î¼­ÀÇ Á¢¼Óó¸¦ ÀǹÌÇÕ´Ï´Ù. À̰ÍÀº template1ÀÇ ´Ü¼øÇÑ º¹»ç·Î Çʿ信 µû¶ó¼­ »èÁ¦Çϰųª ÀçÀÛ¼º ÇÒ ¼ö ÀÖ½À´Ï´Ù.