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型データベースについて関心がある方は、情報収集のためにもぜひ本資料をご覧ください。

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

    View full-size slide

  2. PingCAP Education:

    TiKV の永続化について

    Xinke Qiao / 喬 心軻(キョウ シンカ)

    Technical support engineer

    PingCAP Japan

    PingCAP Education


    View full-size slide

  3. アジェンダ

    ● TiDB のアーキテクチャ

    ○ 各コンポーネントの役割


    ● TiKV: 5つの役割


    ● なぜ RocksDB を選択したか


    ● RocksDB による永続化実現の仕組み

    ○ 書き込む

    ○ 読み込む

    ○ CF(Column Family)


    ● まとめ


    View full-size slide

  4. TiDB のアーキテクチャ


    View full-size slide

  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


    View full-size slide

  6. TiKVの5つの役割(1)

    1. データの永続化の実現

    2. 分散型データベースのデータ整合性の保証

    3. MVCC(Multi-Version Concurrency Control)

    4. 分散トランザクションの実現

    5. Coprocessor

    ➔ Rocks DB for Raft log

    ➔ Rocks DB for KV 


    View full-size slide

  7. TiKVの5つの役割(2)

    1. データの永続化の実現

    2. 分散型データベースのデータ整合性の保証

    3. MVCC(Multi-Version Concurrency Control)

    4. 分散トランザクションの実現

    5. Coprocessor

    ➔ raft 合意アルゴリズム

    ➔ raft group

    ➔ multi-raft

    ➔ raft の複製

    ➔ leader の選挙

    ➔ …


    View full-size slide

  8. TiKVの5つの役割(3)

    1. データの永続化の実現

    2. 分散型データベースのデータ整合性の保証

    3. MVCC(Multi-Version Concurrency Control)

    4. 分散トランザクションの実現

    5. Coprocessor

    ➔ KV =>(key_version, value)

    例:t_12_p_1_,”Tom”
    )

    ➔ GC による古いバージョンデータのクリ
    ア

    ➔ …


    View full-size slide

  9. TiKVの5つの役割(4)

    1. データの永続化の実現

    2. 分散型データベースのデータ整合性の保証

    3. MVCC(Multi-Version Concurrency Control)

    4. 分散トランザクションの実現

    5. Coprocessor

    ➔ Google Percolator

    ➔ 2PC(2 Phase Commit)


    View full-size slide

  10. TiKVの5つの役割(5)

    1. データの永続化の実現

    2. 分散型データベースのデータ整合性の保証

    3. MVCC(Multi-Version Concurrency Control)の制御

    4. 分散トランザクションの実現

    5. Coprocessor

    1.TiDB の一部処理をTiKVに
    プッシュダウンする


    View full-size slide

  11. TiKVの5つの役割(5)

    1. データの永続化の実現

    2. 分散型データベースのデータ整合性の保証

    3. MVCC(Multi-Version Concurrency Control)の制御

    4. 分散トランザクションの実現

    5. Coprocessor

    2.結果集合のみTiDBに戻す


    View full-size slide

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


    View full-size slide

  13. TiDB はなぜ RocksDB を選択したか

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


    特徴:

    ○ LSM ツリー(Log-Structured Merge-tree)の構造

    ○ 高性能な Key-Value データベース

    ○ データの永続化を実現していると同時に、性能と安全性を保つ

    ○ Range Scan の実現

    ○ TB レベルのデータをローカル Flash、または RAM に格納するアプリケーションに適している

    ○ サイズの小さい Key-value を Flash、もしくはメモリに入れることによる性能の向上

    ○ CPU の数に伴って、性能が線形に増加

    View full-size slide

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


    View full-size slide

  15. RocksDB の書き込む仕組み(2)

    ● MemTable

    (1,Tom)

    (2,Jack)

    (2,Jack)

    ①

    ②

    Write-Ahead Logging
    
 Sorted String Table

    (1,Tom)

    (2,Jack)

    Write_buffer_size


    View full-size slide

  16. RocksDB の書き込む仕組み(3)

    ● Write_buffer_size

    ● Immutable MemTable

    ③

    Write-Ahead Logging
    
 Sorted String Table

    (1,Tom)

    (2,Jack)

    MemTable

    (1,Tom)

    (2,Jack)


    View full-size slide

  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)


    View full-size slide

  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


    View full-size slide

  19. RocksDB の書き込む仕組み(まとめ)

    ● 順序書き込み 

    例)削除:<del key=1233> 更新: 

    Background処理

    put key=1, value=”tom”

    del key=1233

    put key=2, value=”lucy”

    …

    …


    View full-size slide

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


    View full-size slide

  21. RocksDB-読み取る仕組み(1)

    ● 2分探索法

    id=1

    Value???

    min->

    max->

    New

    Old


    View full-size slide

  22. RocksDB-読み取る仕組み(2)

    ● Bloom filter

    Bloom Filter によるこのセットに 

    データがあるかとの判断 

    正確性

    ある
 △

    ない
 ○


    View full-size slide

  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) 


    View full-size slide

  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)} 


    View full-size slide

  25. 最後に〜


    View full-size slide

  26. まとめ

    ● TiDB のアーキテクチャ

    ○ 各コンポーネントの役割


    ● TiKV: 5つの役割


    ● なぜ RocksDB を選択したか


    ● RocksDB による永続化実現の仕組み

    ○ 書き込む

    ○ 読み込む

    ○ CF(Column Family)


    View full-size slide

  27. Q&A/アンケートのお願い


    ● Q&A

    下のQ&Aボタンから質問いただけます。


    ● アンケート

    アンケートの回答をお願いいたします!



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


    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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円分をプレゼント!

    View full-size slide

  31. TiDB Cloud : 無償トライアルのご案内
    TiDB Cloud Free Trialはこちら
    https://tidbcloud.com/signup
    Developer Tierでは
    TiDB Cloudを無償で1年間ご利用頂けます。
    容量制限はありますが、
    本番と同等の機能を提供しているため、
    アプリとの接続試験などが容易に。

    View full-size slide

  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 予定数に達し次第終了する可能性があります。


    View full-size slide

  33. OSS Insight : 活発度が分かる分析サービス
    46億を超えるGitHub上のイベント分析するデータベースとしてTiDB (TiFlash)を活用
    https://ossinsight.io/
    ①各イベント発生の推移
    ①GitHubイベント
    データを1分おきに同期 +TiFlash
    https://ossinsight.io/ ②Pull requests地域の表示
    ②分析クエリを
    TiFlash(カラムストア )
    で高速処理
    ③ジャンル内での比較(人気言語等)
    etc…

    View full-size slide

  34. TiDB/TiDB Cloud : 日本語版ドキュメントのご案内
    TiDB/TiDB Cloud 日本語版ドキュメントはこちら↓
    https://docs.pingcap.com/ja/tidb/stable/overview

    View full-size slide

  35. Thank You!

    https://www.pingcap.com/

    [email protected]
    PingCAP Education


    View full-size slide