ORACLE/ADMIN2009. 4. 22. 09:43
반응형

LOB, LONG, LONG RAW 데이터 타입 간의 비교


PURPOSE
-------------
이 문서는 LOB 데이터 타입과 LONG이나 LONG Raw 데이터 타입의 차이점 및 LOB 사용에 따라 발생하는 제약 사항을 기술하는 데 목적이 있다.

Explanation
---------------
LOB (Large Object)는 LONG이나, LONG RAW 데이터 타입과 유사하지만, 일부 차이점이 존재한다.

1.
테이블의 한 ROW에 여러 LOB 컬럼이 있을 수 있는 반면, LONG 또는 LONG RAW 컬럼은 한 ROW에 하나 밖에 사용될 수 없다.

2. LOB는 사용자 정의 데이터 타입 (user-defined datatype)의 속성 (attribute) 으로 사용될 수 있는 반면, LONG이나 LONG RAW는 속성으로 사용될 수 없다.

3.
LONG 또는 LONG RAW는 값 전체가 테이블 내에 저장이 되는 반면, LOB는 테이블 컬럼
내에 LOB locator만 저장이된다.
BLOB과 CLOB (내부 LOB) 데이터는 별도의 테이블스페이스에 저장시킬 수 있으며, BFILE (외부 LOB) 데이터는 데이터베이스 외부의 별도 파일로 존재한다. 따라서 LOB 컬럼을 액세스할 경우에는, locator 값만 return되는 반면, LONG이나 LONG RAW 컬럼을 액세스할 경우에는, 전체 값이 return된다.

4. LOB 데이터는 4GB까지 저장이 가능하며, BFILE 컬럼이 가리키는 파일 크기는 4GB 이내에서 OS에서 지원하는 최대 크기까지 가능하다. 액세스 가능한 범위는 1부터 (232-1) 까지이다. 한편 LONG이나 LONG RAW 데이터 타입에서는 2GB 까지만 지원이 가능하다.

5. 데이터에 대한 랜덤 액세스 기능 또는 데이터 조작을 할 경우 LOB를 사용하는 것이 LONG 또는 LONG RAW를 사용하는 것에 비해 훨씬 많은 기능을 사용할 수 있다.

6.
LOB는 랜덤 액세스가 가능한 반면, LONG 타입에 저장된 데이터는 처음부터 원하는 지점까지 순차적으로 읽어 처리하여야 한다.

7.
LOB 데이터에 대한 replication을 local 또는 remote에서 수행할 수 있는 반면, LONG / LONG RAW 컬럼 데이터는 replication이 되지 않는다.

8.
LONG 컬럼의 데이터는 TO_LOB()라는 함수를 사용하여 LOB로 변환 가능하지만,
LOB를 LONG / LONG RAW로 변환 하는 기능은 제공되지 않는다
.



한편, LOB 사용을 하는데 다음과 같은 제약 사항이 따른다.

1. LOB는 클러스터 테이블에서는 사용할 수 없으며, 따라서 클러스터 키로도 사용할 수 없다.

2.
LOB 컬럼은 GROUP BY, ORDER BY, SELECT DISTINCT 등에 사용할 수 없으며
JOIN 에도 사용할 수 없다.
그러나 LOB 컬럼을 사용하는 테이블에 대한 UNION ALL은 지원이 된다. UNION MINUS나 SELECT DISTINCT는 OBJECT TYPE의 MAP이나 ORDER 함수가 정의된 경우 사용할 수 있다.

3. LOB 컬럼은 ANALYZE ... COMPUTE/ESTIMATE STATISTICS 명령 사용 시에도
analyze 되지 않는다.

4. LOB는 파티션된 IOT (Index Organized Table)에는 사용할 수 없다. 그러나
파티션 되어 있지 않은 IOT에는 사용할 수 있다.

5. LOB는 VARRAY에는 사용할 수 없다.

6. NCLOB은 OBJECT TYPE의 속성(attribute)으로 사용될 수 없으나, 메소드 정의를
하는 데는 NCLOB 파라미터를 사용할 수 있다.


Reference Documents
-------------------
Oracle8i Application Developer's Guide
Note:107441.1

출처 : Technical Bulletin



반응형
Posted by [PineTree]