정의와 특성
정의
External LOB(Large Object) 타입은 텍스트 또는 이미지 등 크기가 큰 객체를 처리하기 위한 데이터 타입이다. LOB 타입 데이터가 생성 및 삽입되면 이는 외부 저장소에 파일로 저장되고 CUBRID 데이터베이스에는 해당 파일의 위치 정보(LOB locator)가 저장된다. 데이터베이스에서 해당 데이터(LOB locator)가 삭제되면, 외부 저장소에 저장된 해당 파일이 함께 삭제된다. CUBRID는 두 가지 LOB 타입을 지원한다.
- Binary Large Object(BLOB)
- Character Large Object(CLOB)
관련 용어
- LOB(Large Object): 이진 바이너리 또는 텍스트 등 크기가 큰 객체이다.
- FBO(File Based Object): DB 데이터를 DB 외부의 파일로 저장하는 객체이다.
- External LOB: LOB 데이터를 DB 외부에 파일로 저장하는 객체로서 FBO라고도 하며, CUBRID는 이를 지원한다. Internal LOB은 LOB 데이터를 DB 내부에 저장하는 객체이다.
- External Storage: LOB을 저장하는 외부 저장소이다(예: POSIX 파일 시스템).
- LOB Locator: 외부 저장소에 저장된 파일의 경로명이다.
- LOB Data: LOB Locator에 명시된 위치에 있는 파일의 내용이다.
파일명
LOB 데이터는 외부 저장소에 다음과 같은 파일명으로 저장된다.
{table_name}_{unique_name}
- table_name : prefix로 삽입되어 하나의 외부 저장소에 여러 테이블의 LOB 데이터를 저장할 수 있다.
- unique_name : 데이터베이스 서버가 임의로 생성하는 이름이다.
기본 저장소
- LOB 데이터의 저장소는 데이터베이스 서버 상의 로컬 파일 시스템이다. LOB 데이터는 cubrid createdb 유틸리티의 -lob-base-path 옵션 값으로 지정된 경로에 저장되며, 옵션이 생략될 경우 데이터베이스 볼륨이 생성되는 [db-vol path]/lob 경로에 저장된다. 보다 자세한 내용은 데이터베이스 생성 및 저장소 생성 및 관리를 참고한다.
- CUBRID가 제공하는 API나 CUBRID 매니저를 사용하지 않고 사용자가 직접 LOB 파일 내용을 수정하면, 해당 내용의 일치성이 보장되지 않으므로 주의한다.
- 데이터베이스 위치 정보 파일(databases.txt)에 LOB 데이터 파일 경로가 등록되어 있음에도 불구하고 해당 경로가 삭제된 경우, 데이터베이스 서버(cub_server) 및 독립 모드(standalone)로 동작하는 유틸리티가 정상적으로 실행되지 않으므로 주의한다.