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.7k
PromQL_Compatibility_Testing_Recap
yosshi_
0
1.2k
プロダクト誕生の背景から学ぶ PrometheusとGrafana Loki
yosshi_
11
3.8k
これから学ぶKubernetesのReconciliation Loop
yosshi_
15
5.1k
伝統的なエンプラ企業で取り組むインフラの設計書のモダナイゼーション.pdf
yosshi_
13
6.3k
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
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
1
450
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
4
1.2k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
2
290
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
160
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
530
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
1
370
やさしいA2A入門
minorun365
PRO
8
1.2k
新しいVibe Codingと”自走”について
watany
5
260
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
1.3k
Ruby::Boxでできること、Refinementsでできること
joker1007
3
410
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
420
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
240
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
Abbi's Birthday
coloredviolet
2
8k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Six Lessons from altMBA
skipperchong
29
4.3k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
Navigating Team Friction
lara
192
16k
The Language of Interfaces
destraynor
162
27k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Design in an AI World
tapps
1
230
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/) 参考