분산 시스템이나, 마스터 노드가 없어서 단일 실패지점이 없다.
Bigtable이나 HBase와 동일한 데이터 모델과 구조
비관계형 데이터 베이스 - 데이터 결합이나 정규화 불가
트랜잭션 쿼리에 최적화
고가용성, 거대한 처리량, 고확장성을 목표
CQL이라는 자체 쿼리 언어 보유
데이터를 프라이머리키로 나누어서 클러스터에 분산
카산드라도 분산 저장 서비스인 만큼 파티션 지향성을 꼭 가지고 간다면, 일관성과 가용성 중에 선택할 때 가용성을 우선시한다.
무언가를 카산드라에 작성하면 그 결과를 즉각적으로 받지 못한다. 클러스터 전체에 변화를 전파해야 하기 때문
이다.어떤 노드가 어떤 데이터를 갖는지 추적하는 마스터 노드가 없다.
가십프로토콜을 사용해서 클러스터의 모든 노드는 매초마다 서로간에 소통하며 누가 어떤 데이터를 가지고 어디에 복사본이 잇는지 추적
한다.
즉 카산드라 클러스터의 모든 노드는 똑같은 소프트웨어를 실행하고 똑같은 일과 기능을 한다.
클라이언트는 이중 아무 노드와 소통하여 데이터가 어디 있는지 알아낼 수 있다
.
노드들은 서로 소통하며 데이터를 복사하고 클러스터 구성 시 지정한 중복 수준에 따라서 모든 노드가 백업 복사본을 가질지 결정한다.
클라이언트가 어떤 데이터를 특정 노드에 기록 -> 해당 노드에서 데이터의 일정 부분을 해시 -> 지정한 노드에 매핑 -> 백업으로 다른 노드에 매핑 -> 구성에 따라 세번째까지 매핑 가능
이러한 구조에서 카산드라가 일관성을 조정하기 위해서 적어도 몇개 이상의 노드에서 같은 값이 나와야 한다고 설정할 수 있는 것
이다.