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
Vitessの基礎.pdf
Search
yosshi_
July 01, 2019
Technology
1.6k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vitessの基礎.pdf
yosshi_
July 01, 2019
More Decks by yosshi_
See All by yosshi_
Getting Started with Kubernetes Observability
yosshi_
8
2.8k
PromQL_Compatibility_Testing_Recap
yosshi_
0
1.2k
プロダクト誕生の背景から学ぶ PrometheusとGrafana Loki
yosshi_
11
3.8k
これから学ぶKubernetesのReconciliation Loop
yosshi_
15
5.2k
伝統的なエンプラ企業で取り組むインフラの設計書のモダナイゼーション.pdf
yosshi_
13
6.4k
KubeCon2019_NA_Recap__NATS_.pdf
yosshi_
0
220
“Running Apache Samza on Kubernetes” Recap : KubeCon2019@NA
yosshi_
3
1.3k
Kuberntes_Monitoring_入門.pdf
yosshi_
17
3.2k
Kubernetes_Logging入門.pdf
yosshi_
18
7.9k
Other Decks in Technology
See All in Technology
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
2.5k
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
2
160
20260702_生成AIはどこまで成長するのか_チャットだけじゃない世界
doradora09
PRO
0
110
Claude Code 珍プレー好プレー
shinyasaita
0
290
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
280
最近評価が難しくなった
maroon8021
0
250
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
140
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
520
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
360
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
3.7k
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
1.6k
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
810
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Docker and Python
trallard
47
3.9k
Skip the Path - Find Your Career Trail
mkilby
1
160
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
How GitHub (no longer) Works
holman
316
150k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Typedesign – Prime Four
hannesfritz
42
3.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Utilizing Notion as your number one productivity tool
mfonobong
4
350
Transcript
の基礎 恐るることなかれ! Cloud NativeリレーショナルDB特集!! -- cndjp第12回
自己紹介 • 吉村 翔太 • コミュニケーションズ所属 • データサイエンスチーム • インフラエンジニア
データエンジニアリング • 、 • 趣味:ボードゲーム • コミュニティ活動
本日の目次 • Vitessとは • Vitessのアーキテクチャ • Vitessのシャーディングの仕組み • 参考
とは
Vitessとは • シャーディングによるMySQLの水平スケーリングのた めのデータベース・クラスタリングシステム • YouTubeによって開発された技術 – First Commit in
2010 – In Production at YouTube since 2011 • CNCFに16番目にホストされたプロジェクト(現在は Incubating)
Cloud Native Landscape 参考 https://landscape.cncf.io/ 関連
Cloud Native Landscape DB編 参考 https://landscape.cncf.io/
Vitessの特徴 • パフォーマンス – パフォーマンスを最適化するた めの機能の提供 – トランザクション管理、全体の スループットを最適化 •
データベースの保護 – 潜在的に問題のあるクエリー からの保護 • クラスター管理・監視 – WebベースのGUI、マスター管 理ツール – パフォーマンスの監視・ 診断・分析ツールの提供 • MySQLとの互換性 – MySQLのクエリとの互換性 MySQLクライアントからそのま ま利用可能 – (一部非互換あり)
MySQLに対するVitessの改良点 参考 ttps://vitess.io/docs/overview/whatisvitess/ • 接続プーリング – MySQLに比べて接続のオーバーヘッドが少ないので数千の接続数が可能 • パフォーマンス –
例えばLIMITがないクエリなどをパフォーマンスを低下させるクエリを自動で書き換える • シャード管理 – メタデータをetcdで管理し、ユーザが を経由して接続する方式を取っているため ユーザ側がVitessの構成変更を意識することなく接続できる • ライフサイクルの管理の自動化 – マスターフェイルオーバーやデータバックアップをVitessが自動で管理
Vitessのアーキテクチャ
Vitessのアーキテクチャ
Vitessの構成要素(1/3) • Topology – サーバー、シャーディング・スキームなどの構成情報を 管理するメタデータストア • Kubernetesではetcdを利用 • VTgate
– アプリケーションからのクエリを正しいVTtabletにルー ティングし、統合された結果をクライアントに返す軽量な プロキシサーバー • アプリケーションはデータの配置(Shard)を意識することなく、 VTgateに対して処理を投げるだけ
Vitessの構成要素(2/3) • tablet – mysqldとVTtabletをセットでこう呼ぶ – tabletはmaster/replica/rdonlyなどのタイプが割 り当てられる • VTtablet
– MySQLデータベースの前に置かれているプロキ シサーバー – MySQLインスタンスと1:1、有害なクエリから MySQLを保護
Vitessの構成要素(3/3) • VTctld – Vitessクラスタに対する管理操作を受け付けるHTTPサーバー – GUIも提供 • VTctl –
Vitessクラスタを管理するためのコマンドラインツール
Vitess on Kubernetes
参考 minikube上にhelmで立ち上げた場合 参考 https://github.com/vitessio/vitess/blob/master/examples/helm/101_initial_cluster.yaml
Vitessのアーキテクチャ(おさらい)
Vitessのシャーディングの仕組み
シャーディング • シャーディングとは – 2つ以上のデータベースにデータを分割して格納すること – Shardを追加することでDBのスケールアウトし、パフォーマンスの向上を狙う技 術 • Vitessは2種類のShardingをサポート
– Vertical Sharding(垂直): テーブル毎に複数のデータベースに分けて格納 – Horizontal Sharding(水平): 1つのテーブルを複数のShardに分割し、 複数のデータベースに分けて格納
Vitessのワークロード Level1
Vitessのワークロード Level2 を分割
Vitessのワークロード Level3 をシャーディング
テーブルのシャーディング A列 B列 C列 … … … 1235 20181004 yyy
1236 20181005 zzz … … … A列 B列 C列 … … … 1234 20181003 xxx … … … のルール を定義 { } A列 B列 C列 … … … 1234 20181003 xxx 1235 20181004 yyy 1236 20181005 zzz … … …
シャーディングのロジック Shard -40 40-80 80-C0 C0- Keyspace ID … 7F
FF FF FF 80 00 00 00 80 00 00 01 … Key Range :00 00 00 00 – 3F FF FF FF :3F FF FF FF – 7F FF FF FF :80 00 00 00 – C0 00 00 00 :C0 00 00 00 – FF FF FF FF A列 B列 … … 1234 1235 1236 … … … ※ の名前は (キー範囲)の開始と終了 進数で表示されハイフンで区切られる テーブル { } • Vindexを付与した列からKeyspace IDを算出(Hashなど複数種のサポート) • Keyspace IDとShardとのマッピングに従ってデータを配置
VindexとKeyspace ID • Vindex – キーとなる列とKeyspace IDの算出ロジックを定義 • 算出ロジックは選択可能 –
例:Hash/Functional/Lookup Unique/Lookup NonUnique – テーブルは複数のVindexを持つことができる • プライマリVindex: Shard分割に使用する一意な列を指定(Sharding Key) • セカンダリVindex: プライマリVindexを使用しないWHERE句の最適化を提供 (クロスシャードIndex) • Keyspace ID – 特定の行がどのShardに存在するかを決定・特定するために使用される値 – Vitessが内部的に使用
Vitessのワークロード Level3(おさらい) をシャーディング
参考
の状態 参考 mysqlの操作が可能
参考 VTctldのGUI
参考 VTctldのGUI
参考 VTctldのGUI
参考 VTctldのGUI
参考 vtgateのGUI
参考 vtgateのGUI
Special Thanks!! @cotoc88 本スライドの監修
• JapanContainerDays v18.12 Kubernetesが超強力な分散RDBに vitessの真価を大検証してみた - 早川 博 , 茂
こと(日本オラクル) (https://speakerdeck.com/cotoc/20181204-vitess-jkd-day1) • Kubecon China 2019でのToliver氏の発表 (https://kccncosschn19eng.sched.com/speaker/toliver17?iframe=no&w=100%&sidebar=yes&bg=no) • Vitessの公式サイトのPresentations and Videos (https://vitess.io/docs/resources/presentations/) 参考