NoSQL/Cassandra DB

카산드라(cassandra), 토큰(token)

어휘 창고 지기 2020. 10. 12. 23:34
반응형

카산드라에서는 토큰(token) 값을 사용하여 데이터가 저장될 위치를 찾습니다. 토큰 값을 얻기 위해 파티션 키(Partition Key)를 파라미터로 전달합니다. 토큰 값으로 데이터가 저장될 위치(클러스터의 노드 위치)를 알 수 있는 이유는 무엇일까요?

그림 1. 노드에 할당된 토큰 예시

위의 그림은 쉽게 설명하기 위해 4개의 노드로 구성된 클러스터를 예시로 들었습니다. 그림의 예에서 클러스터 전체에 할당된 토큰의 범위는 1부터 12까지입니다. 그리고 각 노드마다 1~12 사이의 토큰 값을 할당하였습니다. 즉, 노드 1은 1~3의 토큰 범위를 가지며 노드 2는 4~6의 토큰 범위를 가집니다. 노드 3은 7~9의 토큰 범위를 가지고 노드 4는 10~12의 토큰 범위를 가집니다.

서두의 질문으로 돌아가서 토큰 값으로 데이터가 저장될 노드의 위치를 알 수 있는 이유를 생각해 보겠습니다. 파티션 키를 통해 얻은 토큰 값은 1부터 12 사이의 값에 해당합니다. 해당 토큰 값은 노드 1 ~ 노드 4에 할당된 토큰 값의 범위에 포함됩니다. 만약 파티션 키를 통해 얻은 토큰 값이 5라면 토큰 할당 범위가 4~6인 노드 2에 데이터를 저장하게 됩니다. 물론 예제의 토큰 값은 쉽게 설명을 하기 위해 단순화 한 것입니다. 실제로는 64비트 integer 값을 가지는데 -2^63 부터 (2^63)-1의 범위의 값에 해당합니다.

반응형