본문 바로가기

빅데이터/nosql

NoSQL강의) Cassandra 개요 및 설명

특징

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

 

NoSQL강의) 모델링 예제로 알아보는 Cassandra Query Language (CQL)

모델링 example 1 - Log 데이터 저장요구조건 - machine_id , log_time, log_text - machine 100EA, 1초당 로그 1건씩, 로그는 일반 텍스트 Case 1 : 별도의 PK를 부여한다면? CREATE TABLE log1 ( uid int, mach..

blog.voidmainvoid.net