Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【NewSQL】無料トレーニング:TiKVの永続化について

 【NewSQL】無料トレーニング:TiKVの永続化について

PingCAPでは、オンラインによる無料トレーニング「PingCAP Education」を提供しています。NewSQLの基礎からTiDBのアーキテクチャ、システム管理、設計コンセプト、ベストプラクティスなど、今日から使える実践的なコンテンツを紹介します。

この資料では、分散型データベースTiDBが、ストレージ・レイヤーをどのように実装しているか、なぜRocksDBを選択したか、LSM tree (Log-Structure Merge tree) で知られる RocksDBはどのように書き込み、読み込みを行っているかなどの疑問を解説します。TiDBについて知識がなくても、RocksDB 、Key-Value型データベースについて関心がある方は、情報収集のためにもぜひ本資料をご覧ください。

62fc38bee93c1102c9cb7df9254bf1c4?s=128

PingCAP-Japan

June 17, 2022
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. 本日の位置づけ 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
  2. PingCAP Education:
 TiKV の永続化について
 Xinke Qiao / 喬 心軻(キョウ シンカ) 


    Technical support engineer 
 PingCAP Japan
 PingCAP Education

  3. アジェンダ
 • TiDB のアーキテクチャ
 ◦ 各コンポーネントの役割
 
 • TiKV: 5つの役割


    
 • なぜ RocksDB を選択したか
 
 • RocksDB による永続化実現の仕組み
 ◦ 書き込む
 ◦ 読み込む
 ◦ CF(Column Family)
 
 • まとめ

  4. TiDB のアーキテクチャ


  5. 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

  6. TiKVの5つの役割(1)
 1. データの永続化の実現
 2. 分散型データベースのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)
 4.

    分散トランザクションの実現
 5. Coprocessor
 ➔ Rocks DB for Raft log
 ➔ Rocks DB for KV 

  7. TiKVの5つの役割(2)
 1. データの永続化の実現
 2. 分散型データベースのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)
 4.

    分散トランザクションの実現
 5. Coprocessor
 ➔ raft 合意アルゴリズム
 ➔ raft group
 ➔ multi-raft
 ➔ raft の複製
 ➔ leader の選挙
 ➔ …

  8. TiKVの5つの役割(3)
 1. データの永続化の実現
 2. 分散型データベースのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)
 4.

    分散トランザクションの実現
 5. Coprocessor
 ➔ KV =>(key_version, value)
 例:t_12_p_1_<version>,”Tom” )
 ➔ GC による古いバージョンデータのクリ ア
 ➔ …

  9. TiKVの5つの役割(4)
 1. データの永続化の実現
 2. 分散型データベースのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)
 4.

    分散トランザクションの実現
 5. Coprocessor
 ➔ Google Percolator
 ➔ 2PC(2 Phase Commit)

  10. TiKVの5つの役割(5)
 1. データの永続化の実現
 2. 分散型データベースのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)の制御
 4.

    分散トランザクションの実現
 5. Coprocessor
 1.TiDB の一部処理をTiKVに プッシュダウンする

  11. TiKVの5つの役割(5)
 1. データの永続化の実現
 2. 分散型データベースのデータ整合性の保証
 3. MVCC(Multi-Version Concurrency Control)の制御
 4.

    分散トランザクションの実現
 5. Coprocessor
 2.結果集合のみTiDBに戻す

  12. RocksDB による TiKV 永続化の実現


  13. TiDB はなぜ RocksDB を選択したか
 RocksDB は Flash ストレージを効率よく利用するために最適化されているストレージエンジンとなります。 
 


    特徴:
 ◦ LSM ツリー(Log-Structured Merge-tree)の構造 
 ◦ 高性能な Key-Value データベース
 ◦ データの永続化を実現していると同時に、性能と安全性を保つ 
 ◦ Range Scan の実現
 ◦ TB レベルのデータをローカル Flash、または RAM に格納するアプリケーションに適している 
 ◦ サイズの小さい Key-value を Flash、もしくはメモリに入れることによる性能の向上 
 ◦ CPU の数に伴って、性能が線形に増加 

  14. 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 が行う

  15. RocksDB の書き込む仕組み(2)
 • MemTable
 (1,Tom)
 (2,Jack)
 (2,Jack)
 ①
 ②
 Write-Ahead

    Logging 
 Sorted String Table
 (1,Tom)
 (2,Jack)
 Write_buffer_size

  16. RocksDB の書き込む仕組み(3)
 • Write_buffer_size
 • Immutable MemTable
 ③
 Write-Ahead Logging

    
 Sorted String Table
 (1,Tom)
 (2,Jack)
 MemTable
 (1,Tom)
 (2,Jack)

  17. 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)

  18. 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

  19. RocksDB の書き込む仕組み(まとめ)
 • 順序書き込み 
 例)削除:<del key=1233> 更新: <put key=2,value=”Lucy”>
 Background処理


    put key=1, value=”tom”
 del key=1233
 put key=2, value=”lucy”
 …
 …

  20. RocksDB による読み取り、CF


  21. RocksDB-読み取る仕組み(1)
 • 2分探索法
 id=1
 Value???
 min->
 max->
 New
 Old


  22. RocksDB-読み取る仕組み(2)
 • Bloom filter
 Bloom Filter によるこのセットに 
 データがあるかとの判断 


    正確性
 ある
 △
 ない
 ◦

  23. CF(Column Family)-1
 • TiDB では、Default、Write、Lock の3つの CFによる分散トランザクションを実現
 Table(id,name,age,addr,tel) 
 CF1:

    id--(name,age) 
 CF2: id--(addr,tel) 

  24. CF(Column Family)-2
 • 書き込む際に、特定のCFへの書き込みも可能
 Table(id,name,age,addr,tel) 
 CF1:(id,name,age) 
 CF2(id,addr,tel)
 write

    {CF1,id(name,age)} 

  25. 最後に〜


  26. まとめ
 • TiDB のアーキテクチャ
 ◦ 各コンポーネントの役割
 
 • TiKV: 5つの役割


    
 • なぜ RocksDB を選択したか
 
 • RocksDB による永続化実現の仕組み
 ◦ 書き込む
 ◦ 読み込む
 ◦ CF(Column Family)

  27. Q&A/アンケートのお願い
 
 • Q&A
 下のQ&Aボタンから質問いただけます。
 
 • アンケート
 アンケートの回答をお願いいたします!
 


    
 一言でご意見・感想をいただけますと大変助かります!

  28. 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
  29. 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
  30. スケーラブル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円分をプレゼント!
  31. TiDB Cloud : 無償トライアルのご案内 TiDB Cloud Free Trialはこちら https://tidbcloud.com/signup Developer

    Tierでは TiDB Cloudを無償で1年間ご利用頂けます。 容量制限はありますが、 本番と同等の機能を提供しているため、 アプリとの接続試験などが容易に。
  32. クラウドアプリのスタートをご支援! 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 予定数に達し次第終了する可能性があります。

  33. OSS Insight : 活発度が分かる分析サービス 46億を超えるGitHub上のイベント分析するデータベースとしてTiDB (TiFlash)を活用 https://ossinsight.io/ ①各イベント発生の推移 ①GitHubイベント データを1分おきに同期

    +TiFlash https://ossinsight.io/ ②Pull requests地域の表示 ②分析クエリを TiFlash(カラムストア ) で高速処理 ③ジャンル内での比較(人気言語等) etc…
  34. TiDB/TiDB Cloud : 日本語版ドキュメントのご案内 TiDB/TiDB Cloud 日本語版ドキュメントはこちら↓ https://docs.pingcap.com/ja/tidb/stable/overview

  35. Thank You!
 https://www.pingcap.com/
 info@pingcap.com
 PingCAP Education