1. 카산드라의 개요
아파치 카산드라(Apache Cassandra)는 확장성이 뛰어난 자유 오픈 소스 분산형 NoSQL 데이터베이스입니다. Cassandra는 여러 데이터 센터 및 클라우드에서 대량의 정형, 반정형 및 비정형 데이터를 관리하기 위해 설계 되었습니다. 또한 Cassandra는 최대한의 유연성과 빠른 응답 시간을 위해 설계된 강력한 동적 데이터 모델과 함께 단일 장애 지점없이 많은 상용 서버에서 지속적인 가용성, 선형 확장성 및 운영 단순성을 제공합니다.
2. 카산드라의 특징 및 장점
분산 아키텍처
기존의 관계형 데이터베이스 시스템과 달리, 카산드라는 분산형 아키텍처를 기반으로 하여 데이터를 저장하고 처리합니다. 이는 데이터의 확장성과 고가용성을 제공하며, 대량의 데이터를 처리하고 높은 성능을 유지할 수 있게 해줍니다.
"Masterless" 아키텍처로 구축 된 카산드라는 클러스터에 중앙 집중형 마스터 노드가 없다는 것을 의미합니다. 대신, 카산드라 클러스터는 여러 노드로 구성되어 있으며, 각 노드는 동등하게 데이터를 저장하고 처리할 수 있습니다. 이러한 분산 구조는 클러스터의 신뢰성을 향상시키고, 노드 장애 시에도 시스템의 가용성을 유지할 수 있도록 도와줍니다.
고가용성
카산드라는 데이터의 복제를 통해 고가용성을 제공합니다. 데이터는 여러 노드에 복제되므로 하나의 노드에 장애가 발생하더라도 시스템은 계속해서 가용성을 유지할 수 있습니다.
열 지향 데이터 모델 (Wide Column)
카산드라는 열 지향적인 데이터 모델을 사용하여 테이블을 저장합니다. 이는 다양한 속성의 열을 가진 대규모 데이터 세트를 효율적으로 처리할 수 있도록 해줍니다. Wide Column은 행의 키와 해당값을 저장할 때마다 각각 다른값의 다른 수의 스키마를 가질 수 있습니다. 그리고 새로운 열을 추가하거나 제거하는 것이 쉽다는 특징 때문에 유연한 스키마를 갖출 수 있고 동적인 데이터 모델링에 유용합니다.
분산 트랜잭션
카산드라는 분산 트랜잭션을 지원합니다. 다중 노드 간의 병렬 처리를 통해 데이터 일관성과 동시성을 유지할 수 있습니다.
높은 확장성
기존 환경에서 응용 프로그램의 확장은 대개 시간이 많이 걸리고 비용이 많이 드는 프로세스이며 일반적으로 확장을 통해 수행됩니다. 반면 카산드라는 선형적인 확장성을 제공합니다. 클러스터에 노드를 추가함으로써 시스템의 용량을 증가시킬 수 있으며, 이에 따라 성능도 함께 증가합니다.
자동 복구
카산드라는 자동으로 데이터 복구 및 장애 복구를 수행합니다. 노드 장애 발생 시 데이터의 복제본에서 데이터를 복구하고 시스템의 가용성을 유지합니다.
3. 카산드라의 단점
복잡성
카산드라는 설치, 구성 및 운영이 비교적 복잡합니다. 클러스터의 설정과 조정, 데이터 모델링, 복제 팩터 설정 등에 대한 이해와 경험이 필요합니다. 초보자에게는 처음 접근하기 어려울 수 있습니다.
쿼리의 제한성
카산드라는 강력한 분산 시스템이지만, 쿼리 작성에 제한이 있을 수 있습니다. 복잡한 조인, 서브쿼리 및 트랜잭션은 지원하지 않으며, Index 등의 검색을 위한 기능도 매우 단출합니다. 그래서 데이터 모델링을 할 때에는 쿼리에 대한 최적화를 고려해야 합니다.
디스크 요구 사항
카산드라는 대량의 데이터를 처리하고 저장하기 위해 디스크 공간이 필요합니다. 데이터의 복제 및 쓰기 작업에 따라 디스크 사용량이 높아질 수 있으므로 충분한 디스크 용량을 확보해야 합니다.
'Database > NoSQL' 카테고리의 다른 글
[Cassandra] Cassandra 설치 방법 (0) | 2023.06.05 |
---|---|
[Cassandra] 조건 조회(Select Where)에 대하여 (0) | 2023.06.02 |
[Cassandra] 기본 키, 파티션 키, 클러스터링 키 (0) | 2023.05.24 |
[Cassandra] 카산드라 기본 개념 (0) | 2023.05.23 |
[NoSQL] Cassandra vs Hbase vs MongoDB (0) | 2023.05.19 |