21.1. locale Áö¿ø

locale Áö¿øÀº ¾ËÆÄºª, Á¤·Ä(sorting), ¼ýÀÚ Çü½Ä µî ¹®È­Àû ±âÈ£¸¦ ¹è·ÁÇÑ ÀÖ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ´ë»óÀ¸·Î ÇÕ´Ï´Ù. PostgreSQLÀº ¼­¹öÀÇ operating systemÀÌ Á¦°øÇϴ ǥÁØ ISO C¿Í POSIXÀÇ Áö¿ª(locale) ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. Ãß°¡ÀûÀÎ Á¤º¸´Â ½Ã½ºÅÛÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.

21.1.1. °³¿ä

Áö¿ª(locale) Áö¿øÀº initdb¸¦ »ç¿ëÇØ µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅ͸¦ ÀÛ¼ºÇÒ ¶§ ÀÚµ¿ÀûÀ¸·Î ÃʱâÈ­µË´Ï´Ù. initdb´Â µðÆúÆ®·Î ±× ½ÇÇà ȯ°æÀÇ ·ÎÄÉÀÏ ¼³Á¤¿¡ µû¶ó µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅ͸¦ ÃʱâÈ­ÇÕ´Ï´Ù. ¶§¹®¿¡ ½Ã½ºÅÛÀÌ µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅÍ·Î »ç¿ëÇÏ°í ½ÍÀº Áö¿ª(locale)À» ¹Ì¸® ¼³Á¤ÇØµÎ¸é ´õ ÀÌ»ó ÇÊ¿ä·Î ÇÏ´Â °ÍÀº ¾ø½À´Ï´Ù. ´Ù¸¥ Áö¿ª(locale)À» »ç¿ëÇÏ°í ½ÍÀº °æ¿ì(¶Ç´Â ½Ã½ºÅÛÀÇ ·ÎÄÉÀÏ ¼³Á¤ÀÌ ºÒºÐ¸íÇÑ °æ¿ì)´Â initdbÀÇ --locale¿É¼ÇÀ» »ç¿ëÇÏ¿© ¿øÇÏ´Â Áö¿ª(locale)À» ÁöÁ¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ´Â ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

initdb --locale=sv_SE

ÀÌ ¿¹Á¦´Â Áö¿ª(locale)À» ½º¿þµ§(SE)¿¡¼­ »ç¿ëµÇ°í ÀÖ´Â ½º¿þµ§¾î(sv)¿¡ ¸ÂÃß°í ÀÖ½À´Ï´Ù. ±× ¹Û¿¡µµ en_US(¹Ì±¹ ¿µ¾î)³ª fr_CA(ij³ª´ÙÀÇ ÇÁ¶û½º¾î)µîÀ» ¼³Á¤ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Áö¿ª¿¡ ´ëÇØ Çϳª ÀÌ»óÀÇ character set°¡ »ç¿ë °¡´ÉÇϸé, cs_CZ.ISO8859-2¿Í °°ÀÌ ±â¼ú ÇÒ ¼ö ÀÖ½À´Ï´Ù. ½Ã½ºÅÛ¿¡¼­ Áö¿ªÀ» ¾î¶² À̸§À¸·Î »ç¿ëÇÒ ¼ö ÀÖÀ»±î ÇÏ´Â ¹®Á¦´Â operating systemÀÇ vender¿¡ ÀÇÇØ Á¦°øµÈ °Í°ú ¹«¾ùÀÌ ¼³Ä¡µÇ¾ú´Â °¡¿¡ ÀÇÁ¸ÇÕ´Ï´Ù (´ëºÎºÐÀÇ ½Ã½ºÅÛ¿¡¼­´Â locale -a¶ó°í ÇÏ´Â Ä¿¸àµå·Î ÀÌ¿ë °¡´ÉÇÑ Áö¿ªÀÇ À϶÷À» ÀÔ¼öÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù).

¶§·Î´Â ÀϺΠÁö¿ªÀ¸·ÎºÎÅÍÀÇ ·êÀ» È¥ÇÕÇÏ´Â °ÍÀÌ À¯¿ëÇÕ´Ï´Ù. Áï, ¿µ¾î Á¶ÇÕ(collation) ±ÔÄ¢À» »ç¿ëÇÏ´Â ½ºÆäÀÎ¾î ¸Þ¼¼Áö¿Í °°½À´Ï´Ù. ÀÌ ±â´ÉÀ» Áö¿øÇϱâ À§Çؼ­, Áö¿ªÈ­ ·êÀÇ Æ¯Á¤ÇÑ ºÎºÐ¸¸À» Á¦¾îÇÏ´Â Áö¿ª ÇÏÀ§Ä«Å×°í¸®ÀÇ ÁýÇÕÀÌ Á¸ÀçÇÕ´Ï´Ù.

