token 3

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

카산드라에서는 토큰(token) 값을 사용하여 데이터가 저장될 위치를 찾습니다. 토큰 값을 얻기 위해 파티션 키(Partition Key)를 파라미터로 전달합니다. 토큰 값으로 데이터가 저장될 위치(클러스터의 노드 위치)를 알 수 있는 이유는 무엇일까요? 위의 그림은 쉽게 설명하기 위해 4개의 노드로 구성된 클러스터를 예시로 들었습니다. 그림의 예에서 클러스터 전체에 할당된 토큰의 범위는 1부터 12까지입니다. 그리고 각 노드마다 1~12 사이의 토큰 값을 할당하였습니다. 즉, 노드 1은 1~3의 토큰 범위를 가지며 노드 2는 4~6의 토큰 범위를 가집니다. 노드 3은 7~9의 토큰 범위를 가지고 노드 4는 10~12의 토큰 범위를 가집니다. 서두의 질문으로 돌아가서 토큰 값으로 데이터가 저장될 노드의 ..

NoSQL/Cassandra DB 2020.10.12

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

아래 그림에서 '홍길동' 데이터를 입력할 때 저장될 노드를 찾는 역할을 파티셔너(Partitioners)라고 설명했습니다. 파티셔너가 데이터가 저장될 위치를 찾을 때는 해시(hash) 함수를 사용하는데 이 해시 함수의 파라미터(parameter)가 파티션 키(Partition Key)입니다. 즉, 아래의 그림처럼 해시 함수의 파라미터로 입력된 값 "1" 이 파티션 키입니다. 카산드라는 테이블을 생성할 때 파티션 키를 지정해야 하는데 아래의 예에서는 "번호"를 파티션 키로 지정하였습니다. 파티션 키가 해시 함수를 통과하면 토큰(token) 값을 받습니다. 토큰 값은 클러스터에 존재하는 여러 노드 중 하나에 속합니다. 토큰 값이 속하는 노드에 데이터를 저장합니다. 아래는 테이블 생성 시 파티션 키를 지정하는..

NoSQL/Cassandra DB 2020.09.23

카산드라(cassandra), 데이터가 저장되는 노드 찾기 - 파티셔너(Partitioners)

카산드라가 여러 개의 노드(클러스터)로 구성되었다면 모든 노드에 동일한 데이터 세트가 저장될까요? 만약 모든 노드에 동일한 데이터 세트를 저장한다면 아래의 그림처럼 모든 노드가 '홍길동', '이순신', '김유신' 데이터를 가진 모습일 것입니다. 물론 Availability는 매우 증가합니다만, 노드가 증가할수록 모든 노드에 동일 데이터를 복제하기 위해 카산드라는 매우 바쁘게 일해야 할 것입니다. 그리고 대용량의 데이터를 모든 노드에 저장하는 것은 그만큼의 디스크를 확보해야 하므로 비용적인 측면에서는 매우 비효율입니다. 카산드라는 데이터를 모든 노드에 복제하기보다는 아래의 그림처럼 특정 노드에 할당합니다. 그러면 데이터를 모든 노드에 복제하기 위해 바쁠 필요가 없습니다. 그리고 이웃한 한 두 개의 노드에 ..

NoSQL/Cassandra DB 2020.09.15