Distributed System
좋은 샤딩 키란?
미르(Мир)
2021. 12. 10. 22:24
메타 데이터를 분산 데이터 베이스에 샤딩하여 저장하는데 샤딩을 하기위해 좋은 키란 무엇일까?
-> 분산 불균형을 막도록 하는 키
- Cardinality : shard key의 범위가 충분히 넓은가
특정 스토리지를 제외하고 나머지 스토리지는 놀고 있음 - Frequency : shard key가 특정 값에 치중되어 있지 않은가?
특정 스토리지에만 데이터가 많이 쌓임 - Monotonically changing key : shard key가 특정 방향으로 커지는 값은 아닌가?
가장 마지막 스토리지에 최신 데이터가 쌓이게 됨
- dir 을 기준으로 샤딩할 경우
특정 스토리지에만 데이터가 쌓일 수 있음 - file을 기준으로 샤딩할 경우
이름이 같은 파일이 많다면 특정 스토리지에만 데이터가 쌓임 - dir/file을 기준으로 샤딩할 경우
단점 : Listing에 대한 부담이 존재하게됨 -> 전체 디비를 조회하는것을 제외하고는 답이 없게 됨 |
- Consistency 모델에서 타협을 볼 수 밖에 없음
- 읽기 = 파일 읽기 + 디렉토리 리스팅
파일이 저장되면 바로 읽히는 것만 요구하지 리스팅까지 바로되는 것까지 원하진 않음 - 파일 읽기에 대해서는 strong consistency보장
- 리스팅에 대해서는 Eventual consistency를 보장