PostgreSQL 8.0 공식 릴리즈가 머지 않은 상태에서 한국어 관련으로 몇가지 주의할 점이 있어
이렇게 먼저 공지합니다.
한국어 사용자들에게 있어 가장 크게 바뀐 부분은 http://pgfoundry.org/projects/pginstaller/ 페이지에서 배포하는 win32 binary 설치 파일을 이용해서 설치를 하게 되면 강제적으로 각 콘솔용 프로그램들의 메시지가 한국어로 보이게 됩니다.
한국어로 보지 않기를 원하면, chcp 명령 (codepage 값을 바꾸는 명령)으로 cmd 창의 codepage를 변경하셔야합니다.
PostgreSQL에서는 한국어 사용을 위한 가장 바람직한 데이터베이스 문자셋은 utf-8입니다. PostgreSQL에서는 이것을 unicode 라고 표현하고 있습니다. 엄격히 말하면 틀린 표현이지만, 아무튼 PostgerSQL에서 이야기하는 유니코드는 utf-8을 의미합니다.
일단 전통적인 문자셋으로 euc-kr 문자셋을 사용할 수도 있으나, 이것을 사용하게 되면, PostgreSQL에서는 이 문자셋에서 표현할 수 없는 글자들 - 흔히 말하는 확장완성형, uhc, cp949, mswin949 문자셋의 글자들의 입력 자체를 막고 있습니다. 즉, '아햏햏' 같은 글자를 입력할 길이 없습니다. 그래서, 부득이 PostgreSQL을 사용하고, 한국어를 자유롭게 사용하려면, 유니코드를 데이터베이스 문자셋으로 사용할 수 밖에 없습니다.
설치 할 때의 주의 사항.
다음, pginstaller 를 통해 설치할 때, 로케일을 물어보는데, 이때, 기본값을 C 로 지정하셔야합니다.
Korean_Korea.949 로 지정하게 되면, LC_COLLATE 값을 Korean_Korea.949 로 지정해서 데이터베이스 클러스터를 만들게 됩니다. 이렇게 되면, like 연산에서의 인덱스를 쓸 수 없게 되며, 한국어 자료의 정렬이 이상하게 됩니다.
PostgreSQL 개발진 측 말을 빌면, LC_COLLATE 값이 C 아닌 값으로 지정될 경우, M$ Windows의 collate 관계 각종 함수들이 오동작을 하기 때문이다고 합니다. 이는 M$ Windows 쪽에서 지원하지 않는 원천적인 문제라고 합니다.
또한 서버 메시지로 utf-8 인코딩으로 만들어진 메시지들이 모국어도 자동 변환되어버리는 문제때문에, 서버가 오동작 하게 되는 원인이 되기도 합니다.
자세한 이야기는 http://database.sarang.net/?inc=read&aid=5736&criteria=pgsql&subcrit=qna&id=&limit=20&keyword=&page=1
다음, 위의 문제들 때문에, 결국 pginstaller를 통해서 설치하실 때, 초기 데이터베이스 문자셋으로 unicode를 사용할 수 없게 만들어 두었습니다. 그래서, 가장 보편적인 SQL_ASCII 로 선택하셔야합니다. - 물론 데이터베이스가 초기화 되고 서비스가 가동되면, 그때 새로운 데이터베이스를 unicode로 만들어서 사용하면 됩니다.
위에서 언급한 대로 SQL_ASCII로 한국어를 사용하시면, like 연산에서 인덱스 사용이 불가능합니다. - 라고 했는데, 테스트를 해보니, 되네요.
SQL_ASCII 문자셋을 사용해도 될 것 같습니다. 이 경우는 단지 흠이 varchar(2) 는 한글 한 글자를 뜻한다는 것과, 정렬에서 '햏' 이 '피' 보다 앞에 나온다는 것 뿐입니다. 나머지는 모두 다 잘 될 것 같네요.
이렇게 해서, 설치된 PostgreSQL 사용법에 있어, 데이터베이스 문자셋이 unicode 일 경우 psql 프로그램을 사용하면 오류가 발생합니다. 왜냐하면, psql 의 기본 문자코드는 euc-kr인데, 서버가 unicode 이기 때문에 발생하는 문제인데, 이부분은
\encoding uhc
set encoding to uhc;
같은 명령으로 client_encoding 을 확장완성형으로 지정해 주면 됩니다.
다음, 한국어가 아닌 다국어를 표현해야할 경우라면, 문제가 조금 더 복잡해지는데, 이런 경우는 psql 프로그램을 포기하는 것도 한 방법입니다. :) 아니면,
설치디렉토리/share/locale/ko/LC_MESSAGES 디렉토리를 없애버리든지 이름을 바꾸어 두든지 해야할 것같네요.
문서를 좀 너저분하게 쓰는 스타일인지라, 글이 좀 장황한데, 아무튼 중요한 이야기입니다.
참고하세요. |