NoSQL/Cassandra DB

카산드라(cassandra), 데이터 저장 구조 - 파티션 키(Partition Key)

어휘 창고 지기 2020. 9. 23. 23:31
반응형

아래 그림에서 '홍길동' 데이터를 입력할 때 저장될 노드를 찾는 역할을 파티셔너(Partitioners)라고 설명했습니다. 파티셔너가 데이터가 저장될 위치를 찾을 때는 해시(hash) 함수를 사용하는데 이 해시 함수의 파라미터(parameter)가 파티션 키(Partition Key)입니다.

 

그림 1. 데이터가 노드에 할당되는 과정

 

즉, 아래의 그림처럼 해시 함수의 파라미터로 입력된 값 "1" 이 파티션 키입니다. 카산드라는 테이블을 생성할 때 파티션 키를 지정해야 하는데 아래의 예에서는 "번호"를 파티션 키로 지정하였습니다. 파티션 키가 해시 함수를 통과하면 토큰(token) 값을 받습니다. 토큰 값은 클러스터에 존재하는 여러 노드 중 하나에 속합니다. 토큰 값이 속하는 노드에 데이터를 저장합니다.

그림 2. 해시 함수의 파라미터

아래는 테이블 생성 시 파티션 키를 지정하는 CQL(Cassandra Query Language)문장입니다.

그림 3. 테이블 생성 CQL 구조

위의 문장에서 PRIMARY KEY의 괄호 안의 첫 번째 컬럼이 파티션키이며 이 키값으로 저장할 노드를 결정합니다. 참고로 파티션 키가 두 개 이상인 경우는 위의 예처럼 괄호(month, day)로 묶어서 지정합니다.

반응형