반응형
카산드라에서는 토큰(token) 값을 사용하여 데이터가 저장될 위치를 찾습니다. 토큰 값을 얻기 위해 파티션 키(Partition Key)를 파라미터로 전달합니다. 토큰 값으로 데이터가 저장될 위치(클러스터의 노드 위치)를 알 수 있는 이유는 무엇일까요?
위의 그림은 쉽게 설명하기 위해 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의 범위의 값에 해당합니다.
반응형
'NoSQL > Cassandra DB' 카테고리의 다른 글
카산드라(cassandra), 데이터 저장 구조 - 키스페이스(Keyspace) (0) | 2020.10.23 |
---|---|
카산드라(cassandra), Virtual Node(vnode) (0) | 2020.10.21 |
카산드라(cassandra), 데이터 저장 구조 - 파티션 키(Partition Key) (0) | 2020.09.23 |
카산드라(cassandra), 데이터가 저장되는 노드 찾기 - 파티셔너(Partitioners) (0) | 2020.09.15 |
카산드라(cassandra), 데이터를 읽고 쓰는 과정 (0) | 2020.09.08 |