티스토리 뷰
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 은 전체 쿼리 로그를 보고 비교할때 사용한다. audiologviewer 와 fqltool 은 Cassandra 4.0 부터 적용된 새로운 툴이다.
게다가 카산드라는 즉시 사용가능한 Snapshot 을 제공한다. 이는 많은 백업 툴과 연동되어 되돌리고자하는 시간으로 카산드라 데이터를 되돌릴 수 있다. 카산다르난 또한 증분형 백업 기능을 제공한다.
출처 - https://cassandra.apache.org/doc/latest/cassandra/architecture/overview.html
'Database > Cassandra' 카테고리의 다른 글
Cassandra db - 데이터 모델링 - Logical 데이터 모델링 (0) | 2022.02.07 |
---|---|
Cassandra db - 데이터 모델링 - Query 정의 (0) | 2022.02.07 |
Cassandra db - 데이터 모델링 (0) | 2022.02.07 |
Cassandra db - 데이터모델링 - introduction (0) | 2022.02.07 |
Cassandra db - Partitioning 과 Replication (0) | 2022.02.07 |
- Total
- Today
- Yesterday
- rate limit
- referencedColumnName
- Flux
- msyql-connector-java
- reactor
- wait()
- getBoolean
- spring cloud gateway
- custom config data convertion
- mariadb-connector-j
- aurora
- RouteDefinition
- mariada-connector
- ResultSet
- N+1
- HashMap
- RoutePredication
- ConcurrentHashMap
- notify()
- router
- Seperate Chaining
- reative
- MariaDB
- DyanomoDB
- AbstractMethodError
- Lazy
- dynamodb
- circurit breaker
- GlobalFilter
- notifyAll()
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |