SSISO Community

시소당

LOB Type에 대한 정리

LOB(Large Objects)는 오라클에서 대용량의 데이터를 저장하기 위해 설계된  datatype의 일종이다. LOB은 9i에서는 4GB까지 저장이 가능했으나 10g에 와서는 설정에 따라 8TB~12TB까지 저장이 가능하다. LOB은 널리 알려진 바와 같이 text file, test data와 그림, 동영상, 기타 binary 형태의 문서 파일 등을 저장할 수 있다.
그런데 오라클은 LOB이전에 LONG(LONG RAW 포함)이라는 datatype도 지원을 해왔는데 이것의 차이는 무엇일까? 아니 LONG에 비해 LOB이 더 좋은 점을 무엇일까라는 질문을 던지는 것이 더 나을 것 같다,.
첫째는 용량이다. LONG은 2GB까지만 저장이 가능하다. LOB은 이미 언급했듯 12TB까지 가능하다.
둘째는 한 테이블내에서 사용할 수 있는 컬럼의 갯수의 차이이다. LONG의 경우는 하나의 테이블에서는 하나의 LONG컬럼만을 사용할 수 있으나 LOB은 이러한 제약에서 비교적 자유롭다. 한 테이블이 여러개의 LOB 컬럼을 가질 수 있기 때문이다.
세째는 Random Access의 사용 여부이다. LONG의 경우는 오로지 Sequential access만이 가능했지만 LOB은 Random Access가 가능하다. 이 둘의 차이는 내가 필요한 일부분의 데이터만 콕 집어서 가져오느냐 필요한 것이 나올때 까지 모조리 뒤져야 하느냐의 문제이다. 당연히 성능과 관계가 있을 수 밖에 없다.
네째는 Object 속성을 가질 수 있느냐의 문제이다. 물론 LONG은 안되고  LOB은 된다.
 
이 LOB이라는 것은 Internal LOB과 External LOB으로 나눌수 있다. Internal LOB은 테이블 스페이스 내에 데이터를 저장하는 것을 의미하고 여기에는 CLOB, NCLOB, BLOB이 포함된다. CLOB은 Character 덩어리를 저장할 수 있고 NCLOB은 National Character Set으로 된 덩어리를 저장할 수 있다. BLOB은 binary덩어를 저장하는데 사용한다. 이 Internal LOB들은 기본적으로는 Persistent 데이터이지만 temporary 테이블 스페이스에 저장이 가능하기 때문에 temporary 데이터가 될 수도 있다.
External LOB는 DB바깥의 OS 파일들을 의미하는데 오라클은 BFILE이라는 object의 형태로 이 file에 접근이 가능하다. 오라클에는 이 file에 대한 참조 정보만을 저장하고 물리적으로는 오라클 바깥에 존재하게 된다. 이 BFILE은 Binary, text 등 어떤 형태로든 가능하다. 그러나 이 external LOB은 트랜잭션의 영향을 받지 않는다는 것을 명심해야 한다.이 파일에 대한 제어권는 OS가 가지고 있기 때문이다.
LOB은 locator와 value로 구성되는데 이 모든 LOB는 locator를 통해 접근할 수 있게 된다. LOB locator는 LOB value의 참조 정보이다. Internal LOB의 경우는 각 컬럼에 구별 가능한 LOB Locator와 구별 가능한 LOB value의 복사본을 가지고 있게 된다. 그러나 External LOB의 경우는 각 BFILE마다 각각 구별되는 locator를 가지게 된다.
 

1229 view

4.0 stars