TiKV
分散トランザクション対応のキーバリューストア。TiDB のようなシステムに、強整合性を保ったまま水平スケールするストレージ層を提供する。
- カテゴリ: Storage & Database
- CNCF 成熟度: Graduated
- 言語: Rust
- ライセンス: Apache-2.0
- リポジトリ: tikv/tikv
- ドキュメント基準コミット:
2ce1174(2026-06-22)
何をするものか
TiKV は Rust で書かれた分散キーバリューストアである。2016 年に PingCAP が TiDB のストレージ層として開発を始め、設計はデータモデルと分散トランザクションを Google の BigTable・Spanner・Percolator の論文に、コンセンサスを Raft 論文に依拠している。データは Region に分割され、Raft で複製され、RocksDB に永続化される。
生のキーバリュー層の上で、TiKV は Percolator 方式の 2 フェーズコミットによる分散 ACID トランザクションを実装する。トランザクション API (TxnKV) と raw API (RawKV) の両方を公開し、クライアントライブラリから直接使うことも、TiDB の SQL エンジンのバックエンドとして使うこともできる。シャーディング・リバランス・タイムスタンプ発行は別コンポーネントの Placement Driver (tikv/pd) が担う。
TiKV は SQL の下、ローカルディスクの上に位置する。コンセンサス・MVCC・トランザクションスケジューリング・ストレージを担い、クエリのパースとプランニングは TiDB のような上位層に委ねる。
いつ使うか
- 強整合性を保ったまま単一マシンを超えて 100+ TB までスケールするキーバリューストアが必要なとき。
- キー単位の原子性だけでなく、複数キーにまたがる分散 ACID トランザクションが必要なとき。
- TiDB の上に構築する、あるいは
client-rust・client-go・client-java・client-python経由でトランザクション KV バックエンドに直接アクセスしたいとき。 - 単一ノードや小規模クラスタの etcd で十分な小さな構成データには向かない。
- そのまま SQL がほしいときには向かない。TiKV は KV 層であり、SQL は TiDB にある。
このディープダイブの構成
- 歴史: 起源・マイルストーン・存在理由。
- アーキテクチャ: コンポーネントとリクエストの流れ。
- 採用事例・エコシステム: 誰が動かし、周囲に何があるか。
- 内部実装: ソースから読んだ重要なコードパス。
- はじめに: インストールと最初の動く構成。
出典
- Cloud Native Computing Foundation announces TiKV Graduation (CNCF)
- Celebrating TiKV's CNCF Graduation (TiKV blog)
- TiKV project page (CNCF)
- tikv/tikv README
- TOC votes to move TiKV into CNCF Incubator (CNCF)
- CNCF TOC votes to move TiKV to Incubating Status (TiKV blog)
- TiKV Adopters
- Case study: TiKV in JD Cloud (CNCF)
- tikv/tikv GitHub stats
- TiKV Documentation
- TiKV Governance (tikv/community)