Cassandra
Cassandra 개요
Cassandra(카산드라)는 높은 확장성과 가용성을 겸비한 OSS의 분산 데이터베이스 관리 시스템이다.
Cassandra는 원래 Facebook에서 대용량 데이터를 저장하기 위해 개발되었으며 2008년에 소스 코드가 공개되었다.
이후 Facebook이 Google의 Bigtable을 모델로 한 별도 제품인 HBase를 채택한 움직임에서 채택하는 기업은 한정적이었지만, 최근 Apple이나 Netflix 등 기업이 가용성 등의 관점에서 자사의 대규모 시스템에 Cassandra를 채택한 사례도 있어, 다시 주목을 받고 있다.
Cassandra는 오픈 소스 프로젝트이기 때문에, 무료로 소스 코드 취득·프로덕션 이용 등이 가능하지만, 테스트 완료로 서포트를 받을 수 있는 DataStax사에 의한 상용 제품판도 존재한다.
2021년 7월 메이저 릴리스인 4.0.0이 출시되었다.
이 주요 릴리스에서는 아래와 같이 기능이 진행되었다.
- Java11 및 임시 복제에 대한 실험적 지원 추가
- 메트릭 및 YAML 구성 정보를 게시하는 Virtual Tables 기능 추가
- 컴플라이언스 및 디버깅에 유용한 감사 로깅 기능 추가
- 라이브 트래픽 캡처 및 재생을 위한 Full Query Logging(FQL) 기능 추가
- 노드 간 메시지 프로토콜 최적화
- 클러스터 노드의 데이터 교환에 사용되는 스트리밍 개선
Cassandra의 주요 특징
Cassandra의 주요 특징은 다음과 같다.
마스터리스 방식
데이터베이스의 클러스터 아키텍처로서는 “마스터 슬레이브 방식"이 대부분이지만, Cassandra는 “마스터리스 방식"으로 되어 있다.
이 방법에서는 각 노드가 등가이며, 노드를 통괄하는 마스터는 존재하지 않습니다. 따라서 단일 장애 지점이 존재하지 않습니다. 또한 복제 설정에 따라 각 노드에 등록된 데이터는 각각 자동으로 다른 노드로 전파되므로 높은 가용성을 실현할 수 있다.
스키마 정의가 있음
MongoDB와 같은 문서 DB와 Redis와 같은 Key-Value 스토어와 달리 Cassandra에는 스키마 정의가 있다. 이에 의해 어플리케이션의 개발이나 운용시에 개발자·운용자로 데이터 내용의 파악이 용이하게 된다. 또한, Cassandra는 RDB와 달리 스키마에 완전히 의존하지 않고 하나의 열에 여러 값을 삽입하는 등 어느 정도 자유로운 테이블 구성을 할 수 있다.
성능이 선형으로 스케일링
Cassandra는 노드를 추가하여 처리를 확장할 수 있다.
Cassandra는 공식적으로 성능이 선형으로 스케일되는 것을 주장하고 있으며, Netflix가 실시한 벤치마크가 이를 뒷받침 있다.
Apple의 iCloud 등 대규모 시스템에서 Cassandra가 채택되고 있는 이유의 일단으로서는 이러한 스케일 성능이 있다고 생각된다.
SQL과 유사한 쿼리 사용 가능(CQL)
Cassandra에서는 CQL(Cassandra Query Language)이라는 SQL과 같은 쿼리로 작업을 수행할 수 있다.
SELECT
나 UPDATE
, DELETE
등 기본적인 쿼리는 SQL 거의 그대로 실행할 수 있다. GROUP BY
는 버전 3.4.3부터 구현되어 지원된다. 그러나 JOIN
과 같은 집계는 구현되지 않다.
또, 함수나 ORDER BY
등의 정렬에 대해서도 제한이 걸리고 있으므로, 주의가 필요하다.
Cassandra 라이센스
Cassandra의 라이센스는 “Apache 라이센스 버전 2(Apache License version2)“라는 라이센스에 따라 공개되며 영리, 비영리를 불문하고 누구나 자유롭고 무료로 이용, 변경, 재배포할 수 있다.
Cassandra의 운영 환경
Cassandra는 Java 응용 프로그램이다.
Oracle Java Standard Edition 8 또는 OpenJDK8의 최신 버전이 필요하다. (Java 11은 아직 실험적 지원이며 프로덕션 환경에서의 사용은 권장되지 않는다)
cqlsh를 사용하려면 Python3.6 이상의 최신 버전이 필요하다.
Cassandra 다운로드
http://cassandra.apache.org/download/