2010년 6월 13일 일요일

Database에 긴 Text를 입력하는 다양한 방법

Database에 Text를 저장할때 가장 많이 사용하는 방식은 VACHAR(N) - DB가 Oracle인 경우에는 VACHAR2(N)을 사용하는 방식이다.

DB마다 조금씩 다르기는 하지만 VACHAR 또는 VACHAR2의 길이는 4,000 character로 제한된다. (특이하게 Derby의 경우에는 32,672 characters이다)

그래서 많이 쓰는 방식이 CLOB 또는 LONG VACHAR 이다. 그런데 2가지의 경우의 특징은 다음과 같다.

CLOB TYPE 사용
  • 데이터의 제한이 거의 없다(일반적으로 2 Gigabytes 까지 지원한다.)
  • 지원하지 않는 DB의 경우에도 다른 Type으로 지원한다.( 예를 들면 TEXT가 대표적이다.)
  • JAVA에서 사용하기 위해서는 java.lang.String이 아닌 java.sql.Clob Class를 이용하여야 한다.

LONG VACHAR 사용
  • 가장 많이 쓰는 상용 DB인 Oracle 에서 LONG TYPE으로 지원하다가 최시버전에서 Depreciated 되었다.(VACHAR가 Depreciated 되고 VACHAR2 사용을 유도하는 이유와 동일한 이유에서 진행되었다.)
  • DB별로 데이터 제한이 다르다.(일반적으로 2 Gigabytes이나 Derby의 경우 32,700 characters 이다)
  • JAVA에서 사용하기 위해서 java.lang.String Class를 사용하면 되기 때문에 편하다.

많은 DB를 지원하기 위해서는 CLOB을 사용하는 것이 가장 편한 방법으로 판단되지만 CLOB을 자바에서 사용하기 위해서는 java.lang.String으로 변경하는 별도의 방법이 필요하다.( java.sql.Clob 의 경우 긴 데이터이기 때문에 당연한 방법이기는 하지만 Reder를 이용하여 데이터를 읽어오는 방식이기 때문에 짧은 데이터의 경우 java.lang.String을 사용하는 것보다 번거럽다.) 만약 30,000 내외의 CARACTER를 이용하는 경우라면 LONG VACHAR(Oracel의 경우 LONG을 사용하는 것 - Depreciated 되었다는 점이 찜찜하긴 하지만 ORACLE의 최신버전에서도 완전히 제거하기는 힘들것으로 판단된다.)도 괜찮은 대안으로 생각된다.

추가로 이제껏 Oracle을 사용하면서 VACHAR2를 많이 사용했는데 이 TYPE의 경우 ANSI-SQL에서 지원하는 TYPE은 아니라는 사실을 알게 되었다. 그리고 Oracle 에서는 VARCHAR TYPE이 Depreciated 되었다는 사실도 새롭게 알게되었다.


댓글 없음:

댓글 쓰기