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
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_
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
680
From 5 to 1,300+ Clusters: Declarative Scaling for Private Kubernetes
yosshi_
1
83
Scaling In Kubernetes Safely on On-Prem KaaS Across 1,300+ Clusters and 40,000+ Nodes
yosshi_
1
120
Getting Started with Kubernetes Observability
yosshi_
8
2.8k
PromQL_Compatibility_Testing_Recap
yosshi_
1
1.2k
プロダクト誕生の背景から学ぶ PrometheusとGrafana Loki
yosshi_
11
3.9k
これから学ぶKubernetesのReconciliation Loop
yosshi_
16
5.3k
伝統的なエンプラ企業で取り組むインフラの設計書のモダナイゼーション.pdf
yosshi_
13
6.4k
KubeCon2019_NA_Recap__NATS_.pdf
yosshi_
0
230
Other Decks in Technology
See All in Technology
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
160
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
340
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
180
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
480
AIで仕事のやり方を変える
matsu7874
3
1k
PfEingのアプローチで働こう
rindrics
0
210
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
590
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
130
20260912_スクラムにジェネラリストは必要か
ryugen04
0
300
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
140
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
260
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Optimizing for Happiness
mojombo
378
71k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Joys of Absence: A Defence of Solitary Play
codingconduct
1
500
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
For a Future-Friendly Web
brad_frost
183
10k
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/) 参考