LOB, LONG, LONG RAW 데이터 타입의 비교
– 테이블의 한 ROW에 여러 LOB 컬럼이 있을 수 있는 반면, LONG 또는 LONG RAW 컬럼은 한 ROW에 하나 밖에 사용될 수 없다.
– LOB는 사용자 정의 데이터 타입 (user-defined datatype)의 속성 (attribute) 으로 사용 될 수 있는 반면, LONG이나 LONG RAW는 속성으로 사용될 수 없다.
– LONG 또는 LONG RAW는 값 전체가 테이블 내에 저장이 되는 반면, LOB는 테이블 컬럼내에 LOB locator만 저장이된다.
BLOB과 CLOB (내부 LOB) 데이터는 별도의 테이블스페이스에 저장시킬 수 있으며, BFILE (외부 LOB) 데이터는 데이터베이스 외부의 별도 파일로 존재한다. 따라서 LOB 컬럼을 액세스할 경우에는, locator 값만 return되는 반면, LONG이나 LONG RAW 컬럼을 액세스할 경우에는, 전체 값이 return 된다.
– LOB 데이터는 4GB까지 저장이 가능하며, BFILE 컬럼이 가리키는 파일 크기는 4GB 이내에서 OS에서 지원하는 최대 크기까지 가능하다. 한편 LONG이나 LONG RAW 데이터 타입에서는 2GB 까지만 지원이 가능하다.
– 데이터에 대한 랜덤 액세스 기능 또는 데이터 조작을 할 경우 LOB를 사용하는 것이 LONG 또는 LONG RAW를 사용하는 것에 비해 훨씬 많은 기능을 사용할 수 있다.
– LOB는 랜덤 액세스가 가능한 반면, LONG 타입에 저장된 데이터는 처음부터 원하는지점까지 순차적으로 읽어 처리하여야 한다.
– LOB 데이터에 대한 replication을 local 또는 remote에서 수행할 수 있는 반면, LONG / LONG RAW 컬럼 데이터는 replication이 되지 않는다.
– LONG 컬럼의 데이터는 TO_LOB()라는 함수를 사용하여 LOB으로 변환 가능하지만, LOB을 LONG / LONG RAW로 변환 하는 기능은 제공되지 않는다.
LOB 데이터 타입의 제약 사항
– LOB는 클러스터 테이블에서는 사용할 수 없으며, 따라서 클러스터 키로도 사용할 수 없다.
– LOB 컬럼은 GROUP BY, ORDER BY, SELECT DISTINCT 등에 사용할 수 없으며 JOIN 에도 사용할 수 없다.
– LOB 컬럼은 ANALYZE … COMPUTE/ESTIMATE STATISTICS 명령 사용 시에도 Analyze 되지 않는다.
– LOB는 파티션된 IOT (Index Organized Table)에는 사용할 수 없다. 그러나 파티션 되어 있지 않은 IOT에는 사용할 수 있다.
– LOB는 VARRAY에는 사용할 수 없다.
– NCLOB은 OBJECT TYPE의 속성(attribute)으로 사용될 수 없으나, 메소드 정의를 하는 데는 NCLOB 파라미터를 사용할 수 있다.