【てぃーあいでぃーびー】

TiDB とは?

最終更新:
💡 分散SQLと、トランザクション・分析の役割分担を組み合わせるDB

PingCAPが開発する、MySQLとの互換性を備えた分散SQLデータベース。TiKVによるトランザクション処理と、TiFlashの列形式での分析を組み合わせるHTAPに対応する。移行時には互換性や構成の確認が必要。

📌 このページのポイント
TiDB:SQL処理と保存を分担 TiDB Server SQL解析・実行 MySQL互換を備える 読み書き 読取 TiKV 分散KV/OLTP TiFlash 列ストア/OLAP 複製 Raft Learnerによる非同期の複製 読取時に必要な反映を確認 PD:配置・管理など 破線は管理上の関係 TiFlashはテーブルの複製を設定して使う
TiKVへの書き込みをTiFlashへ非同期で複製し、分析の読み取り時には反映状況を確認する。TiFlashのテーブル複製は設定が必要で、遅れが常にゼロという意味ではない。
ひよこ ひよこ
TiDBってMySQLと何が違うの?同じSQLが使えるなら同じじゃない?
ペンギン先生 ペンギン先生
SQLや通信プロトコルには互換性があるけれど、TiDBは処理やデータ保存を複数のサーバーへ分散する設計だよ。SQLを解析・実行するTiDB Serverと、保存を担うTiKVなどを分ける。MySQL向けアプリを利用しやすくても、中身や対応する機能まで同じではないんだ。
ひよこ ひよこ
分散すると何がうれしいの?
ペンギン先生 ペンギン先生
SQL処理と保存の層を、負荷に応じて拡張できるよ。TiKVはデータを範囲ごとに分けて管理し、PDが配置や負荷の調整を担う。ただし、サーバーを足せば処理能力が必ず同じ割合で増えるわけではない。クエリやデータの偏り、機器の能力なども確認するんだ。
ひよこ ひよこ
HTAPってよく聞くけど、具体的にどういうこと?
ペンギン先生 ペンギン先生
トランザクション処理(OLTP)と分析処理(OLAP)を組み合わせることだよ。TiKVは分散キーバリューストアで、行の読み書きなどを支える。TiFlashは列形式のデータで分析を助ける。TiFlashで使いたいテーブルは複製を設定するので、すべてのテーブルが自動で両方に保存されるわけではないんだ。
ひよこ ひよこ
TiKVとTiFlashのデータは、いつでも同時に更新されるの?
ペンギン先生 ペンギン先生
書き込みはTiKVが受け、TiFlashへはRaft Learnerで非同期に複製するよ。TiFlashで読むときは、その読み取り時点に必要なデータが反映されているかを確認し、一貫した状態を読む。反映待ちが生じることもある。「非同期だから古いデータで適当に答える」でも、「常に複製の遅れがゼロ」でもないんだ。
ひよこ ひよこ
MySQLから、そのまま乗り換えていいの?
ペンギン先生 ペンギン先生
まず使っている機能を確認しよう。たとえばストアドプロシージャやトリガーなど、非対応の機能がある。SQLの互換性に加え、処理の速さ、運用、必要な構成を移行前に確かめるよ。データ量の数字だけで決めず、トランザクションと分析をどう使いたいかに合わせて検討するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「TiDB」って出てきたら「MySQL互換を備え、取引処理と分析に対応する分散SQLデータベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「TiDB」 = Ti(Titanium)+DB(Database)
💬 公式の紹介では、TiはTitanium(チタン)を表すと説明されているよ。

参考資料

← 用語集にもどる