【NewSQL】無料トレーニング:TiKVの永続化について
by
PingCAP-Japan
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
本日の位置づけ https://pingcap.co.jp/event/ 2022年6月16日(木) 14:00-15:00 PingCAP Education:TiKV- RocksDBについて 2022年6月23日(木) 14:00-15:00 アプリケーション開発観点からの TiDB - PHP編 2022年6月30日(木) 14:00-15:00 HTAPを体験!TiDBのカラムナストアで分析してみよう! 2022年7月14日(木) 14:00-15:30 TiDB Cloudの紹介・デモ 2022年7月21日(木) 14:00-15:00 TiDB Cloud リリースノートについて 2022年7月28日(木) 14:00-15:00 PingCAP Education:TiDBでの表設計(1) ※過去開催アーカイブ : https://www.youtube.com/channel/UCatxrGZANSnii2fe7FeEwvg/playlists
Slide 2
Slide 2 text
PingCAP Education: TiKV の永続化について Xinke Qiao / 喬 心軻(キョウ シンカ) Technical support engineer PingCAP Japan PingCAP Education
Slide 3
Slide 3 text
アジェンダ ● TiDB のアーキテクチャ ○ 各コンポーネントの役割 ● TiKV: 5つの役割 ● なぜ RocksDB を選択したか ● RocksDB による永続化実現の仕組み ○ 書き込む ○ 読み込む ○ CF(Column Family) ● まとめ
Slide 4
Slide 4 text
TiDB のアーキテクチャ
Slide 5
Slide 5 text
TiDB のアーキテクチャ TiDB TiDB Cluster TiKV Cluster 負荷分散・領域管理 3ノードが必要 PD Cluster TiDB TiKV TiKV TiKV TSO / Data Location データストアレイヤー アプリケーション (MySQL Client利用可能) SQL解析レイヤー (Parser, Optimizer) … クエリの増加 ノード追加で対応 … 容量拡張 ノード追加で対応 Application via MySQL Protocol ● TiDB、PD(Placement Driver)、TiKV、 TiFlash、… Application via MySQL Protocol Heartbeat/… Scheduler PD PD PD Request
Slide 6
Slide 6 text
TiKVの5つの役割(1) 1. データの永続化の実現 2. 分散型データベースのデータ整合性の保証 3. MVCC(Multi-Version Concurrency Control) 4. 分散トランザクションの実現 5. Coprocessor ➔ Rocks DB for Raft log ➔ Rocks DB for KV
Slide 7
Slide 7 text
TiKVの5つの役割(2) 1. データの永続化の実現 2. 分散型データベースのデータ整合性の保証 3. MVCC(Multi-Version Concurrency Control) 4. 分散トランザクションの実現 5. Coprocessor ➔ raft 合意アルゴリズム ➔ raft group ➔ multi-raft ➔ raft の複製 ➔ leader の選挙 ➔ …
Slide 8
Slide 8 text
TiKVの5つの役割(3) 1. データの永続化の実現 2. 分散型データベースのデータ整合性の保証 3. MVCC(Multi-Version Concurrency Control) 4. 分散トランザクションの実現 5. Coprocessor ➔ KV =>(key_version, value) 例:t_12_p_1_,”Tom” ) ➔ GC による古いバージョンデータのクリ ア ➔ …
Slide 9
Slide 9 text
TiKVの5つの役割(4) 1. データの永続化の実現 2. 分散型データベースのデータ整合性の保証 3. MVCC(Multi-Version Concurrency Control) 4. 分散トランザクションの実現 5. Coprocessor ➔ Google Percolator ➔ 2PC(2 Phase Commit)
Slide 10
Slide 10 text
TiKVの5つの役割(5) 1. データの永続化の実現 2. 分散型データベースのデータ整合性の保証 3. MVCC(Multi-Version Concurrency Control)の制御 4. 分散トランザクションの実現 5. Coprocessor 1.TiDB の一部処理をTiKVに プッシュダウンする
Slide 11
Slide 11 text
TiKVの5つの役割(5) 1. データの永続化の実現 2. 分散型データベースのデータ整合性の保証 3. MVCC(Multi-Version Concurrency Control)の制御 4. 分散トランザクションの実現 5. Coprocessor 2.結果集合のみTiDBに戻す
Slide 12
Slide 12 text
RocksDB による TiKV 永続化の実現
Slide 13
Slide 13 text
TiDB はなぜ RocksDB を選択したか RocksDB は Flash ストレージを効率よく利用するために最適化されているストレージエンジンとなります。 特徴: ○ LSM ツリー(Log-Structured Merge-tree)の構造 ○ 高性能な Key-Value データベース ○ データの永続化を実現していると同時に、性能と安全性を保つ ○ Range Scan の実現 ○ TB レベルのデータをローカル Flash、または RAM に格納するアプリケーションに適している ○ サイズの小さい Key-value を Flash、もしくはメモリに入れることによる性能の向上 ○ CPU の数に伴って、性能が線形に増加
Slide 14
Slide 14 text
RocksDB の書き込む仕組み(1) ● LSM ツリー(Log-Structured Merge-tree) ● WAL (1,Tom) (1,Tom) Write-Ahead Logging Sorted String Table put key=1, value=”tom” del key=1233 put key=2, value=”lucy” … … Merge sync-log=true OS の fsync が行う
Slide 15
Slide 15 text
RocksDB の書き込む仕組み(2) ● MemTable (1,Tom) (2,Jack) (2,Jack) ① ② Write-Ahead Logging Sorted String Table (1,Tom) (2,Jack) Write_buffer_size
Slide 16
Slide 16 text
RocksDB の書き込む仕組み(3) ● Write_buffer_size ● Immutable MemTable ③ Write-Ahead Logging Sorted String Table (1,Tom) (2,Jack) MemTable (1,Tom) (2,Jack)
Slide 17
Slide 17 text
RocksDB の書き込む仕組み(4) ● SST ● Write Stall (Immutable MemTable がデフォルトで5個まで蓄積すると、Write Stall が発生) Write-Ahead Logging Sorted String Table MemTable (1,Tom) (2,Jack) ④ 1:1 (1,Tom) (2,Jack)
Slide 18
Slide 18 text
RocksDB の書き込む仕組み(5) ● SST ファイルのレベル ● Level 0 ~= Immutable MemTable ● 20 個Level 0 Files ---->> Write Stall 4 File Compaction Compaction Compaction sorted Compaction (1,Tom) (2,Jack) Archive
Slide 19
Slide 19 text
RocksDB の書き込む仕組み(まとめ) ● 順序書き込み 例)削除:<del key=1233> 更新: Background処理 put key=1, value=”tom” del key=1233 put key=2, value=”lucy” … …
Slide 20
Slide 20 text
RocksDB による読み取り、CF
Slide 21
Slide 21 text
RocksDB-読み取る仕組み(1) ● 2分探索法 id=1 Value??? min-> max-> New Old
Slide 22
Slide 22 text
RocksDB-読み取る仕組み(2) ● Bloom filter Bloom Filter によるこのセットに データがあるかとの判断 正確性 ある △ ない ○
Slide 23
Slide 23 text
CF(Column Family)-1 ● TiDB では、Default、Write、Lock の3つの CFによる分散トランザクションを実現 Table(id,name,age,addr,tel) CF1: id--(name,age) CF2: id--(addr,tel)
Slide 24
Slide 24 text
CF(Column Family)-2 ● 書き込む際に、特定のCFへの書き込みも可能 Table(id,name,age,addr,tel) CF1:(id,name,age) CF2(id,addr,tel) write {CF1,id(name,age)}
Slide 25
Slide 25 text
最後に〜
Slide 26
Slide 26 text
まとめ ● TiDB のアーキテクチャ ○ 各コンポーネントの役割 ● TiKV: 5つの役割 ● なぜ RocksDB を選択したか ● RocksDB による永続化実現の仕組み ○ 書き込む ○ 読み込む ○ CF(Column Family)
Slide 27
Slide 27 text
Q&A/アンケートのお願い ● Q&A 下のQ&Aボタンから質問いただけます。 ● アンケート アンケートの回答をお願いいたします! 一言でご意見・感想をいただけますと大変助かります!
Slide 28
Slide 28 text
Webinar : 今後の予定 https://pingcap.co.jp/event/ 2022年6月16日(木) 14:00-15:00 PingCAP Education:TiKV- RocksDBについて 2022年6月23日(木) 14:00-15:00 アプリケーション開発観点からの TiDB - PHP編 2022年6月30日(木) 14:00-15:00 HTAPを体験!TiDBのカラムナストアで分析してみよう! 2022年7月14日(木) 14:00-15:30 TiDB Cloudの紹介・デモ 2022年7月21日(木) 14:00-15:00 TiDB Cloud リリースノートについて 2022年7月28日(木) 14:00-15:00 PingCAP Education:TiDBでの表設計(1) ※過去開催アーカイブ : https://www.youtube.com/channel/UCatxrGZANSnii2fe7FeEwvg/playlists
Slide 29
Slide 29 text
Webinar : アーカイブ 2022年4月14日(木) 14:00-15:30 TiDB ソフトウェアの紹介・デモ 2022年4月21日(木) 14:00-15:00 アプリケーション開発観点からの TiDB - Ruby編 2022年5月12日(木) 14:00-15:30 TiDB Cloudの紹介・デモ 2022年5月19日(木) 14:00-15:00 最新TiDB 6.0のポイント 2022年5月26日(木) 14:00-15:00 アプリケーション開発観点からの TiDB - Java編 2022年6月9日(木) 14:00-15:30 TiDB ソフトウェアの紹介・デモ https://www.youtube.com/channel/UCatxrGZANSnii2fe7FeEwvg/featured
Slide 30
Slide 30 text
スケーラブルDBはこう使われている!を知るイベント 7/7開催・TiDB User Day 2022 注目セッション スピーカー企業 ①AWS/GCPベースのSaaSシステムはTiDBとの相性が抜群! ②@cosmeがレガシーシステムをクラウドネイティブ DBに載せ替える理由 ③【パネルディスカッション】現場から見た TiDB / NewSQL https://pingcap.co.jp/tidb-user-day-2022/ 特典 🎁 ①イベント登録で先着200名様にAmazonギフト券1,000円をプレゼント! ②イベントの感想や技術ブログを書くと Amazonギフト券最大50,000円分をプレゼント!
Slide 31
Slide 31 text
TiDB Cloud : 無償トライアルのご案内 TiDB Cloud Free Trialはこちら https://tidbcloud.com/signup Developer Tierでは TiDB Cloudを無償で1年間ご利用頂けます。 容量制限はありますが、 本番と同等の機能を提供しているため、 アプリとの接続試験などが容易に。
Slide 32
Slide 32 text
クラウドアプリのスタートをご支援! TiDB Cloud 1年無料キャンペーン 日本進出から1周年を記念し、TiDB Cloudをご利用いただいたことがないお客様を対象にTiDB Cloud1年間相当の値引きキャンペーンを実施します。 キャンペーン期間 2022年5月18日~2023年3月31日 申込み分まで キャンペーン内容 最大700万円相当(TiDB Cloud典型構成で1年分相当)の値引きを提供します。 対象・適用条件 下記条件をみたすお客様 ※1(最大10社※2) - TiDB Cloudを使用したことがないお客様 - 事例・プロモーションにご協力いただけるお客様 - 設立から1年以上経過しているお客様 適用方法 フォームにご入力の上、キャンペーンにお申し込みください。審査結果およびキャンペーン の詳細について担当者より連絡いたします。 URL https://pingcap.co.jp/start-dash-202205/ ※1 別途所定の審査あり ※2 予定数に達し次第終了する可能性があります。
Slide 33
Slide 33 text
OSS Insight : 活発度が分かる分析サービス 46億を超えるGitHub上のイベント分析するデータベースとしてTiDB (TiFlash)を活用 https://ossinsight.io/ ①各イベント発生の推移 ①GitHubイベント データを1分おきに同期 +TiFlash https://ossinsight.io/ ②Pull requests地域の表示 ②分析クエリを TiFlash(カラムストア ) で高速処理 ③ジャンル内での比較(人気言語等) etc…
Slide 34
Slide 34 text
TiDB/TiDB Cloud : 日本語版ドキュメントのご案内 TiDB/TiDB Cloud 日本語版ドキュメントはこちら↓ https://docs.pingcap.com/ja/tidb/stable/overview
Slide 35
Slide 35 text
Thank You! https://www.pingcap.com/
[email protected]
PingCAP Education