콘텐츠로 이동

LOB 데이터 타입

LOB 데이터 타입#

개요#

LOB(Large Object) 데이터 타입은 대용량 데이터를 저장할 수 있는 데이터 타입이다. 하나의 LOB칼럼에 저장 가능한 데이터의 크기는 최대 4GB-1byte 이다. 테이블을 생성할 때 다른 타입들과 달리 사용자가 LOB 칼럼의 크기를 명시할 필요가 없다. 그리고 하나의 테이블에 하나 이상의 LOB 타입 칼럼을 정의할 수 있다.

LOB 데이터 타입은 이미지, 동영상 파일들과 같은 이진 데이터를 저장하는 BLOB(Binary Large Object)과 문자열 데이터를 저장하는 CLOB(Character Large Object)으로 구분된다.

LOB의 특징#

Altibase가 제공하는 LOB은 다음과 같은 특징이 있다.

  • 데이터 저장 기능
  • 부분 읽기(Partial Read)
  • 디스크 LOB 파티셔닝

데이터 저장 기능#

ODBC의 SQLPutLob 함수 또는 JDBC의 setBlob 또는 setClob 메소드를 이용하여 CLOB, BLOB 데이터를 저장할 수 있다.

부분 읽기(Partial Read)#

LOB 데이터의 특정 구간에 대한 데이터 조각을 읽는 기능이다. Altibase ODBC의 SQLGetLob 함수를 이용하여 특정 오프셋의 크기를 읽는다.

디스크 LOB의 파티셔닝#

디스크 LOB 데이터는 테이블이 속한 테이블스페이스가 아닌 다른 디스크 테이블스페이스로 저장이 가능하다. 이는 테이블 파티셔닝 방법과 유사하다.

LOB 칼럼의 저장#

LOB 데이터는 대부분의 경우 레코드 영역 밖의 가변 영역에 저장된다. 또한 LOB 칼럼의 크기가 크지 않을 때에는 in row 옵션을 사용하여 레코드 영역(고정 영역) 안에 저장하기도 한다. 그러나 디스크 테이블의 LOB 데이터는 크기와 상관없이 항상 가변 영역에 저장된다.

가변 영역에 저장되는 LOB 칼럼의 데이터는 크기가 매우 크기 때문에, 레코드의 나머지가 속하는 테이블스페이스에 같이 저장되는 것은 공간 사용 측면에서 효율성이 떨어진다.

디스크 테이블의 경우 LOB 칼럼 데이터를 LOB 칼럼이 속한 테이블과 별도의 테이블스페이스에 저장할 수 있다. 그러나 메모리 테이블의 경우에는 LOB 칼럼 데이터를 별도로 저장할 수 없고 테이블과 동일한 테이블스페이스에만 저장할 수 있다.

BLOB#

흐름도#

구문#

BLOB [ IN ROW size ]

설명#

BLOB은 이진형 대용량 데이터를 저장하기 위한 이진형 데이터 타입으로, 4GB-1byte 크기까지 저장 가능하다.

IN ROW 절에 대한 자세한 설명은 앞서 기술한 "IN ROW 절"을 참고한다.

CLOB#

흐름도#

구문#

CLOB [ IN ROW size ]

설명#

CLOB은 문자형 대용량 데이터를 저장하기 위한 문자형 데이터 타입으로, 4GB-1byte 크기까지 저장 가능하다.

IN ROW 절에 대한 자세한 설명은 앞서 기술한"IN ROW 절"을 참고한다.

제한 사항#

  • 커서에서 LOB 타입 칼럼을 사용할 수 없다.
  • 휘발성 테이블스페이스 또는 디스크 임시 테이블스페이스에 LOB 타입 칼럼을 사용할 수 없다.
  • 폐기된 테이블스페이스의 LOB 타입 칼럼은 접근할 수 없다.
  • 파티션 키 칼럼은 대소 비교가 가능해야 하기 때문에 LOB 타입 칼럼은 파티션 키 칼럼으로 사용될 수 없다.
  • LOB 타입 칼럼에는 인덱스를 생성할 수 없다.