티스토리 뷰

Overview

 카산드라는 오픈소스, 분산, NoSQL 데이터베이스이다. 카산드라는 넓게 분할된 Column 기반 스토리지 모델을 제공한다. 

 

 카산드라는 최초에 Facebook 에 의해서 디자인 되었으며 Amazon 의 Dynamo 분산 스토리지를 구현하기 위한 Event Driven 아키텍쳐, Replication 기술, 구글의 Bigtable 데이터와 스토리지 Engine Model 들을 사용하였다. Dynamo 와 Bigtable 은 둘 다 확장성, 안정성과 고가용성 Storage System 을 위해 개발되었지만 개선할 부분들이 존재했다.

 

 카산드라 는 이 두가지 시스템의 조합으로 동종 최고의 성능으로 디자인 되었다. Application 이 read, write 에 낮은 latency 가 필요해지고 전역의 Replication 이 필요해짐에 따라, 기존 관계형 Database 는 scaling 에 적합하지 않기 때문에 반드시 새로운 종류의 Database 모델이 디자인 되어야 했다. 

 

 카산드라 와 같은 시스템은 이러한 문제들을 해결하기 위해 설계되었고 아래 목표들을 만들어냈다.

  • Multi-master 기반 Replication Database
  • 낮은 Latency 의 고가용성
  • 유연한 하드웨어 Scale out
  • Processor 가 추가될때 선형적으로 증가하는 Throughput
  • 무중단 Load Balancing 과 클러스터 증가
  • 분할된 키 기반 쿼리
  • 유연한 Schema

 

Features

 카산드라 는 Database Schema 를 생성하고 수정하며 Data 에 접근하기 위해 SQL 과 비슷한 Cassandra Query Language (CQL) 을 제공한다. CQL 은 유저가 데이터를 노드에 정리할 수 있도록 한다:

  • Keyspace: Dataset 이 Datacenter 별로 어떻게 Replication 될지를 결정한다. Replication 은 Cluster 별로 몇개의 복사본이 저장될지를 결정한다. Keyspace 는 Table 을 포함한다.
  • Table: Partition 들을 위한 스카마를 정의한다. Table 은 Partition 을 포함, Parition 은 Row 를 포함, Row 는 Column 을 포함한다. Cassandra 는 새로운 컬럼을 다운타임 없이 유연하게 추가할 수 있다.
  • Partition: Cassandra 의 모든 Row 에 필수적인 Primary Key 를 정의한다. Primary Key 는 Row 가 어디에 저장될지를 결정한다. 성능 기준에 맞는 모든 쿼리는 Parition Key 를 제공한다.
  • Row: Partition Key 로 구성된 고유한 Primiary Key 로 식별되는 Column 들을 포함한다. 선택적으로 추가적인 Clustering Key 를 포함하기도 한다.
  • Column: Row 에 속해있는 타입이 존재하는 단일 데이터

 CQL 은 Parition 된 Dataset 에 대해 아래와 같은 다양한 고급 기능들을 제공한다:

  • Atomic 비교와 집합 의미 체계를 사용하는 단일 파티션 경량 Transaction
  • 유저가 정의한 타입, 함수와 집합체
  • Set, Map, List 를 포함한 Collection 타입들
  • 로컬 보조 인덱스
  • 구체화된 뷰

카산드라 는 명확하게 Operation 을 개선하는것을 선택하지 않았다. 그 Operation 은 Parition 들 간의 조화가 필요하다. 그로 인해 Storage 는 느려질 수 있고 고가용의 Global Semantics 를 제공하기 어렵다. 예를들어 Cassandra 는 아래 기능을 제공하지 않는다:

  • Partition 간의 Transaction
  • 분산된 Join
  • FK 또는 참조 무결성

Operation

 카산드라 설정은 cassandra.yaml 에 설정되어있으며 이 파일은 개발자에 의해 직접 수정될 수도 있고 관리툴에 의해서도 수정될 수 있다. 몇몇 설정 변경들은 Cassandra 운영 중에 적용될 수 있지만 재시작이 필요한 것들도 있다. 

 

 카산드라는 클러스터를 관리하기위한 툴을 제공한다. nodetool 명령어는 카산드라 Live Control Interface 와 통신함으로서 런타임에 cassandra.yaml 설정들을 적용할 수 있다. auditlogviewer 는 audit log 를 볼때 사용한다. fqltool 은 전체 쿼리 로그를 보고 비교할때 사용한다. audiologviewerfqltool 은 Cassandra 4.0 부터 적용된 새로운 툴이다.

 

 게다가 카산드라는 즉시 사용가능한 Snapshot 을 제공한다. 이는 많은 백업 툴과 연동되어 되돌리고자하는 시간으로 카산드라 데이터를 되돌릴 수 있다. 카산다르난 또한 증분형 백업 기능을 제공한다.

 

 

 

출처 - https://cassandra.apache.org/doc/latest/cassandra/architecture/overview.html
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함