Cassandra Overview

... 카산드라는 위의 네 가지 특징을 가진 NoSQL이다.

About Primary Key

Primary Key는 기존의 SQL에서의 개념과 같이 한 row 값을 나타나는 키 값

... PK = Partition Key + Clustering Key

Partition Key: 어느 노드에서 처리할 지 판단할 때, 사용하는 키 값

Clustering Key: 한 노드 내에서 데이터를 저장할 때, 사용하는 키 값

What is Composite Partition Key

복합 파티션 키(Composite Partition Key), PK를 여러 컬럼으로 지정할 경우에 첫 번째 컬럼이 파티션 키가 된다. 그러나 파티션 키를 다수의 컬럼으로 지정할 수 있다. 여러 컬럼으로 파티션 키로 사용하는 것을 복합 파티션 키라 한다.

파티션 키가 중요한 이유

파티션 키는 다수의 노드 사이에서 어떤 노드에서 데이터를 처리할 지 결정할 때 사용한다. 즉, 파티션 키의 값에 따라 데이터를 처리할 노드가 결정된다. 만약 파티션 키에 대한 고려 없이 설정할 경우, 스큐(skewed) 현상이 일어날 수 있다. 따라서 테이블을 설계할 때, 파티션 키에 대한 cardinality와 파티셔너에 대한 충분한 고려가 필요하다.

Replication

Replication Factor(How Many Replica) + Replication Strategy(How to Replicate)

데이터를 한 노드에만 저장하는 것이 아니라 다수의 노드에 복사본을 저장하여 가용성을 높이는 개념이다. 

파티션 키 값에 따라 한 노드에서 데이터를 처리할 때, 이 노드가 현재 사용할 수 없는 상황이라고 하면 replication strategy에 따라 다른 노드로 하여금 데이터를 처리하도록 한다.

Consistency

Write Consistency & Read Consistency

Gossip Protocol

노드들 간에 서로의 상태를 특정 주기마다 공유하는 매커니즘, 이 프로토콜을 통해 어떤 노드가 이상한지 알 수 있다.

Write Operation

Read Operation

Compaction

다수의 SSTable을 하나의 새로운 SSTable로 머지하는 작업이다. Tombstone 데이터와 중복 데이터를 지운다. Compaction이 진행될 때, stop the world가 일어난다.