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
570
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.3k
つよつよな人の理解の早さを理解する
dznbk
0
200
OpenSearchでレガシーな検索処理の大幅改善をやってやろう
dznbk
2
1.2k
テスト書きたいけど 書けてないのは 何でなんだぜ
dznbk
0
210
php-fpmのプロセスをコントロールする
dznbk
0
48
Other Decks in Programming
See All in Programming
AmebaブログはKMPから卒業します
kmars0605
0
190
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
590
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
Rails Girls Zürich Keynote
gr2m
96
14k
How to Talk to Developers About Accessibility
jct
2
580
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
The World Runs on Bad Software
bkeepers
PRO
72
12k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Designing Experiences People Love
moore
143
24k
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の場合) • 水平スケーリングが可能で、ライトヘビーなユースケースなどに適している
ご清聴ありがとうございました 登壇は 午前で終わると あと気楽 でぃーぽん