카산드라에서 복합 기본 키(compound primary key)에 대한 설명이다. 


모든 카산드라 테이블에는 파티션 키가 있어야 한다. 클러스터링 컬럼은 선택 사항이다.



즉, 테이블은 하나 이상의 파티션 키 컬럼과 0개 이상의 클러스터링 컬럼을 정의할 수 있다.


카산드라의 테이블의 파티션 키는 로우을 논리적으로 관련된 번들로 그룹핑한다. 




클러스터링 컬럼의 작업은 파티션 내의 로우 순서를 결정한다. 


읽기 시간을 데이터를 읽을 때 많은 엘리먼트에서 분류하는 것은 비용이 많이 든다. 


다행히도 카산드라는 로우를 클러스터링 순서로 저장한다. 그래서 로우를 검색할 때, 로우는 저장된 순서대로 로우를 리턴할 뿐이다. 읽을 때 값 비싼 정렬 작업이 없다는 점이 장점이다. 



동일한 기본 키를 공유하는 모든 로우는 디스크에 연속적으로 저장된다. 로우는 클러스터링 컬럼 값 별로 정렬된다. 


각 파티션은 저장소 레벨에서 엄격하게 바인딩되기 때문에 동일한 파티션 키를 공유할 수 있는 로우 개수에 상한이 있다. 

이론적으로 해당 상한 값은 약 20억 개의 전체 컬럼 값이다. 예를 들어 10개의 데이터 컬럼을 가진 테이블이 있는 경우 상한 값은 파티션 키 당 2억 개의 로우가 된다.


복합 기본 키를 사용하는 데이터 모델링에 대한 자세한 내용http://www.datastax.com/documentation/cql/3.1/cql/ddl/ddl_compound_keys_c.html를 참조한다.



따라서 클러스터링 키에 uuid 값이 있다면 정렬이 자동으로 되어 SELECT로 이를 활용해 읽을 때 정렬할 필요가 없어진다. 

Posted by '김용환'
,