- 파티셔닝
- 확장성 (복제와 비슷)
- 키-값 데이터 파티셔닝
- 키 범위 기준 파티셔닝: 특정 알파벳끼리 한 파티션에 넣는 형식
- 범위 스캔에 유리
- 특정 기준으로 검색 시, 핫스팟 유발
- 키의 해시값 기준 파티셔닝: 키를 해시 함수로 변환하여 분산시키는 파티셔닝
- 파티션끼리 균일하게 분산시키는 데 좋다.
- 범위 질의를 효과적으로 수행할 수 없다.
- 카산드라에서는 키의 첫부분만 해싱하고 나머지 컬럼은 SS테이블로 색인을 사용하여 첫번째 컬럼만 고정하면 나머지 컬럼에는 범위 스캔을 효율적으로 하게 한다.
- 핫스팟 완화: 보통 하나의 키에 데이터가 많은 경우
- 애플리케이션에서 해결: 키에 임의의 숫자등을 붙여서 분산 시킨다. → 읽기에 오버헤드가 생겨 일부 키에만 적용하는 게 좋다.
- 키 범위 기준 파티셔닝: 특정 알파벳끼리 한 파티션에 넣는 형식
- 파티셔닝과 보조 색인
- 문서 기반 보조 색인 파티셔닝
- 문서 id 기준으로 파티셔닝하고 보조 색인도 같은 파티션에 넣는다.
- 문서 id 기준으로 검색 시에는 한 파티션에만 질의하면 된다. (특정 차의 색)
- 문서 id 지정없이 특정 색인으로 검색 시에는 전체 파티션에 대해 질의해야 한다. (모든 빨간 차)
- 용어 기반 보조 색인 파티셔닝
- 전역 색인을 만든다. (기본키와 비슷하게)
- 원하는 용어 기준으로 검색 시에 해당 파티션만 검색하면 된다.
- 단일 문서 쓰기 시 여러 파티션에 영향이 간다.
- 비동기로 인해 지연이 발생할 수 있다.
- 문서 기반 보조 색인 파티셔닝
- 파티션 재균형화
- mod N: (쓰면 안 됨) 대부분 랜덤으로 분산되어 비용이 크다
- 파티션 개수 고정: 파티션 개수를 노드 보다 많이 만들어 파티션 단위로 이동 (노드 별로 일부 파티션 이동), 데이터 크기 변동이 심하면 적절한 파티션 설정이 어려움
- 범위 파티셔닝을 하면 개수를 고정하면 빈 파티션이 발생하기 쉬워서 사용이 힘듦
- 동적 파티셔닝: 파티션에 일정 이상 데이터가 쌓이면 분리하는 방식(반대로 삭제) B트리와 비슷한 구조
- 맨 처음에는 파티션이 1개가 되고, 다른 파티션은 유휴 상태인 단점이 있음
- 노드 비례 파티셔닝: 노드 당 파티션의 개수를 고정한다.
- 새 노드가 추가되면 각 노드당 무작위의 파티션을 분할하고 분할된 파티션을 새 노드에 할당 → 파티션당 불균형이 발생하지만 전체적으로 보면 균형적임
- 자동 재균형화와 수동 재균형화
- 자동으로 하면 유지보수에 손이 덜 가므로 편리하나 재균형화에 과부하가 발생할 수 있어서 운영에 영향이 있을 수 있으므로 적절히 나눠서 해야한다.
- 요청 라우팅
- 클라이언트가 아무 노드에 접근하게 하고 해당 노드가 적절히 검색
- 클라이언트가 라우팅 계층에 요청하면 라우팅 계층이 적절히 요청
- 클라이언트가 모든 노드를 알고 있게 한다.
'Studying > Data System Design' 카테고리의 다른 글
분산 시스템의 골칫거리 [데이터 중심 애플리케이션 설계 8장] (0) | 2023.08.19 |
---|---|
트랜잭션 [데이터 중심 애플리케이션 설계 7장] (0) | 2023.07.21 |
복제 [데이터 중심 애플리케이션 설계 5장] (0) | 2023.07.09 |
부호화와 발전 [데이터 중심 애플리케이션 설계 4장] (0) | 2023.07.08 |
저장소와 검색 [데이터 중심 애플리케이션 설계 3장] (0) | 2023.07.07 |