특징
Peer to Peer
- Multi Master Model(Master-Slave 구조가 아님)
- 새로운 노드의 추가를 통해 수평적 확장이 손쉬움
- DHT(Disgtributed Hash Table) 기반의 링 토폴로지 지원
- 데이터의 분산과 장애 극복 기능을 지원하기 위해 Cassandra는 Gossip Protocol을 사용한다. 이를 통해 다른 노드들에 대한 상태정보와 위치 정보를 매초마다 교환한다.
- Gossip을 통해서 에러탐지를 수행한다. Gossip을 일정시간 주고 받지 않는 노드는 장애 노드로 판단된다. 장애 노드가 클러스터에 돌아오면 Hinted Hand Off로 복구를 우선 수행하게 된다.
- Hinted Hand Off는 쓰기를 수행하고 복제할 때 복제 대상 노드가 장애인 경우, 정상적인 노드에 임시로 저장하는 메커니즘
White Operation
■ Commit Log
▪ Data Durability를 지원. Crash-Recovery 메커니즘에 사용됨.
▪ Commit Log에 쓰기 작업이 기록되면 쓰기는 성공한 것으로 간주하고 카운트함.
▪ Commit Log는 플러싱 여부를 나타내는 비트 플래그를 가지고 있음.
▪ Commit Log에 처음 기록되면 비트 플래그를 1로 설정
▪ Memtable이 SSTable에 flush되면 비트플래그를 0으로 설정
▪ 컬럼패밀리당 비트 플래그 하나씩 존재
■ MemTable
▪ 상주 메모리 구조
▪ Commit Log에 기록된 데이터는 Memtable에 기록됨.
▪ Memtable에 기록된 데이터 크기가 임계점(Threshold)에 도달하면 SSTable이라는 파일로 flush하게 됨.
▪ Flush 한 후 새로운 Memtable 생성
■ SSTable
▪ Google의 빅테이블 개념과 유사
▪ 추가적인 성능 향상을 위해 블룸 필터 사용 가능
▪ 순차적 쓰기→빠른 쓰기 성능 제공
조정가능한 일관성(Tuneable Consistency)
Writes : Any, One, Quorum, Local_Quorum, Each_Quorum, All
Read : One, Quorum, Local_Quorum, Each_quorum, All
여기서 Quorum은 과반을 의미한다
▪ String Consistency ←→ Eventual Consistency : 선택 가능
▪ 다중 데이터 센터 작업을 처리할 수 있음
▪ 강력한 일관성 : R + W > N
- R : 읽기 복제본 갯수
- W : 쓰기 복제본 갯수
- N : 전체 복제본 갯수
Compaction
▪ 저장한 데이터 파일을 병합(merge)하여 저장공간을 확보하는 처리 과정임.
▪ 병합시에는 Rowkey를 기반으로 정렬됨
카산드라 데이터 모델링 살펴보러 가기 → https://blog.voidmainvoid.net/240
'빅데이터 > cassandra' 카테고리의 다른 글
아파치 카산드라 살펴보기, 설명, 기본 개념 (0) | 2022.02.03 |
---|---|
카산드라 TTL에 따른 데이터 삭제 정리 (0) | 2022.01.20 |
Datastax의 Cassandra Sink Connector(JSON field) 적재 설정 (0) | 2021.12.16 |
카산드라 모델링 분석하기 좋은 테이블 구성하기 (0) | 2021.11.11 |
macos에서 카산드라 테스트 방법 (0) | 2021.11.03 |
NoSQL강의) 모델링 예제로 알아보는 Cassandra Query Language (CQL) (375) | 2019.07.25 |