728x90
이번 블로그는 Query 서비스를 운영하기 위해 필수적인 Primary & Secondary 인덱스를 관리하는 Index 서비스를 살펴 보도록 하겠습니다.
다음 Index 서비스를 위한 주요 Componet 입니다.
- Data 서비스에서 추가, 변경된 Document가 DCP 프로토콜을 통해 Projector and Router 프로세스로 전달됩니다.
- Projector and Router 프로세스는 기존에 전달받은 인덱스 정보를 참고하여 Index 서비스로 전달할 데이터를 결정하고 그 데이터를 Index 서비스의 Supervisor 프로세스에 전달합니다.
- Index 서비스의 Supervisor 프로세스는 전달받은 데이터를 기반으로 인덱스를 갱신합니다
인덱스는 다음과 같이 저장 방식에 따라 2 종류로 생성합니다.
- 기본적으로 인덱스는 단일 Collection을 대상으로 생성하고 한 Collection에 여러 인덱스를 생성할 수 있습니다.
- Standard 인덱스 : 디스크에 인덱스를 저장합니다. Community Edition은 인덱스 마다 파일을 별도로 생성하고 Enterprise Edition은 Compaction을 통해 한 파일에 여러 인덱스를 저장합니다.
- Memory-optimized 인덱스 : 메모리에 인덱스를 저장합니다. Enterprise Edition에서만 가능하고 인덱스 유지, 검색, 변경의 효율성이 높아집니다. 인덱스의 Snapshot이 디스크에 유지됩니다. 메모리 사용량 최적화를 위해 skiplist 구조를 사용합니다.
인덱스는 다음과 같이 인덱스 대상에 따라 2 종류로 생성합니다.
- Primary 인덱스 : 특정 Collection의 Key를 기반으로 하는 인덱스로 필터 조건이 없는 단순 Query에 사용되며 Full Scan, 운영 환경에서는 사용을 자제
- Global Secondary 인덱스 : 특정 Collection의 1개 이상 특정 필드에 생성하는 인덱스, Query 서비스에서 주로 사용하는 인덱스
'Couchbase 아키텍처' 카테고리의 다른 글
[서비스]Analytics 서비스 (0) | 2022.08.16 |
---|---|
[서비스]Search 서비스 (0) | 2022.08.16 |
[서비스]Query 서비스 (0) | 2022.08.16 |
[서비스]Data 서비스 (0) | 2022.08.16 |
[데이터]Ejection (0) | 2022.08.16 |