본문 바로가기

공부 이야기/데이터베이스

LOB (Large OBject) 데이터에 대해

varchar, int, double, number, date와 같은 일반적인 Datatype과 다르게 LOB을 사용하는 경우가 있다.

- 크기가 큰 데이터

- 비정형, 준정형 데이터를 저장할 때

 

LOB 데이터를 관리하는 방식에 basicfiles, securefiles가 있는데, 좀 더 나중에 나온 securefiles을 기준으로 설명

 

oracle은 LOB 데이터를 해시로 관리한다.

즉, 데이터 자체를 저장하는 것이 아닌 해시값을 저장하고 MD5 재해시를 통해 원 데이터를 복원하는 방식으로 관리하는 것이다.

 

어떤 장점이 있을까?

예를 들어, 같은 내용을 갖는 LOB 데이터를 100번 insert 하는 작업이 있다고 치자.

처음 한 번은 데이터를 저장해야할 것이다.

하지만 두번째 데이터부터는 데이터를 저장하지 않고 해시값으로 대체한다.

해당 압축 방식을 사용하면 메모리 공간을 효율적으로 사용할 수 있다.

 

위의 경우는 테이블 관점에서의 압축이다. LOB 데이터 자체도 압축이 가능하다.

이미 압축되어 있는 JPEG는 의미가 없지만, XML 데이터는 압축을 통해 메모리 공간을 더 절약할 수 있다.

 

LOB은 어지간하면 캐싱을 지양한다. 

크기가 워낙 크기 때문에 정작 중요한 데이터가 메모리에서 밀려날 수 있기 때문이다.

 

LOB은 기본적으로 redo 영역에 로그를 저장하지만, 데이터가 크기 때문에 '메타 데이터'를 저장한다.

 

참고)

https://dataonair.or.kr/db-tech-reference/d-guide/dbms-1/?mod=document&uid=101828