데이터베이스 볼륨 구조

아래 그림은 CUBRID 데이터베이스 볼륨의 구조를 도식화한 구성도이다. 데이터베이스 볼륨을 크게 영구 볼륨, 임시 볼륨, 백업 볼륨으로 분류하고, 아래 구성도를 참고하여 각각에 속하는 볼륨 및 특징을 살펴보기로 한다.

영구 볼륨

영구 볼륨은 한번 생성되면 영구적으로 존재하는 데이터베이스 볼륨으로서, 볼륨 타입으로는 범용(generic), 데이터(data), 임시(temp), 인덱스(index), 제어(control), 활성 로그(active log), 보관 로그(archive log)가 있다.

범용 볼륨

사용자는 데이터베이스에 추가할 볼륨 타입을 데이터(data), 임시(temp), 인덱스(index) 중 하나의 용도로 지정하여 효율적으로 관리할 수 있는데, 별도로 데이터 용도를 지정하지 않는 경우에는 범용 볼륨으로 지정된다.

데이터 볼륨

데이터 볼륨이란, 인스턴스, 테이블, 멀티미디어 데이터 등과 같은 데이터를 저장하기 위한 볼륨이다.

임시 볼륨

임시 볼륨이란, 질의 처리 및 정렬(sorting)을 수행할 때 일시적으로 사용되는 볼륨이다. 다만, 임시 볼륨은 저장 공간이 임시적으로 생성 및 소멸되는 볼륨이 아니라 영구적으로 공간을 확보한 영구 볼륨 중 하나로서, 데이터가 임시적으로 저장 및 소멸되는 것을 의미한다. 따라서, CUBRID가 재시작하면 임시 볼륨 공간 내의 데이터는 초기화되고, 이에 관해 로그 정보는 남기지 않는다.

인덱스 볼륨

인덱스 볼륨이란, 신속한 질의 처리 또는 무결성 제약 조건(integrity constraints)의 신속한 검증을 위하여 인덱스 정보를 유지하는 볼륨이다.

제어 파일

제어 파일이란, 데이터베이스 내 존재하는 볼륨의 정보, 백업 정보, 및 로그의 정보를 저장한다.

이와 같이 각각의 제어 파일은 데이터베이스 볼륨의 위치, 백업 정보, 로그 정보를 포함하며, 데이터베이스가 재시작하면서 읽는 파일이므로 사용자 임의로 변경해서는 안 된다.

활성 로그

활성 로그(active log)란 데이터베이스의 최근 변경 사항을 포함하는 로그를 의미하며, 데이터베이스에 문제가 발생하는 경우 활성 로그 및 보관 로그를 이용하여 고장 발생 전의 커밋된 시점으로 완전하게 데이터베이스를 복구할 수 있다.

보관 로그

보관 로그는 최근의 변경 사항을 포함하고 있는 활성 로그(active log) 공간이 모두 사용된 후에 지속적으로 생성되는 로그를 보관하기 위한 볼륨이다. 마치 영구적 임시 볼륨 공간이 소진된 후에 일시적 임시 볼륨이 이용되는 것처럼, 활성 로그 볼륨의 공간이 소진된 후에 비로소 보관 로그 볼륨이 이용된다. 그러나, 일시적 임시 볼륨은 서버 프로세스가 종료될 때 자동 소멸하나 보관 로그 볼륨은 자동 소멸하지 않으므로 DBA가 불필요한 보관 로그에 대해서는 수동으로 삭제해야 한다는 차이점이 있다. DBA의 판단 하에 보관 로그 볼륨은 어느 때든 삭제할 수 있다.

일시 볼륨

일시 볼륨이란, 영구 볼륨과 반대되는 의미이다. 즉, 사용자가 영구 볼륨으로 지정한 공간을 초과하여 데이터가 축적되는 경우에만 일시적으로 마련되는 저장 공간을 일시 볼륨이라 하며, 이는 서버 프로세스가 종료됨에 따라 소멸된다. 이처럼 일시적으로 생성 및 소멸되는 볼륨으로는 일시적 임시 볼륨이 있다.

일시적 임시 볼륨

영구 볼륨에 속하는 임시 볼륨은 영구적으로 공간을 확보하는 볼륨이며, 일시적 임시 볼륨은 영구적 임시 볼륨으로 지정된 공간이 모두 사용된 후에 시스템에 의해 일시적으로 생성하는 임시 볼륨이다. 따라서, DBA는 데이터베이스 운영 상황을 고려하여 적절한 크기의 영구적 임시 볼륨을 확보해야 한다.

일시적 임시 볼륨은 조인(join)이나 정렬이 수행하거나 인덱스를 생성할 때 필요한 디스크 공간을 확보하는 경우에 생성되며, 일시적 임시 볼륨을 생성하는 대형 질의의 예로는 1) GROUP BYORDER BY가 포함된 질의 2) 부질의(subquery)가 포함된 질의, 3) 정렬-병합(sort-merge) 조인이 수행되는 질의, 4) CREATE INDEX 문장이 포함된 질의 등이 있다.

백업 볼륨

백업 볼륨은 데이터베이스에 대한 스냅샷으로서, 이러한 백업 볼륨과 로그 볼륨을 기반으로 특정 시점까지 발생한 트랜잭션을 복구할 수 있다.

사용자는 cubrid backupdb 유틸리티를 통해 데이터베이스 복구를 위해 필요한 모든 데이터를 복사할 수 있으며, 데이터베이스 환경 설정 파일(cubrid.conf)의 backup_volume_max_size_bytes 파라미터 값을 설정하여 백업 볼륨의 분할 크기를 조정할 수 있다.