LC_COLLATE ¹®ÀÚ¿­ Á¤·Ä ¼ø¼­
LC_CTYPE ¹®ÀÚÀÇ ºÐ·ù(¹®ÀÚ¶õ ¹«¾ùÀΰ¡, ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â°¡)
LC_MESSAGES ¸Þ¼¼ÁöÀÇ ¾ð¾î
LC_MONETARY ÅëÈ­ Çü½Ä
LC_NUMERIC ¼ýÀÚ Çü½Ä
LC_TIME ³¯Â¥¿Í ½Ã°¢ÀÇ Çü½Ä

Ä«Å×°í¸® À̸§Àº ƯÁ¤ÇÑ Ä«Å×°í¸®ÀÇ Áö¿ª ¼±ÅÃÀ» ¿À¹ö¶óÀ̵åÇϱâ À§ÇÑ initdb¿É¼ÇÀÇ À̸§À¸·Î ¹ø¿ªµÇ¾îÁý´Ï´Ù. ¿¹¸¦ µé¸é, Áö¿ªÀ» ij³ª´ÙÀÇ ÇÁ¶û½º¾î·Î ¼³Á¤Çϰí ÅëÈ­ ¼­½ÄÀº ¹Ì±¹ÀÇ ±ÔÄ¢À» Àû¿ëÇÏ·Á¸é, initdb --locale=fr_CA --lc-monetary=en_US¿Í °°ÀÌ ¼³Á¤ÇÕ´Ï´Ù.

½Ã½ºÅÛÀÌ Áö¿ªÀ» Áö¿øÇÏÁö ¾Êµµ·Ï ÇÏ°í ½ÍÀº °æ¿ì, Ưº°ÇÑ Áö¿ª¿¡ C³ª POSIX¸¦ »ç¿ëÇØ Áֽʽÿä.

Áö¿ª Ä«Å×°í¸®ÀÇ Æ¯¼º Áß ÀϺδ °ªÀ» µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅÍÀÇ ¼ö¸íÀ» À§ÇØ °íÁ¤½ÃÄÑ¾ß ÇÕ´Ï´Ù. Áï, initdbÀÇ ½ÇÇàµÇ¸é, ÀÌ °ªÀ» º¯°æÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. LC_COLLATE¿Í LC_CTYPEÀº ÀÌ·¯ÇÑ Ä«Å×°í¸®¿¡ µé¾î°©´Ï´Ù. À̵éÀº À妽º Á¤·Ä ¼ø¼­¿¡ ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®¿¡, °ªÀÌ °íÁ¤µÇ¾î¾ß¸¸ ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ÅØ½ºÆ® ¿­ÀÇ À妽º´Â ÆÄ±«µË´Ï´Ù. PostgreSQLÀº initdb°¡ °ËÁöÇÑ LC_COLLATE¿Í LC_CTYPE °ªÀ» ±â·ÏÀ» °­¿äÇÕ´Ï´Ù. ¼­¹ö´Â ½ÃÀÛµÈ ½ÃÁ¡¿¡¼­ ÀÚµ¿ÀûÀ¸·Î ÀÌ·¯ÇÑ µÎ °ªÀ» ä¿ëÇÕ´Ï´Ù.

±× ¿ÜÀÇ Áö¿ª Ä«Å×°í¸®´Â ¼­¹ö°¡ ½ÇÇàÁßÀÌ´õ¶óµµ Áö¿ª Ä«Å×°í¸®¿Í °°Àº À̸§À» °®´Â run-time ¼³Á¤ º¯¼ö¸¦ ¼³Á¤ÇÔÀ¸·Î¼­, ¿øÇÏ´Â µ¥·Î º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. (ÀÚ¼¼ÇÑ °ÍÀº Chapter 17À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä). initdb¿¡ ÀÇÇØ ¼±ÅÃµÈ µðÆúÆ®´Â ½ÇÁ¦ ¼­¹öÀÇ ±âµ¿½Ã¿¡ µðÆúÆ®·Î¼­ µ¿ÀÛÇÔÀ¸·Î½á postgresql.conf¼³Á¤ ÆÄÀÏ¿¡ ÀÔ·ÂµÉ »ÓÀÔ´Ï´Ù. ÀÌ ´ëÀÔ¹®À» postgresql.conf·ÎºÎÅÍ »èÁ¦Çϸé, ¼­¹ö´Â ½ÇÇà ȯ°æÀÇ ¼³Á¤À» ±×´ë·Î »ç¿ëÇÕ´Ï´Ù.

