Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決する...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
DPon
April 10, 2026
Programming
300
1
Share
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
DPon
April 10, 2026
More Decks by DPon
See All by DPon
『自分なんかが…』を超える。 プロポーザル提出までの心理的ハードルの外し方 / proposal-output
dznbk
1
1.8k
つよつよな人の理解の早さを理解する
dznbk
0
170
OpenSearchでレガシーな検索処理の大幅改善をやってやろう
dznbk
2
980
テスト書きたいけど 書けてないのは 何でなんだぜ
dznbk
0
170
php-fpmのプロセスをコントロールする
dznbk
0
31
Other Decks in Programming
See All in Programming
要はバランスからの卒業 #yumemi_grow
kajitack
0
190
Hive Metastoreを通して学ぶIceberg REST Catalog ― 仕様から実装まで
okumin
0
280
サーバーレスで作る、動画データ管理基盤
oyasumipants
0
250
iOS26時代の新規アプリ開発
yuukiw00w
0
200
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
290
サプライチェーン攻撃対策「層を重ねて落ちない壁」を10日間で組み上げた話 #TechLeadConf2026
kashewnuts
1
360
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
360
いつか誰かが、と思っていた フロントエンド刷新5年間の実践知
kiichisugihara
1
300
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
1.9k
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
970
TSKaigi2026-静的解析への投資がAI時代のコード品質を支える ── カスタムESLintルールの設計と運用
hayatokudou
6
1.1k
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
240
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.6k
Amusing Abliteration
ianozsvald
1
180
Designing Experiences People Love
moore
143
24k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
940
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
310
Tell your own story through comics
letsgokoyo
1
930
The Cult of Friendly URLs
andyhume
79
6.9k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
750
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Code Reviewing Like a Champion
maltzj
528
40k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Transcript
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 2026/4/11 PHPカンファレンス小田原2026 / @DPon
自己紹介 • 堂薗 伸樹(どうぞの のぶき) / DPon(でぃーぽん) ◦ X(旧Twitter): @DPontaro
◦ 🙅 園 🙆 薗 • 所属:スターフェスティバル株式会社 ◦ エンジニア兼マネージャー • 大阪からきました • ゲーム・漫画が好きです • スト6 Cジュリ MR1300 ~ 1400くらい
今日お話すること • NewSQLとは何か、RDBMS, NoSQLとの違い • TiDBのアーキテクチャ概要(TiDB / TiKV / PD)
• 分散システムがもたらす強みとユースケース
NewSQLとは何か RDBMS, NoSQLとの違い
RDBMSとは “Relational Database Management System” の略称 • MySQL, PostgreSQL, Oracle,
SQL Serverなど • データをテーブル形式で管理 • データの関係性を定義 • SQLを使用してデータ操作 • データの整合性を強く保証(ACID特性)
ACID特性とは 予期せぬ処理の失敗があっても、データの整合性を保つための性質 • Atomicity(原子性):処理がすべて成功 or すべて失敗 • Consistency(一貫性):処理の前後で、定義されてる制約条件を満たす • Isolation(独立性):処理が相互に影響しあわない
• Durability(永続性):処理が完了したら、その結果が失われない
RDBMSの課題 書き込みのスケールアウトが難しい • 基本はスケールアップ(マシンのスペックをあげる) • レプリケーションで読み取りのスケールアウトは可能 • 書き込みは水平シャーディングをアプリケーション側で実装する必要がある • 運用が複雑になる
NoSQLの特徴 NoSQL: Not Only SQL • Redis, DynamoDB, MongoDBなど •
可用性や分散性を優先(BASE特性) • 高いスケーラビリティ(水平スケーリング前提) • 柔軟なデータ構造(スキーマレス) • データ操作に独自のAPI
NewSQL RDBMSとNoSQLの両方の利点を持つデータベース • TiDB, Spanner, CockroachDB, YugabyteDBなど • 高いスケーラビリティ •
ACID特性 • SQLインタフェース
RDBMS, NoSQL, NewSQLの比較 特徴 RDBMS NoSQL NewSQL データモデル リレーショナル スキーマレス
(キーバリュー、ドキュメン トなど) リレーショナル クエリ言語 SQL 独自API SQL スケーラビリティ スケールアップ スケールアウト スケールアウト データの一貫性 ACID特性 BASE特性 ACID特性
TiDBのアーキテクチャ概要 (TiDB / TiKV / PD)
TiDBとは • PingCAP社が開発した分散SQLデータベース • MySQL互換のプロトコルを提供 • 「チタン(Titan)」のように堅牢なDBという意味で元素記号「Ti」から命名
TiDBのアーキテクチャ 引用:https://docs.pingcap.com/ja/tidb/stable/tidb-architecture/
TiDB cluster • コンピューティング層 • MySQL互換のプロトコルを提供 • SQLクエリの解析、最適化を実行 • 最終的に分散実行プランを生成
• データ読み取りリクエストをTiKVノードに送信 • ステートレスで、スケールアウトが容易
TiKV • ストレージ層 • データの保存を担当 • 分散キーバリューストア • データは複数のノードに分散され、シャーディング •
リージョンという単位でデータを保存 • 各TiKVノードには複数のリージョンが割り当てられる ID 名前 出身 1 佐藤 北海道 2 田中 神奈川 Key Value 1 佐藤, 北海道 2 田中, 青森
PD(Placement Driver) • クラスタ全体のメタデータ管理コンポーネント • データの配置管理 • TSO(Timestamp Oracle)の発行 •
TiDB -> TiKVへのルーティング • 通常3ノード構成、高可用性
TiKVのリージョンとリーダー選挙
TiKVのリージョン • データはリージョンという単位で分割されて保存される ◦ usersのID:1〜1000はリージョン1 ◦ usersのID:1001〜2000はリージョン2 • いわゆる水平シャーディング
TiKVのリージョン:リーダーとフォロワー • 各リージョンは複数のノードに複製される • リーダーとフォロワーの役割がある • リーダー:書き込みと読み取りのリクエストを処 理 • フォロワー:リーダーからのデータを複製し、
リーダーの障害時に昇格
Raftアルゴリズム • 分散合意アルゴリズム • safety(安全性)と liveness(生存性)を保証 • リージョンのリーダー、 フォロワーは1つのRaftグループを形成
リーダー選挙:選挙タイムアウト • フォロワーはリーダーから定期的な ハートビートを受け取っている • 一定時間受け取れなくなった場合に、 選挙タイムアウト が発生 • クラスター内で新たにリーダーを決定す
るための選挙プロセス が開始
リーダー選挙:立候補 • フォロワーが自身を候補者(Candidate)に 昇格 • 候補者のノードはまず自身に投票 • 候補者は他のノードに投票を要求 • 任期番号と最新のログ情報を投票要求に
含める
リーダー選挙:投票と昇格 • 他ノードは自身の任期番号とログ情 報を比較 • 適切な場合に投票 • 過半数から投票を獲得した候補者が 新リーダーに昇格 •
新リーダーは全フォロワーにハート ビートを送信し、クラスターの安定性を 回復
PD:TSOでの時刻同期
分散システム:時刻ずれの課題 • 分散システムにおいては、各ノードで時刻がずれてるのが当たり前 • 全ノードを都度同期させるのは現実的ではない
タイムスタンプの課題:例
TSO(Timestamp Oracle) • PDサーバーが唯一のタイムスタンプ発行元 • SELECT, INSERTなど処理のはじめに必ずPDにタイムスタンプを要求 • タイムスタンプはグローバルに一意で、クラスター全体で一貫した時系列を維持 tso
= 457658991939683538; 2025-04-28 08:55:05.141000 末尾の141000は、論理時間。同じ時間での並び順 0.001秒あたり、最大26万のTSOを発行可能
PDサーバーが停止したらTSOはどうなる? • PDサーバーが発行したTSOの最大値が記録されている • 停止時Raftアルゴリズムで新しいPDサーバーが選出される • 新しいPDサーバーは停止前の最大TSOを引き継ぎ、タイムスタンプの一意性と順 序を保証
分散システムがもたらす強みとユースケース
分散システムの強み • 高可用性:ノード障害があってもサービス継続 • 耐障害性:データの複製とリーダー選挙で障害に対応 • 高スケーラビリティ:ノード追加で水平スケーリング可能 • 負荷分散:リクエストを複数ノードで処理
ユースケース • ライトヘビーなアプリケーション • 柔軟なスケーリングが必要な場合 • 無停止での運用が求められるシステム • (TiDBの場合)既存のMySQLからの移行 •
TiDBの事例記事 ◦ https://pingcap.co.jp/case-study/ 逆に向いてない(かも) • シンプルな読み取り中心のシステム • 低レイテンシが求められるリアルタイムアプリケーション
まとめ
まとめ • NewSQLはRDBMSとNoSQLの利点を兼ね備えたデータベース • 分散システムの強み、高可用性、耐障害性をRaftアルゴリズムで実現 • 分散トランザクションの一貫性をTSOで保証(TiDBの場合) • 水平スケーリングが可能で、ライトヘビーなユースケースなどに適している
ご清聴ありがとうございました 登壇は 午前で終わると あと気楽 でぃーぽん