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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
DPon
April 10, 2026
Programming
390
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
2k
つよつよな人の理解の早さを理解する
dznbk
0
180
OpenSearchでレガシーな検索処理の大幅改善をやってやろう
dznbk
2
1.1k
テスト書きたいけど 書けてないのは 何でなんだぜ
dznbk
0
180
php-fpmのプロセスをコントロールする
dznbk
0
36
Other Decks in Programming
See All in Programming
FDEが実現するAI駆動経営の現在地
gonta
2
230
霧の中の代数的エフェクト
funnyycat
1
440
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
3
250
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.7k
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
160
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
210
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.2k
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
AIが無かった頃の素敵な出会いの話
codmoninc
1
270
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.8k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
680
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How to train your dragon (web standard)
notwaldorf
97
6.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Leo the Paperboy
mayatellez
8
1.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Abbi's Birthday
coloredviolet
3
8.8k
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の場合) • 水平スケーリングが可能で、ライトヘビーなユースケースなどに適している
ご清聴ありがとうございました 登壇は 午前で終わると あと気楽 でぃーぽん