본문 바로가기

빅데이터/cassandra

아파치 카산드라 살펴보기, 설명, 기본 개념

아파치 카산드라는 오픈소스이며 분산 NoSQL 데이터베이스입니다. 파티션 기반의 wide column 저장소 모델을 활용하며 consistent semantics를 지원합니다.

 

아파치 카산드라는 페이스북에서 SEDA(Staged event-driven architecture)를 기반으로 설계되었고 아마존의 다이나모 분산 저장소와 구글의 빅테이블 저장소 엔진 모델을 기반으로 디자인되었습니다. 다이나모와 빅테이블 두개 다 스케일러블하고 안전하며 고 가용성의 데이터 저장소 특징을 가지도록 개발되었지만 일부는 완전히 지원되지 않습니다. 

 

- 다이나모https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html

- 빅테이블 : https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf

 

카산드라는 다니아모와 빅테이블 2 시스템의 장점만 모아 만든 거대 규모의 베스트 프랙티스 저장소입니다. 글로벌 복제와 저지연 데이터 쓰기와 읽기, 고가용성 특징을 가지기 위해 카산드라는 다음과 같은 핵심 기술을 가지고 있습니다.

 

- 멀티 마스터 기반 데이터베이스 복제 수행

- 글로벌 저지연 데이터 접근

- 범용 하드웨어 스케일 아웃

- 프로세서를 추가할 때 마다 선형적인 처리량 증가

- 온라인 로드 밸런싱 및 클러스터 확장 가능

- 파티션 키 기반 쿼리

- 유연한 스키마

 

카산드라 기능들

카산드라는 CQL(Cassandra Query Language)를 지원합니다. SQL과 유사하게 생긴 언어로서 카산드라에 접근하여 데이터를 쓰거나 읽을 때 사용 됩니다. CQL은 데이터를 사용하기 위해 다음과 같은 개념을 사용합니다.

 

- 키스페이스 : 데이터셋이 데이터센터에 어떻게 복제될 것인지 지정할 수 있습니다. 복제 개수만큼 클러스터에 복제되어 저장됩니다. 키스페이스는 테이블을 포함하는 개념입니다.

- 테이블 : 파티션별 콜랙션에 대한 스키마를 지정합니다. 테이블은 파티션을 가지고 있으며 로우와 컬럼을 포함하고 있습니다. 카산드라 테이블은 새로운 컬럼을 다운타임없이 추가할 수 있습니다.

- 파티션 : 카산드라에 저장되는 로우의 노드를 식별하기 위한 키가 파티션입니다. 파티션 키를 어떻게 설정하느냐에 따라 성능이 달라집니다.

- 로우 : 파티션 키와 선택적으로 클러스터링 키를 구성하는 데이터입니다. 여러 컬럼을 포함하는 개념입니다. 

- 컬럼 : 로우에 속한 단일 데이터 입니다.

 

CQL은 수많은 긴으들을 제공하는데 다음과 같은 핵심 기능이 있습니다.

 

- 단일 파티션 기준으로 atomic compare과 set semantic 트랜젝션을 지원합니다.

- 사용자 정의 타입과 함수, 집계를 지원합니다.

- 로컬 세컨더리 인덱스를 지원합니다.

- 구체화된  뷰를 지원합니다(실험적임)

 

카산드라는 속도가 느리고 가용성이 높은 글로벌 시멘틱을 지원하지 않습니다. 즉, 여러 파티션에 걸친 다음과 같은 작업들은 지원하지 않습니다.

 

- 파티션간 트랜잭션

- 분산 조인

- 외부 키 또는 참조 무결성

 

운영하는 방법

아파치 카산드라 기본 구성 설정은 cassandra.yaml 파일을 통해 진행하며 수동 또는 관련 도구를 사용하여 수정할 수 있습니다. 일부 설정은 다운타임없이 수행할 수 있지만 일부 옵션은 카산드라를 완전히 종료해야 합니다.

 

카산드라는 클러스터를 관리하기  위한 도구인 nodetool, fqltool과 같은 도구를 지원합니다. 또한 카산드라는 카산드라 데이터의 시점 스냅샷을 제공하는 아토믹 스냅샷을 지원하며 백업 도구와 쉽게 통합할 수 있스니다. 카산드라는 데이터가 기록되는 대로 백업할 수 있는 증분 백업(incremental backup)도 제공합니다.

 

추가적으로 아파치 카산드라 4.0부터는 자바 11지원, 가상 테이블, audit 로깅 등을 추가로 지원하게 되었습니다.

 

출처 : https://cassandra.apache.org/doc/latest/cassandra/architecture/overview.html

 

Overview | Apache Cassandra Documentation

Cassandra provides the Cassandra Query Language (CQL), an SQL-like language, to create and update database schema and access data. CQL allows users to organize data within a cluster of Cassandra nodes using: Keyspace: Defines how a dataset is replicated, p

cassandra.apache.org

 

반응형