컬럼 패밀리 데이터베이스란?

컬럼 패밀리 데이터베이스는, 보시는 것처럼 키-값 쌍으로 데이터를 저장하는 NoSQL 데이터베이스입니다.
컬럼 패밀리는 테이블과 유사하지만 테이블 보다는 좀더 유연한 구조를 가집니다.
'user_123'은 로우 키로, 특정 사용자를 식별하고 ‘name'은 컬럼 키, ‘문준영’은 저장된 값입니다.
이런 구조의 강점은 각 로우마다 다른 컬럼을 가질 수 있다는 점입니다.
이 예시에서 user_123은 BTC를 보유하고 있고, user_456은 ETH를 보유하고 있어 서로 다른 컬럼을 갖습니다.
값이 없는 컬럼은 아예 저장되지 않아 저장 공간이 절약되고, 대용량 데이터 처리에 효율적입니다.

실제로 카산드라에서 데이터를 flush 하고 디스크에 저장된 데이터를 보게 되면 null은 생략된 체 디스크에 저장이 되는 걸 볼 수 있습니다.
cassandra 소개
컬럼 패밀리 데이터베이스중 대표적인 카산드라에 대해서 소개하겠습니다.

- 클러스터(Cluster) : 여러 데이터 센터들의 집합이며 카산드라의 가장 큰 논리적 단위며 가십 프로토콜을 통해 서로 통신하는 모든 노드의 전체 집합을 의미합니다.
- 데이터센터(DataCenter) : 클러스터 내의 하위 그룹이며 일반적으로 물리적 위치 (예: 서울 데이터센터, 도쿄 데이터센터)혹은 논리적 위치에 따라 구분합니다. 관련된 노드들의 집합입니다.
- 노드(Node) : 데이터가 저장되는 단일 카산드라 인스턴스 입니다.
- 키스페이스(Keyspace) : 테이블들의 논리적 컨테이너로 RDBMS의 데이터베이스와 유사한 역할을 합니다.
- 테이블 (Table) : 키스페이스 내의 데이터 구조, 열과 행을 가진 파티션의 집합입니다.
- 행 (Row) : 고유한 기본키로 식별되는 열들의 집합, 파티션 키와 선택적 클러스터링 키로 구성됩니다.
- 파티션 (Partition) : 동일한 파티션 키를 가진 행들의 집합, 데이터 분산의 기본 단위입니다.