데이터중심 애플리케이션 설계 - 6장 [파티셔닝] 리뷰 - 2
책/데이터중심 애플리케이션 설계

데이터중심 애플리케이션 설계 - 6장 [파티셔닝] 리뷰 - 2

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
반응형