728x90
반응형
인덱스와 파티셔닝의 상호 작용
- key - value 데이터 모델에 의존한 파티셔닝 방식 = 기본키를 통해 레코드를 식별한다.
파티셔닝과 보조 색인
보통 보조색인의 역할 : 특정한 값이 발생한 항목을 검색하는 수단으로 이용
ex) user_123 의 실행 액션 조회 / 'water' 가 들어간 글을 모두 조회
보조 색인이 있는 DB 색인 방식 2가지
- 문서 기반 파티셔닝 [local Index]
- 용어 기반 파티셔닝 [Global Index]
문서 기반 보조 색인 파티셔닝
문서 파티셔닝 색인
- local index(지역 색인)으로 칭하기도 함
- 각 파티션은 본인의 보조 색인을 유지
- 보조 색인은 해당 파티션이 속하는 document만 담당 [Create, Update, Delete 시의 파티션만 다루면 된다]
- 장점 : write 작업 - 파티션의 보조색인 독립성
- 단점 : read 작업 - 모든 파티션으로 요청해야하며, 취합 과정까지 필요하다 (scatter/gather)
- 꼬리 지연 시간 증폭이 발생하기 쉽다
- ex) MongoDB, Riak, Elasticsearch, Solr ...
용어 기반 보조 색인 파티셔닝
용어 기준 파티셔닝 색인
- global index (전역 색인)으로 칭하기도 함
- Term 기준으로 파티셔닝되다 (term-partitioned)
Term(용어) : 문서에 등장하는 모든 단어
- 각 파티션이 모든 파티션의 데이터를 담당하는 전역 색인을 통해 관리
- 방법 :
- Term 자체를 사용 - 이를 통해 범위 스캔 가능
- Term의 Hash 값 사용 - 분산율 증가
but 오로지 한 노드에만 색인을 저장할 수는 없다.
만약 한 노드에만 저장했을 때, 해당 노드가 병목이 발생한다면 파티셔닝의 목적을 해치기 때문이다.
- 장점 : read 수행 - 모든 파티션에 질의할 필요가 없다.
- 단점 : write 수행이 느리며, 복잡하다 (여러 파티션에 모두 영향)
global index는 색인을 항상 최신상태로 유지하기 위해서는 쓰기에 영향받는 모든 파티션에 대한 '분산 트랜잭션' 필요
- (지원하지 않는 DB도 존재)
실제로는 비동기로 갱신 [write 수행 직후, 다른 파티션에서 read 시 변경 사항이 적용되지 않을 수 있음]
ex_1 ) DynamoDB : 평소 global 보조 index 반영 시간 < 1초 / 인프라 결함시 반영 latency 존재
ex_2 ) Oracle Data WhareHouse : local index 와 global index 선택 가능
ex_3 ) Riak 의 검색 기능 :Partitioning Secondary Indexes by Term [global index]
728x90
반응형
'책 > 데이터중심 애플리케이션 설계' 카테고리의 다른 글
데이터중심 애플리케이션 설계 - 7장 [트랜잭션] 리뷰 - 1 (0) | 2022.11.06 |
---|---|
데이터중심 애플리케이션 설계 - 6장 [파티셔닝] 리뷰 - 3 (0) | 2022.10.22 |
데이터중심 애플리케이션 설계 - 6장 [파티셔닝] 리뷰 - 1 (0) | 2022.10.20 |
데이터중심 애플리케이션 설계 - 4장 [부호화와 발전] 리뷰 (1) | 2022.09.25 |
데이터중심 애플리케이션 설계 - 3장 [저장소와 검색] 리뷰 - 3 : 트랜잭션 처리 / 분석 (0) | 2022.09.13 |