ORACLE/ADMIN2008. 4. 26. 06:24
반응형
다국어 지원을 위한 데이터베이스 구축 방안
지금까지 유니코드와 오라클에서 지원하는 유니코드에 대해서 살펴보았다. 다국어를 지원 데이터베이스를 생성하기 위해서 오라클에서 지원하는 유니코드를 어떻게 사용해야 할까?
두 가지 방법이 있는데
하나는 유니코드를 데이터베이스 character set으로 지정해서 유니코드 데이터베이스를 구축하는 방법이고,
다른 하나는 데이터베이스 character set에 관계없이 NCHAR (National Character) 데이터타입을 이용하는 방법이다.
오라클 9i부터 NCHAR 데이터타입에 유니코드 character set을 지정할 수 있게 되었으므로 두 번째 방법은 9i부터 고려할 수 있는 방법이다.
 
방법 자체를 놓고 보면 아주 간단하다고 할 수 있다.
데이터베이스 생성시 데이터베이스 character set에 유니코드를 지정해서 char나 varchar2에 다국어를 저장하거나 데이터 베이스의 character set을 변경하지 않고 다국어를 저장할 컬럼을 NCHAR (National Character) 데이터타입으로 설정해서 다국어를 저장하면 된다.
그렇지만 방법을 결정함에 있어서 프로그래밍 환경, 마이그레이션의 용이성, 성능, 데이터 타입, 어플리케이션의 타입 등 많은 요소들을 고려해야 하기 때문에 결코 쉬운 일은 아니다.
 
이제부터 두 방법을 사용할 때 어떤 character set을 지정하는 것이 유리한가를 살펴보자.
유니코드 데이터베이스 구축하면서 지정 가능한 character set은 UTF8, AL32UTF8, UTFE이다.
UTF8과 AL32UTF8은 유니코드에서 지정한 UTF-8과 거의 동일 특성을 가지고 있는데 UTF8의 경우는 보충(supplementary) character가 6byte를 차지한다는 점이 다르다. UTFE는 EBDIC platform을 위한 것이므로 일단 논외로 하겠다.
남은 UTF8과 AL32UTF8 중에서 UTF-8과 동일한 특성을 지닌 AL32UTF8을 사용할 것을 권장한다.
AL32UTF8은 보충(supplementary) character가 4byte를 차지하므로 UTF8에 비해서 공간을 덜 차지하고 유니코드에서 정한 UTF-8과도 동일하기 - 유니코드3.1기준에 맞기 - 때문에 보충(supplementary) character를 처리하면서 data conversion의 부하가 발생하지 않기 때문이다.
 
NCHAR 데이터타입의 character set은 데이터베이스 생성시 NATIONAL CHARACTER SET에 지정된 값에 따르며 UTF8과 AL16UTF16을 지정할 수 있다.
UTF8은 가변 길이기 때문에 스토리지를 절약할 수 있지만 처리시 스페이스를 붙이는 부하가 생기며, AL16UTF16은 고정 길이이기 때문에 처리시 스페이스를 붙이는 부하는 없지만 스토리지의 낭비를 초래할 수도 있다.
따라서 저장한 언어가 주로 어느 나라 언어인지 성능과 스토리지 절약 중 어떤 것에 중점을 둘 것인가를 고려해서 결정해야 한다.
 
여러 고려 요소들을 떠나서 가장 이상적인 방법은
AL32UTF8을 database character set으로 정하고 UTF8을 지원하는 언어로 프로그램을 개발해서 character set conversion이 없이 데이터가 오가는 것이다.
---코리아인터넷 닷컴 --
반응형
Posted by [PineTree]