2016-10-13 10 views
0

고려하십시오. RDBMS 클러스터를 통해 분할해야하는 매우 큰 테이블이 있습니다. 나는 테이블을 파쇄 할 분할 키를 결정해야한다. 분명히이 분할 키는 응용 프로그램이 샤드를 파악하는 논리를 유지해야하므로 인공 키 (예 : 자동 생성 된 기본 키 열)가 될 수 없습니다. 요청 데이터의 자연 키에 따라 다릅니다. 자연 키가 고르게 시스템RDBMS 샤딩을위한 파티션 키 생성

a) Is it a good idea to even consider this table for sharding ? 
  • 자연 키를 기반으로 GUID를 생성하고 균등 클러스터에서 그것을 배포 할 수있는 방법이 있나요 배포되지 않은 경우 다음과 같은 상황

    1. 을 고려?

    2. 자연 키를 기반으로 GUID를 생성하는 효율적인 알고리즘이 될 수있는 것은 무엇입니까?
  • 답변

    0

    키가 고르게 분배되지 않으면 테이블이 분할되었는지 여부에 차이가 없을 수 있습니다. 쿼리를 수행하기 위해 거의 동일한 양의 행을 읽어야합니다. 파티셔닝이 항상 성능을 향상시키는 것은 아닙니다. 파티션을 통한 읽기가 느려질 수 있습니다. 따라서 파티션 키를 선택하기 전에 모든 쿼리 요구 사항을 분석해야합니다.

    이 경우 파티션 키를 생성 할 수있는 기능을 기억할 수 없습니다. 데이터에 대해 GUID 또는 MD5를 생성하는 함수가 있지만 결과는 가지고있는 자연 키보다 최악입니다. 결과는 더 많은 고유 한 가치를 향하게 될 것입니다. 또한 추가 논리를 실행해야하는 모든 요청마다 성능이 떨어집니다.

    이전 또는 사용되지 않은 데이터를 제거하는 것도 고려하십시오. 일단 완료되면 파티셔닝이 필요하지 않을 수 있습니다.