Choose a default theme

You can change your theme from the menu

Apache Cassandra

Earlier revision · 1View current content

Apache Cassandra는 여러 노드에 데이터를 분산하고 복제하는 데이터베이스이다. 파티션을 중심으로 데이터를 배치하고, 쿼리에서 필요한 접근 경로에 맞추어 테이블을 설계한다. CQL의 표면적인 문법이 SQL과 비슷하더라도 관계형 데이터베이스의 조인 중심 설계와는 차이가 있다.

분야

분산형 와이드 칼럼 데이터베이스

분산과 복제

Cassandra는 Dynamo 계열 분산 설계와 LSM 계열 로컬 저장 구조를 결합한다. 파티션 키에 따른 데이터 배치, 복제, 노드 상태 전파가 각각 역할을 맡는다. 하나의 중앙 서버가 모든 데이터를 소유하는 구조로 이해하면 장애와 확장 특성을 잘못 해석하기 쉽다.

일관성 수준은 읽기와 쓰기에서 필요한 응답 조건을 선택하는 수단이다. 지연과 가용성에 영향을 주며, 복제 계수와 배치 조건을 함께 고려해야 한다. 특정 수준의 이름만으로 모든 종류의 동시성 보장이나 트랜잭션 특성을 단정해서는 안 된다.

쿼리 중심 모델링

공식 모델링 지침은 필요한 쿼리에서 시작해 테이블을 설계하는 방식을 강조한다. 예를 들어 사용자별 시간순 기록 조회와 항목별 조회가 모두 필요하면, 각 접근 경로에 맞춘 별도 테이블을 구성할 수 있다. 이 경우 데이터 중복과 갱신 일관성을 애플리케이션 설계에 포함한다.

파티션 키는 데이터를 모으는 범위를 정하고 클러스터링 열은 파티션 안의 배치와 접근에 관계한다. 과도하게 큰 파티션이나 특정 키에 집중된 부하는 노드를 추가하는 것만으로 해결되지 않을 수 있다. 키의 분포와 보존 기간을 함께 설계한다.

운영과 사용 판단

복제는 장애 대응에 중요하지만 백업 정책 전체를 대신하지 않는다. 노드 상태, 저장 공간, 컴팩션과 복구 작업에 필요한 자원을 고려한다. 질의마다 자유롭게 조인하고 임의 조건을 추가해야 하는 요구라면, Cassandra의 접근 패턴 중심 설계와 요구가 맞는지 먼저 검토한다.

함께 읽기

MySQL · RocksDB

참고 자료