Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決する...
Search
DPon
April 10, 2026
Programming
530
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TiDBのアーキテクチャから学ぶ分散システム入門 〜MySQL互換のNewSQLは何を解決するのか〜 / tidb-architecture-study
DPon
April 10, 2026
More Decks by DPon
See All by DPon
『自分なんかが…』を超える。 プロポーザル提出までの心理的ハードルの外し方 / proposal-output
dznbk
1
2.2k
つよつよな人の理解の早さを理解する
dznbk
0
200
OpenSearchでレガシーな検索処理の大幅改善をやってやろう
dznbk
2
1.2k
テスト書きたいけど 書けてないのは 何でなんだぜ
dznbk
0
200
php-fpmのプロセスをコントロールする
dznbk
0
48
Other Decks in Programming
See All in Programming
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8.9k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
12
3k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
140
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
2
420
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
560
JRuby: Past, Present, and Future
headius
0
210
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
200
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
330
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
390
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
290
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Technical Leadership for Architectural Decision Making
baasie
3
580
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
490
Scaling GitHub
holman
464
140k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
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の場合) • 水平スケーリングが可能で、ライトヘビーなユースケースなどに適している
ご清聴ありがとうございました 登壇は 午前で終わると あと気楽 でぃーぽん