카산드라DB

Kenneth·2022년 7월 24일
0

database

목록 보기
1/1

새 팀의 큰 프로젝트의 설계에 카산드라가 포함되어 카산드라에 대해 알아보고 있습니다. 요번 글은 공유 목적이라기보다는 제 개인적인 recap을 위한 글입니다.

아래 내용 대부분은 Baeldung - #cassandra 에서 더 자세하게 알아보실 수 있습니다.

Architecture

카산드라는 AWS DynamoDB의 분산 디자인과 구글 빅테이블의 데이터 모델을 기반으로 설계되었다고 합니다. Wikipedia - Apache Cassandra
DynamoDB 의 분산 디자인이라고 하면 Ring 구조, 그리고 빅테이블의 데이터모델이라고 하면 wide column 등을 말하겠죠.

자세한 내용은 다른분들 블로그에 잘 정리된 글이 많습니다.

각각 다루기에도 아주 큰 주제들이지만, 간단하게 핵심적인 개념들만 정리해두려고 합니다.

분산 디자인

PACELC

PACELC 정리(theorem)의 분류에 따르면 카산드라는 설정에 따라 CP/EC로도, 정 반대의 AP/EL로도 사용할 수 있습니다. 설정하기에 따라 스펙트럼의 양 끝 가운데 적절한 위치가 선택 가능할 것 같아요. 현재 비즈니스 요건 하에서 어떤 설정이 필요한지, 어떤 트레이드오프가 존재하는지 명확하게 인지하고 선택하면 되겠습니다.

CAP 정리만 알고 계신다면 그 차이에 대해 한번 읽어보시면 좋습니다.

Replication Factor

데이터를 몇개의 노드에 중복으로 저장할지 결정합니다. SPOF가 없도록 하기 위해 3 이상이어야 한다고 합니다.

Consistency Level

Client에서 요청한 write operation에 대해 몇 개의 replica가 ack 해야 success 라고 회신하는지에 대한 설정입니다.

구글 빅테이블

LSM Tree

Log Structured Merge Tree. Memtable

https://sjo200.tistory.com/56

SSTable

Sorted String Table. 빅테이블의 기초가 되는 개념 중 하나.

참고할만한 글

Bloom Filter

공간효율적으로 집합에 특정 원소의 존재여부를 확률적으로 확인할 수 있는 자료구조. False positive - 존재하지 않는 데이터를 존재한다고 하는 경우 - 는 존재할 수 있지만 False negative가 없고, 조회 연산도 빠르기 때문에 굉장히 다양한 상황에 범용적으로 쓰일 수 있는 자료구조입니다.

Misc

분산파일시스템

GFS와 HDFS는 네임노드가 장애에 취약하다는 문제점을 갖고 있는데, GFS2에서는 네임노드에 저장할 메타데이터를 빅테이블 등의 DB에 저장함으로써 이를 해결했다고 합니다.

어떤 분산시스템을 활용해야 하는가? - 네이버 D2 Hello World

profile
개발자 + @

0개의 댓글