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

【DBaaS】TiDB Cloudの アーキテクチャと新機能 - db tech showcase 2022 Tokyo

PingCAP-Japan
November 23, 2022

【DBaaS】TiDB Cloudの アーキテクチャと新機能 - db tech showcase 2022 Tokyo

TiDBをマネージドサービスとしてご利用いただけるTiDB Cloudは日、週単位で新機能の追加、改善を行っております。
本スライドでは、最近のTiDB、TiDB Cloudのリリースサイクルと追加されてきた新機能についてお話しするとともに、今後リリースされる予定となっている新機能について紹介いたします。
出典:db tech showcase 2022

トピック:
・TiDB概要
・TiDBのリリースサイクルと新機能
・TiDB Cloudのリリースサイクルと新機能
・TiDB Cloudアーキテクチャの変遷

アーカイブ動画:
https://youtu.be/WJhKQEq9EIQ

PingCAP-Japan

November 23, 2022
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. TiDBのリリースサイクル • TiDB 6.1よりLTSとDMRのコンセプトを導入 • LTS : Long Term Support

    ◦ 本番環境用 ◦ 約6ヶ月間隔でリリース ◦ Bug fixを行う(TiDB 6.1.2が2022年10月24日にリリース) • DMR : Development Milestone Release ◦ 新機能のテスト、開発、PoC(Proof of Concept)用 ◦ 約2ヶ月間隔でリリース ◦ Bug fixバージョンはリリースされません(6.2.0の次は6.3.0になります) • https://www.pingcap.com/tidb-release-support-policy/
  2. TiDBの新機能 : リリースノートレベルの改善 • TiDB 6.1 ◦ Raft Engineがデフォルトのログストレージエンジン •

    TiDB 6.2 ◦ BRを利用したPoint-in-Timeリカバリに対応 • TiDB 6.3 ◦ JSON型サポートがGA(General Availability)に
  3. TiDB 6.1新機能 : Raft Engine • Raft Engineとは ◦ TiKVのRaftログの保存をRocksDBから置き換えたもの

    ◦ 書き込みI/Oを25%から40%削減 ◦ 書き込みレイテンシーの安定化 ◦ TiDB 5.4でexperimentalとして導入され、TiDB 6.1でデフォルトに
  4. TiDB 6.2新機能 : BRを利用したPITR • BRを利用したPoint-in-Timeリカバリに対応しました ◦ https://docs.pingcap.com/tidb/v6.2/point-in-time-recovery • 従来はTiDB

    Binlogを利用したPITRが可能ですが、TiDB 5.0の1PCに対応しないな どの制限がありました • `br log start` : ログバックアップ • `br backup full` : フルバックアップ • `br restore point` : 時間指定のリストア
  5. TiDB 6.3新機能 : JSON型サポート • JSON型サポートがGA(General Availability)になりました • https://docs.pingcap.com/tidb/v6.3/data-type-json •

    JSON型に対してexpression indexも利用可能です • 利用可能な関数 : `tidb_allow_function_for_expression_index`
  6. TiDBの新機能 : MySQLとの互換性の改善 • アドバイザリーロック (get_lock(), release_lock()) ◦ Ruby on

    Railsなどのマイグレーション(テーブルの作成)時に使用される • Savepoint ◦ アプリケーションフレームワークのnested transactionシミュレートに利用される • Lock/unlock database user ◦ データベースユーザーを一時的にログインできないように
  7. 内部的な改善: pushdownされる関数の追加 • Pushdownとは : TiKVまたはTiFlashから関数の結果のみをTiDBに送る • TiKVにpushdownされる関数の追加 ◦ `json_contains`

    ◦ `regexp_like`, `regexp_instr`,`regexp_replace` • TiFlashにpushdownされる関数の追加 ◦ `bin` ◦ `space` ◦ `lead`,`lag` ◦ `cast(<column> as time)` ◦ `elt`
  8. 内部的な改善 : 新しいオプティマイザーヒント • /*+ no_decorrelate() */ • /*+ hash_build(t1)

    */ • /*+ hash_probe(t1) */ • /*+ merge() */ ◦ マージヒントは従来からありましたが、テーブルだけでなくビューにも対応しまし た • /*+ semi_join_rewrite() */ • /*+ leading(t1, t2) */ • /*+ straight_join */
  9. 内部的な改善 : 設定ファイルからシステム変数へ • TiDBの設定ファイルはTiDB Cloudでは利用できないため、従来の設定ファイルを システム変数に移行しています ◦ “committer-concurrency” →

    tidb_committer_concurrency ◦ “enable-batch-dml” → tidb_enable_batch_dml ◦ "query-log-max-len"→ tidb_query_log_max_len ◦ mem-quota-query → tidb_mem_quota_query • 今後も設定ファイルでのみ変更可能な項目は残ります ◦ TiDB Cloudでの設定ファイルによる変更は、PingCAPテクニカルサポートにお 問い合わせください。弊社側で設定変更を実施いたします。
  10. ドキュメンテーション改善 : デザインドキュメント • TiDB自体の開発のためのデザインドキュメントも公開されています ◦ Adding Index Acceraration (インデックス作成の高速化)

    ◦ Proposal: Extend tidb_constraint_check_in_place to Support Pessimistic Transactions (悲観ロックでの遅延制約) ◦ Proposal: Session Manager ( セッションマネージャー) • これらのドキュメントは主にTiDB自体の開発目的で作成されております
  11. TiDBの新機能 : これから予定される新機能 • General plan cache / 一般プランキャッシュ(仮) •

    Flashback database / フラッシュバックデータベース • Foreign key / 外部キー制約 • お願い : ◦ 上記の機能は現在実際に開発中の新機能です。ただし、リリースされるかどう か、またその時期については確定した情報はございません ◦ 上記の新機能の追加を前提とした計画はされないようお願いいたします
  12. TiDB Cloud : 代表的な新機能 • Pause or Resume a TiDB

    Cluster • Download TiDB cluster CA • TiDB Cloud Terraform Provider • TiDB Cloud API (beta) • Datadog Integration
  13. TiDB Cloud: Pause or Resume a TiDB Cluster • https://docs.pingcap.com/tidbcloud/pause-or-resume-tidb-cluster

    • TiDB Cloudの「一時停止」と「再開」が可能です • 開発、テスト環境のコスト削減などに役立ちます
  14. TiDB Cloud: Download TiDB cluster CA • https://docs.pingcap.com/tidbcloud/connect-to-tidb-cluster#connect-via-sta ndard-connection •

    TiDB cluster CA (ca.pem)がダウンロード可能です ◦ TLS 1.2 ◦ Dedicated Tierのみの機能です
  15. TiDB Cloud: TiDB Cloud Terraform Provider • https://registry.terraform.io/providers/tidbcloud/tidbcloud • TiDB

    Cloudでのcluster作成、変更(scale out)、 一時停止、バックアップ、リストアな どの操作がTerraformを利用して可能になりました • 利用方法は下記blog(英語版となります)を参照 • https://dev.to/cloud-ecosystem/manage-tidb-cloud-with-terraform-15id
  16. TiDB Cloud: TiDB operator TiDB Operator Learn more about TiDB

    Operators: https://github.com/pingcap/tidb-operator
  17. TiDB Cloud : GitOpsサブシステム TiDB cluster config management via Git

    - デフォルト設定 - カスタマイズ - Pull Requestの マージにより設定変 更 お客様のクラスタ設定を手動で触らずに行います
  18. TiDB Cloud: セキュリティ • テナントごとのVPCは隔離されています • システム全体でmTLS (mutual TLS) ◦

    認証と認可 ◦ 暗号化 • コントロールプレーンユーザーはTiDBの RBAC(ロールベースアクセス制御)で管理さ れています
  19. TiDB Cloud: 内部アーキテクチャの変更 課題 TiDB Cloud はhttps://gardener.cloud/ for k8s-as-a-serviceのために利用してきました •

    クラスター毎のオーバーヘッドが大きい • ネットワークの考え方が、 TiDB Cloudの ユースケースと合わない • カスタマイズが難しい • 操作が難しい なお、上記はTiDB Cloudにとっての考え方であ り、Gardener自体の有用性を否定するものではあ りません。
  20. TiDB Cloud: 内部アーキテクチャの変更 対応 • マネージドサービスの利用 ◦ Google Kubernetes Engine(GKE)

    ◦ Amazon EKS • 小さなビルディングブロックの組み合わせ ◦ 容易なカスタマイズ