¼­¹öÀÇ Áö¿ªÀÇ µ¿ÀÛÀº ¾î´À Ŭ¶óÀ̾ðÆ®ÀÇ È¯°æ¿¡µµ ÀÇÁ¸ÇÏÁö ¾Ê°í, ¼­¹ö¸¦ ÂüÁ¶ÇÒ ¼ö Àִ ȯ°æ º¯¼ö·Î Á¤ÇØÁý´Ï´Ù. ±×·¯¹Ç·Î ¼­¹ö¸¦ °¡µ¿½Ã۱â Àü¿¡ ¿Ã¹Ù¸¥ Áö¿ª ¼³Á¤À» Çϵµ·Ï ÁÖÀÇÇØ Áֽʽÿä. °á°úÀûÀ¸·Î ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®¿¡ ´Ù¸¥ Áö¿ªÀÌ ¼³Á¤µÇ¾î ÀÖÀ¸¸é, ¸Þ¼¼Áö´Â ±×µéÀÌ ¾îµð¿¡ ºñ·ÔµÆ´Â Áö¿¡ µû¶ó ´Ù¸¥ ¾ð¾î·Î Ç¥½ÃµË´Ï´Ù.

Note: ½ÇÇà ȯ°æÀÇ Áö¿ªÀ» °è½ÂÇÑ´Ù´Â °ÍÀº ´ëºÎºÐÀÇ operating ½Ã½ºÅÛ¿¡¼­ ´ÙÀ½°ú °°Àº Àǹ̸¦ °¡Áý´Ï´Ù. ÁöÁ¤µÈ Áö¿ª Ä«Å×°í¸®¿¡ ´ëÇØ, ¿¹¸¦ µé¸é Á¶ÇÕ(collation), ÀÌÇÏÀÇ È¯°æ º¯¼ö°¡ ¼ø¼­´ë·Î Âü°íµÉ ¼ö ÀÖ½À´Ï´Ù. LC_ALL,LC_COLLATE(°³º°ÀÇ Ä«Å×°í¸®¿¡ ´ëÀÀÇÏ´Â º¯¼ö),LANG. ÀÌ·¯ÇÑ È¯°æ º¯¼ö°¡ ¾øÀ» °æ¿ì´Â Áö¿ª µðÆúÆ®ÀÎ C·Î ¼³Á¤µË´Ï´Ù.

¸Þ¼¼ÁöÀÇ ¾ð¾î¸¦ ¼³Á¤Çϱâ À§ÇÑ ¸ñÀûÀ¸·Î, ÀϺΠ¸Þ¼¼Áö Áö¿ªÈ­ ¶óÀ̺귯¸®´Â ¸ðµç Áö¿ª ¼³Á¤À» ¿À¹ö¶óÀ̵åÇϴ ȯ°æ º¯¼ö LANGUAGE¸¦ °Ë»öÇÕ´Ï´Ù. ÀǽÉÀÌ °£´Ù¸é, º¸´Ù ¸¹Àº Á¤º¸¸¦ À§ÇØ operating systemÀÇ ¹®¼­, ƯÈ÷ gettextÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ Áֽʽÿä.

À¯ÀúÀÇ ¼±ÅÃÇÑ ¾ð¾î·Î ¸Þ¼¼Áö°¡ ¹ø¿ªµÇµµ·Ï Çϱâ À§Çؼ­´Â NLS°¡ ¼³Ä¡½Ã¿¡ »ç¿ëµÇ¾îÁ®¾ß¸¸ ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ´Ù¸¥ Áö¿ª Áö¿ø ±â´É°ú´Â µ¶¸³µÇ¾î ÀÖ½À´Ï´Ù.

21.1.2. µ¿ÀÛ

Áö¿ª ¼³Á¤Àº ÀÌÇÏÀÇ SQL ±â´É¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

C³ª POSIXÀ̿ܿ¡ PostgreSQL·Î Áö¿ª ±â´ÉÀ» »ç¿ëÇÒ ¶§ÀÇ °áÁ¡Àº ½ÇÇà ¼ÓµµÀÔ´Ï´Ù. Áö¿ª ±â´ÉÀº ¹®ÀÚÀÇ ´À¸®°Ô ´Ù·ç°í, LIKE¿¡ ÀÇÇÑ ÀϹÝÀûÀÎ À妽ºÀÇ »ç¿ëÀ» ¹æÇØÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯¸¦ °í·ÁÇØ¼­ Á¤¸»·Î ÇÊ¿äÇÑ ¶§¸¸ Áö¿ª ±â´ÉÀ» »ç¿ëÇØ ÁÖ¼¼¿ä.

