sonumb

TiKV - Concepts & Architecture 본문

개발자 이야기/DBMS_Development

TiKV - Concepts & Architecture

sonumb 2021. 11. 2. 14:37

 


https://tikv.org/docs/3.0/concepts/overview/

https://tikv.org/docs/3.0/concepts/architecture/

의 번역본이다.

Concepts

TiKV은 원래  PingCAP 이 TiDB을 보완하기 위해 만든 분산 트랜잭션 키 - 값 데이터베이스입니다.

Cloud Native Computing Foundation 의 인큐베이팅 프로젝트인 TiKV는 통합 분산 스토리지 계층의 역할을 수행하기 위한 것입니다. TiKV는 수 조개의 row에 걸친 페타바이트 규모의 배포를 지원함으로써 대규모 데이터 작업에 탁월합니다.

이는 적은 양의 메타 데이터 저장에 유용한 etcd 와 같은 다른 CNCF 프로젝트 기술을 보완하며 다른 프로토콜로 통신하는 상태 비 저장 쿼리 계층 을 사용하여 확장 할 수 있습니다 .

TiKV 의 Ti 는 티타늄을 의미합니다 . 티타늄은 금속 원소중에서 가장 높은 강도 대 밀도 비율을 가지며 그리스 신화의 타이탄에서 이름을 따왔습니다.

주목할만한 특징

항목 설명
지리적 복제 (Geo-replication) TiKV는 Raft 합의 알고리즘과 배치 드라이버(Placement Driver) 를 사용하여 지리 복제를 지원합니다.
수평적 확장성 Placement Driver와 주의깊게 설계된 래프트 그룹으로, TiKV의 수평 확장성이 뛰어나며, 데이터를 100 테라바이트 이상 쉽게 확장 할 수 있습니다.
일관된 분산 트랜잭션 Google의 스패너 와 마찬가지로 TiKV는 외부 적으로 일관된 분산 트랜잭션을 지원합니다.
보조프로세서(co-processor) 지원 HBase 와 비슷하게, TiKV 는 분산 컴퓨팅을 지원하는 보조프로세서 프레임워크를 구현합니다.

기능 페이지 에서 전체 목록을 찾아 볼 수 있습니다 .

코드베이스, 영감 및 문화

TiKV는 Rust 프로그래밍 언어로 구현 됩니다. Facebook의 RocksDB 및 Raft 와 같은 기술을 사용합니다 .

이 프로젝트는 원래 Google Spanner 와 HBase에서 영감을 받았습니다 .

Architecture

이 페이지에서는 TiKV의 핵심 개념과 아키텍처에 대해 설명합니다.

APIs

TiKV는 상호 작용하는 데 사용할 수있는 두 가지 API를 제공합니다.

API설명

API 설명 Atomicity 사용시…
Raw 개별 Key-Value 쌍과 직접 상호 작용하기 위한 하위 레벨 Key-Value API. 단일 키 응용 프로그램에는 분산 트랜잭션이나 MVCC(Multi-version Concurrency Control )가 필요하지 않습니다.
Transactional ACID 시맨틱을 제공하는 상위 Key-Value API 여러 키 응용 프로그램에는 분산 트랜잭션 및/혹은 MVCC가 필요합니다

시스템 구조

TiKV의 전체 아키텍처는 아래 그림 1에 설명되어 있습니다.

그림 1. TiKV의 아키텍처

TiKV 인스턴스

각 TiKV 인스턴스의 아키텍처는 아래 그림 2에 나와 있습니다.

그림 2. TiKV 인스턴스 아키텍처

배치 드라이버 (PD: Placement Driver)

TiKV 배치 드라이버는 TiKV의 클러스터 관리자로, 주기적으로 복제 제약 조건을 체크하여 노드와 리전에 걸쳐 부하와 데이터를 밸런싱을 합니다. (오토-샤딩)

Store

각 Store 내에는 RocksDB가 있으며, 로컬 디스크에 데이터를 저장합니다.

Region

Region은 Key-Value 데이터 이동의 기본 단위입니다. 각 리전은 여러 노드에 복제됩니다. 이러한 여러 복제본은 Raft 그룹을 형성합니다.

노드

TiKV 노드는 단지 클러스터의 물리적 노드이며, 가상 머신, 컨테이너 등일 수 있습니다. 각 노드에는 하나 이상의 Store 가 있습니다. 각 Store의 데이터는 여러 Region으로 나뉩니다. 데이터는 Raft 알고리즘을 사용하여 여러 지역에 분산됩니다.

노드가 시작되면 노드, Store 및 Region의 메타데이터가 Placement Driver에 기록됩니다. 각 Region과 Store의 상태는 정기적으로 PD에 보고됩니다.

트랜잭션 모델

TiKV의 트랜잭션 모델은 대규모 데이터 집합에 대한 업데이트를 처리하기 위해 구축된 시스템인 Google Percolator와 유사합니다. Percolator는 배치 기반 모델 대신 증분 업데이트 모델을 사용합니다.

TiKV의 트랜잭션 모델은 다음을 제공합니다.

  • 스냅샷 격리(락과 함께), SQL의 SELECT ... FOR UPDATE와 의미적으로 유사하다.
  • 분산 트랜잭션에서 외부적으로 일관된 읽기 및 쓰기

 

래프트(Raft)

데이터는  Raft 합의 알고리즘을 통해 TiKV 인스턴스에 분산됩니다. 알고리즘은 Diego Ongaro 와 John Ousterhout의 Raft 논문 (“In Search of an Understandable Consensus Algorithm”)을 기반으로 합니다.

TiKV의 기원

TiKV는 원래 PingCAP 에 의해 TiDB 보완하기 위해 만들어졌으며, TIDB는  MySQL의 프로토콜 호환되는 분산 HTAP 데이터베이스입니다.

 

반응형