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