issues
search
prgrms-web-devcourse
/
BE-Team-preArmand-Book-study
2
stars
2
forks
source link
데이터 중심 애플리케이션 설계 6장
#71
Open
epicblues
opened
10 months ago
epicblues
commented
10 months ago
6장. 파티셔닝
핵심 목적
읽기 부하 분산
핫스팟 최소화
파티셔닝 방식
키 범위 기반
정렬 → 범위 질의 성능 좋음
핫스팟 가능성 높음
키 해시값 기반
파티셔닝 분산 우수
범위 질의 불가능
지원하지 않는 DB 많음
복합 키로 보완
첫 번째 칼럼 → 해시
2~n 번째 칼럼 → 범위 질의
(customer_id, updated_at)
보조 색인 파티셔닝
문서 기반
= 전역 색인
해당 문서의 보조 색인은 문서가 들어있는 파티션에 저장
보조 색인 기반 검색 시 Scatter/Gather 방식 사용
여러 파티션을 질의해야하는 단점
용어 기반
=지역 색인
각 용어는 하나의 파티션의 보조 색인에서 책임
용어의 범위에 따라 파티션이 바뀜
하나의 파티션에서 확인하면 되는 장점
쓰기 느림
문서 하나 작성시 반영해야 하는 보조 색인이 여러 파티션에 퍼져 있음
보통 비동기로 갱신
Rebalancing
노드 추가/삭제, 특정 파티션에 데이터 쏠림 등으로 파티션을 균형있게 만들어야 함
최대한 데이터 이동을 막아야 함
가용성을 확보해야 하기 때문
종류
파티션 개수 고정
고정된 파티션을 노드들이 나눠 가짐
파티션 개수 > 노드 개수
노드 개수에 변동이 생길 경우 기존 노드에서 파티션 이동
동적 파티셔닝
데이터 용량에 비례한 파티셔닝
예시
파티션 크기가 특정 값을 초과하면 해당 파티션 분리
특정 파티션 크기가 줄면 다른 파티션과 통합
노드 비례 파티셔닝
노드 당 할당되는 파티션 개수 고정
노드 추가 시 무작위로 선정된 기존 파티션을 분할해서 할당
노드 당 파티션 개수는 고정이기 때문에, 파티션 당 데이터 크기는 줄어든다.
재균형화 자동 vs 수동
자동
장애 발생 가능성 높음
다른 자동 장애 감지 시스템과 충돌할 가능성 있음
요청 속도가 느려진 노드로 인한 재균형화 → 장애 감지 시스템에서는 노드가 죽은 것을 장애로 간주
요청 라우팅
해당 요청이 어떤 파티션으로 향해야 하는지 어떻게 알 수 있는가?
방식
무작위 노드 요청
가십 프로토콜
라우팅 계층
코디네이션 서비스 활용 (Zookeeper)
각 노드들의 파티션 할당 정보 관리
관련 컴포넌트들에게 데이터 갱신
라우팅 계층
노드
클라이언트
6장. 파티셔닝
핵심 목적
파티셔닝 방식
보조 색인 파티셔닝
Rebalancing
재균형화 자동 vs 수동
요청 라우팅