C ÀÌ¿ÜÀÇ Áö¿ª ±â´É¿¡ ´ëÇØ, LIKE ±¸¹®À» °¡Áö´Â À妽º »ç¿ëÇϱâ À§ÇÑ PostgreSQLÀÇ È¸ÇÇ ¹æ¹ýÀ¸·Î¼­ ¸î °¡Áö custom ¿¬»êÀÚ Å¬·¡½º°¡ ÀÖ½À´Ï´Ù. À̵éÀ» ÀÌ¿ëÇϸé, ¾ö°ÝÇÑ ¹®ÀÚ¿Í ¹®ÀÚÀÇ ºñ±³¸¦ ¼öÇàÇÏ´Â À妽º³ª, Áö¿ª ºñ±³ ·êÀ» ¹«½ÃÇÏ´Â À妽º¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºSection 11.8À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

21.1.3. ¹®Á¦Á¡

»ó±âÀÇ ¼³¸í¿¡ µû¶ó Áö¿ª Áö¿ø ±â´ÉÀÌ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏÁö ¾Ê´Â °æ¿ì, operating systemÀÇ Áö¿ª Áö¿ø ±â´ÉÀÌ Á¤È®ÇÏ°Ô ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎÇØ ÁÖ¼¼¿ä. ÁöÁ¤µÈ Áö¿ªÀÇ ¼³Ä¡ ¿©ºÎ¸¦ È®ÀÎÇϱâ À§Çؼ­, operating systemÀÌ À̸¦ Á¦°øÇÏ´Â °æ¿ì¿¡ locale -aÄ¿¸àµå¸¦ »ç¿ëÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

PostgreSQL°¡ ¿¹»óÇÏ´Â Áö¿ªÀÌ ½ÇÁ¦·Î »ç¿ëµÇ¾îÁö´ÂÁö È®ÀÎÇØ ÁÖ¼¼¿ä. LC_COLLATE¿Í LC_CTYPE ¼³Á¤Àº initdb ½Ã°£¿¡ °áÁ¤µÇ°í, initdb¸¦ Àç½ÇÇàÇÏÁö ¾Ê´Â ÇÑ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. LC_MESSAGES³ª LC_MONETARY¸¦ Æ÷ÇÔÇÏ´Â ´Ù¸¥ Áö¿ª ¼³Á¤Àº ¼­¹ö ±âµ¿½ÃÀÇ È¯°æ¿¡ ÀÇÇØ óÀ½À¸·Î °áÁ¤µË´Ï´Ù¸¸, ±× ÀÚ¸®¿¡¼­ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. SHOWÄ¿¸àµå¸¦ »ç¿ëÇØ, »ç¿ë ÁßÀÎ Áö¿ª ¼³Á¤À» È®ÀÎÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¼Ò½º ¹èÆ÷¹°ÀÇ src/test/localeµð·ºÅ丮¿¡´Â PostgreSQLÀÇ Áö¿ª Áö¿øÀ» À§ÇÑ ½ÃÇèÀÌ ÀÖ½À´Ï´Ù.

¿¡·¯ ¸Þ¼¼ÁöÀÇ ÅØ½ºÆ®¸¦ ÆÄ½Ì(parsing)ÇÔÀ¸·Î½á ¼­¹öÃø ¿¡·¯¸¦ ´Ù·ç´Â Ŭ¶óÀÌ¾ðÆ® ¾îÇø®ÄÉÀ̼ÇÀº ¼­¹öÀÇ ¸Þ¼¼Áö°¡ ´Ù¸¥ ¾ð¾î·Î ÀÛ¼ºµÇ¸é ºÐ¸íÈ÷ ¹®Á¦°¡ µË´Ï´Ù. ÀÌ¿Í °°Àº ¾îÇø®ÄÉÀÌ¼Ç ÀÛ¼ºÀÚ °æ¿ì´Â ¿¡·¯ ÄÚµå ½ºÅ°¸¶·Î ´ëü½ÃŰ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.

¸Þ¼¼Áö ¹ø¿ª īŻ·Î±×¸¦ À¯ÁöÇÏ´Â °ÍÀº ÀڽŵéÀÇ ¾ð¾î·Î PostgreSQL¸¦ ±¸ÇöÇÏ°í ½ÍÀº ¸¹Àº ÀÚ¿øºÀ»çÀÚÀÇ Áö¼ÓÀûÀÎ ³ë·ÂÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¸¸¾à ÇöÀç ¸ð±¹¾î·Î ¸Þ¼¼Áö¸¦ »ç¿ëÇÒ ¼ö ¾ø°Å³ª ÃæºÐÇÏ°Ô ¹ø¿ªµÇÁö ¾ÊÀ» °æ¿ì, µµ¿òÀ» ÁÖ½Å´Ù¸é °¨»çÇϰڽÀ´Ï´Ù. µµ¿òÀ» ¿øÇÒ °æ¿ì, Chapter 46³ª °³¹ßÀÚµéÀÇ ¸ÞÀϸµ ¸®½ºÆ®¿¡ Åõ°íÇØ Áֽʽÿä.