【NewSQL】無料トレーニング:TiKVの永続化について
by
PingCAP-Japan
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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