728x90
이번 블로그는 Couchbase 서버의 Persisitence를 구성하는 Storage 설정에 대해 알아 보겠습니다.
Couchbase Storage의 특징은 다음과 같습니다.
- Couchbase에서 모든 Document는 압축된 형태로 저장됩니다.
- 디스크를 읽고 쓰는 작업은 클라이언트와 Couchbase 서버 간 작업에 영향을 주지 않습니다.
- Time-To-Live(TTL)이 설정된 Document는 해당 설정에 따라 디스크에서 자동으로 삭제됩니다.
Couchbase Storage는 기본적으로 Multi-threaded Reader/Writer를 통해 고성능 디스크 데이터 처리를 제공합니다. Reader 및 Writer의 최대 Thread 수를 설정하는 데 고려할 사항은 다음과 같습니다.
- 각 노드 당 최대 64 개, 최소 1 개로 설정할 수 있습니다.
- Thread 수를 높일 수록 전반적으로 시스템 성능을 높일 수 있지만 하드웨어 리소스가 허용하는 수준이어야 합니다.
- Writer Thread 수를 높일 수록 Durable Write(디스크까지 저장해야 트랜잭션 완료)의 성능을 최적화할 수 있습니다.
- 기본 설정을 유지하되 변경을 하려면 충분한 테스트를 통해 검증해야 합니다. 변경을 위한 기준점은 I/O 시스템의 Queue Depth와 동일하게 설정하고 이 수치를 변화시키면서 최적 수치를 위한 테스트를 진행합니다.
Couchbase Storage에 저장된 Document는 다음과 같은 작업으로 삭제될 수 있습니다.
- 어플리케이션에 의한 삭제
- Time-To-Live(TTL)이 설정된 Document는 해당 설정에 따라 디스크에서 자동으로 삭제
삭제된 Document는 노드 간 혹은 클러스터 간 일관성 유지를 위해 Couchbase 서버가 관리하는 Tombstone 영역에 기록됩니다.
- Document가 삭제되면 Tombstone이 생성되고 해당 Document의 Key와 메타 데이터가 기록됩니다.
- Collection이 삭제되면 Tombstone이 생성되고 해당 Collection ID, Scope ID 등을 포함한 정보가 기록됩니다. Collection이 삭제되면 해당 Collection에 존재했던 모든 Document가 삭제되고 개별 Document에 대한 Tombstone은 생성되지 않습니다.
- Couchbase 서버는 일정 주기로 Tombstone 자체를 제거합니다.
노드 초기화 단계에서 각 서비스 별로 데이터를 저장하는 경로를 별도로 설정할 수 있습니다. 다음은 데이터 저장 경로를 별도로 설정할 수 있는 서비스 목록입니다.
- Data 서비스
- Index 서비스
- Analytics 서비스
- Eventing 서비스
Couchbase는 Append-Only Write를 사용합니다.
- 이 방식은 데이터 파일의 내부적인 일관성 유지와 손상 위험을 줄이기 위한 목적입니다.
- 파일에 대한 모든 변경 작업은 추가, 변경, 삭제와 상관 없이 파일 끝에 새로운 Item이 추가되는 방식으로 수행됩니다.
- 이렇게 계속 증가하는 파일 크기는 주기적인 Compaction 작업을 통해 줄어들 수 있습니다. 이 Compaction 작업은 수동으로 수행하거나 자동 스케줄링(Auto Compaction)을 통해 수행할 수 있습니다. 그리고 특정 Bucket 혹은 모든 Bucket을 대상으로 할 수 있습니다.
'Couchbase 아키텍처' 카테고리의 다른 글
[서비스]Data 서비스 (0) | 2022.08.16 |
---|---|
[데이터]Ejection (0) | 2022.08.16 |
[데이터]메모리 Warmup (0) | 2022.08.15 |
[데이터]메모리 관리 : 서비스 메모리 Quota (0) | 2022.08.15 |
[데이터]Caching & Persistence (0) | 2022.08.15 |