seoulstudycafe / System-Design-Interview-01

0 stars 0 forks source link

06장 다이나모, 카산드라, 빅테이블 #9

Open ghlnh opened 4 months ago

ghlnh commented 4 months ago

다이나모

AWS에서 사용되는 NoSQL 기반의 데이터베이스 시스템으로 데이터의 가용성과 내구성을 보장하는 데 중점을 둠. 데이터의 복제본을 여러 노드에 분산시켜 신뢰성을 높임

표 1. 다이나모가 사용하는 기술과 그 장점에 대한 요약

문제 기술 장점
파티셔닝 안정 해싱 점진적 확장 가능성
쓰기 고가용성 읽기 중 조정 가능한 벡터 클럭 버전 크기와 업데이트 양의 분리
일시적인 장애 느슨한 정족수와 임시 위탁 고가용성 제공, 일부 레플리카를 사용할 수 없을 때 내구성을 보장
영구적인 장애 복구 머클 트리를 통한 안티 엔트로피 백그라운드에서 다양한 레플리카를 동기화
멤버십과 장애 감지 가십 기반 멤버십 프로토콜 및 장애 감지 대칭성 유지, 멤버십 및 활성 노드 정보를 저장하는 중앙집중식 레지스트리의 부재

카산드라

아파치에서 만든 NoSQL 분산 데이터 베이스로 안정 해시를 이용한 링구조와 가십프로토콜을 구현하였다. 샤딩을 고려해야 할 필요도 없음. 단, Join이나 Transction 미지원 카산드라 구조 및 데이터 구조

카산드라에 도입된 다이나모의 주요 특징

빅테이블

빅테이블은 2015년 구글에서 발표한 NoSQL계열 컬럼형 데이터베이스로, HBase와 같은 컬럼형 데이터베이스의 원조격으로, 컬럼 패밀리 모델 등의 개념은 Bigtable에서 시작되었다고 볼 수 있다.

빅테이블 구조 모든 클라이언트 요청은 프런트엔드 서버를 통과한 후 노드로 전송→테이블은 태블릿이라고 하는 연속된 행의 블록으로 분할되어 쿼리 워크로드를 분산되고, 태블릿은 Google 파일 시스템인 Colossus에 SSTable 형식으로 저장

중요한 건 데이터가 Bigtable 노드 자체에 저장되지 않음. 각 노드는 태블릿 집합에 대한 포인터가지며 그 결과는 아래와 같음

모든 데이터는 RowKey를 기준으로 분리된 데이터 노드에 SSTable이라 불리는 파일 형태로 분산되어 저장


References

newbieJanghan commented 4 months ago

Wow...