alert
파트너 프로그램 문의 요청이 정상적으로 전송되었습니다.
담당자가 곧 연락드리도록 하겠습니다.
메뉴 열기

설정 DB

아키텍처

로그프레소는 내부의 설정 데이터를 관리하기 위하여 형상관리를 지원하는 파일 DB를 자체적으로 개발하여 사용합니다. 설정 DB는 별도의 외부 프로세스 없이 로그프레소 내에서 임베디드 모드로 동작하며, 옵션이 복잡한 설정 객체를 쉽게 관리할 수 있도록 지원합니다.

설정 DB는 설정을 추가, 삭제, 변경하는 모든 경우에 트랜잭션 로그를 남기도록 구성되어 있으므로 사용자의 모든 변경 내역을 추적할 수 있으며, 쉽게 이전 상태로 스냅샷을 되돌릴 수 있습니다.

설정 DB의 특징

설정 DB는 일반적인 파일이나 RDBMS과 다른 아래와 같은 특징을 지닙니다:

  • 가벼운 객체 데이터베이스 구성
  • 동시성 제어 및 크래시 복구
  • 설정의 형상관리 및 롤백
파일 연결 구조

설정 DB는 크게 변경집합 (changeset), 매니페스트 (manifest), 컬렉션 (collection) 3개의 개념으로 구성되어 있습니다. 매니페스트는 특정한 시점의 데이터 집합을 스냅샷으로 보존합니다. 변경집합은 매니페스트의 식별자와 커밋 로그 등 메타데이터를 포함합니다.

각 파일들은 용도만 다를 뿐 모두 동일한 리비전 로그 파일 포맷을 가지고 있습니다. 아래는 각 리비전 로그 파일의 레코드가 어떤 연결관계를 가지는지 보여줍니다.

최초의 설정 DB 상태를 아래와 같이 가정합니다:

만약 collection2의 레코드 1을 수정하게 되면, 물리적으로 기존 레코드가 변경되는 것이 아니라 수정된 레코드1을 파일 끝에 추가합니다. 컬렉션 파일 끝에 추가한 뒤, 컬렉션의 레코드에 대한 포인터 집합을 모아 버전 3의 매니페스트로 추가합니다. 이후 커밋 로그를 포함한 변경집합 레코드를 추가하여 커밋을 완결합니다.

만약 이 상태에서 버전 2로 되돌린다면, 버전 2의 매니페스트를 가리키는 변경집합 레코드를 새로 추가합니다. 설정 DB 클라이언트는 기본적으로 가장 마지막 변경집합 레코드를 따라 매니페스트 및 컬렉션 데이터를 조회합니다. 모든 변경이 누적되므로 클라이언트가 필요한 경우 특정한 버전을 지정하여 컬렉션 데이터를 조회할 수도 있습니다.

데이터가 무제한적으로 누적되는 문제를 회피할 수 있도록 최근 리비전의 데이터만 남기고 데이터베이스를 축소할 수 있습니다. 이 기능은 이후의 절에서 다룹니다.

최신정보 받기