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

無限にスケールできるRDB・TiDBの効果~移行までを考察する - Insight Technologyセッションその2

PingCAP-Japan
September 08, 2022

無限にスケールできるRDB・TiDBの効果~移行までを考察する - Insight Technologyセッションその2

RDBのスケールの課題を直接的に解決するNewSQLデータベースの普及が進んでいます。
現実的に移行していくにはどのようなツールを使っていけるのか、NewSQLのメリットを振り返りながら考察していきます。

TiDBへの移行の勘所とそれを支えるツール
TiDBへの乗り換え時に必要となる、データ移行、アプリケーション改修・テスト。特にMySQL以外から乗り換える場合は、いろいろと考慮が必要となります。

本スライドでは、インサイトテクノロジー社開発製品であるInsight Database Testing、インサイトテクノロジー社取扱い製品であるQlik Replicateを使用して、MySQLからの乗り換えはもちろん、MySQL以外のデータベースからの乗り換え時に「いかに簡単に」対応できるのか、事例を含めて紹介します。

PingCAP-Japan

September 08, 2022
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. © 2022 Insight Technology, Inc.
    TiDBへの移⾏の勘所と
    それを⽀えるツール
    - アプリ移⾏のためのSQL互換性確認ツール編 -
    インサイトテクノロジー

    View Slide

  2. ⾃⼰紹介
    l 名前
    • 松尾 拓真
    l インサイトテクノロジー(札幌R&Dセンター⛄)
    • プロダクト開発本部
    • プロダクトマネジメント本部
    l やってること
    • PISO、Insight Database Testing、Insight Data Maskingなど、
    ⾃社のプロダクト関連で活動
    2
    © 2022 Insight Technology, Inc.

    View Slide

  3. TiDBへの移⾏を考える上で気になることは?
    やはり既存のMySQLアプリが
    どのくらいそのまま動くのか?
    ではないでしょうか?
    3
    © 2022 Insight Technology, Inc.

    View Slide

  4. TiDBの互換性に関するページを⾒てみると、、
    l https://docs.pingcap.com/ja/tidb/stable/mysql-compatibility
    l “TiDBは、 MySQL 5.7プロトコルおよびMySQL 5.7の⼀般的な機能と構⽂と⾼い互換性が
    あります。 MySQL 5.7のエコシステムツール(PHPMyAdmin、Navicat、MySQL
    Workbench、mysqldump、およびMydumper / myloader)とMySQLクライアントをTiDB
    に使⽤できます。”
    l “ただし、MySQLの⼀部の機能はサポートされていません。これは、問題を解決するため
    のより良い⽅法があるため(JSONに置き換えられたXML関数など)、または現在の需要
    と必要な労⼒の不⾜(ストアドプロシージャや関数など)が原因である可能性がありま
    す。⼀部の機能は、分散システムとして実装するのが難しい場合もあります。”
    4
    © 2022 Insight Technology, Inc.

    View Slide

  5. TiDB:サポートされていない機能
    l ストアドプロシージャと関数
    l トリガー
    l イベント
    l ユーザー定義関数
    l FOREIGN KEY制約
    l FULLTEXT構⽂とインデックス
    l SPATIAL ( GISとも呼ばれGEOMETRY )関数、データ型、およびインデックス#6347
    l ascii 、 binary latin1 utf8のutf8mb4 gbk 。
    l SYSスキーマ
    l オプティマイザートレース
    l XML関数
    l セーブポイント
    l CREATE TABLE tblName AS SELECT stmt構⽂
    l :(などなど)
    5
    © 2022 Insight Technology, Inc.
    結構たくさんリストされていて
    調査が⼤変、、、、
    今実⾏しているアプリへの影響を
    簡単に確認するすべはないか?

    View Slide

  6. ソースコードの全調査をせず知ることは可能か?
    Insight Database Testing
    でできるよ♪
    6
    © 2022 Insight Technology, Inc.

    View Slide

  7. Insight Database Testingとは
    7
    © 2022 Insight Technology, Inc.

    View Slide

  8. Insight Database Testingは何をするツールか?
    l SQLテストを活⽤し
    • データベース移⾏時の移⾏アセスメント(アプリ改修コストの⾒積もり)に利⽤
    • データベースバージョンアップ時のSQL互換性テスト
    l SQLテストとは?
    • SQLテストではこれまで運⽤し動作してきたSQLが
    アップグレード後も “きちんと” 動作するかを確認する
    8
    © 2022 Insight Technology, Inc.

    View Slide

  9. Insight Database TestingによるSQLテスト
    l 現環境でアプリケーションが発⾏するSQLを収集
    l 収集したSQLをテスト・評価
    • 実⾏可否、実⾏結果⽐較(Select、更新DML)、実⾏速度⽐較
    l マルチデータベース対応(Oracle Database / SQL Server / PostgreSQL / MySQL)
    9
    © 2022 Insight Technology, Inc.
    テスト環境
    Test Report
    現⾏環境
    移⾏元
    移⾏先
    SQL
    収集
    SQL
    テスト

    View Slide

  10. とくに多い使われ⽅や問い合わせ
    l 「Oracle à PostgreSQL」(移⾏)
    • 異なるデータベースへの移⾏
    • 移⾏先のDBとしては、EDB Postgresや、Amazon Auroraなど
    l 「Oracle à Oracle」(バージョンアップ)
    • バージョンアップ時のSQL互換性確認
    l 「PostgreSQL à PostgreSQL」「MySQL à MySQL」(バージョンアップ)
    • バージョンアップ時のSQL互換性確認 (特にRDSやAurora)
    l「MySQLなど à TiDB」(互換DBへの移⾏)
    10
    © 2022 Insight Technology, Inc.

    View Slide

  11. TiDBへの移⾏における利⽤シーン
    l 移⾏アセスメント
    • 現⾏環境で発⾏されているSQLを収集
    • 動的SQLやバインド変数を使⽤したSQLの変数値も取得
    • SQLテストを実⾏して、実⾏できないSQLと発⽣するエラー情報を収集
    è修正⼯数⾒積もりの精緻化
    • 実⾏できてもクエリ実⾏結果が現在と変わるものや性能が著しく劣化してしまうものの洗い出し
    è早い段階で⾒つけられる問題を発⾒
    l SQL変換・修正後の⽐較
    • 開発フェーズにおいて現⾏SQLと修正後SQLを実⾏しての現新⽐較
    èツールを使うことでの実施作業/デバッグ作業の省⼒化、結果の⾒える化
    l 事例などは https://www.insight-tec.com/resource/ を参照ください。
    11
    © 2022 Insight Technology, Inc.

    View Slide

  12. 実施例
    〜⾮常にシンプルな例で〜
    12
    © 2022 Insight Technology, Inc.

    View Slide

  13. 実施環境
    13
    © 2022 Insight Technology, Inc.
    現⾏環境
    MySQL 5.7 (RDS)
    移⾏元
    移⾏先
    SQL
    収集
    SQL
    テスト
    現⾏環境(テスト環境)
    MySQL 5.7 (RDS)
    現⾏環境(テスト環境)
    TiDB v6.2.0 (TiDB cloud)

    View Slide

  14. TiDB環境はTiDB cloudを使⽤しました(超簡単)
    14
    © 2022 Insight Technology, Inc.

    View Slide

  15. 実⾏したSQL(今回はこれだけ)
    l select * from emp;
    l select d.deptno, d.dname, e.empno, coalesce(e.ename,'(no employee)') ename
    from dept d left outer join emp e
    on d.deptno=e.deptno;
    l select max(ename) from emp group by ename;
    l create table test as select * from emp;
    l select * from test;
    15
    © 2022 Insight Technology, Inc.

    View Slide

  16. Insight Database Testingで取り込んだSQL
    16
    © 2022 Insight Technology, Inc.
    ※いくつかmysqlクライアントから発⾏されたと
    思われるSQLも取得されている

    View Slide

  17. TiDB (TiDB cloudにはMySQLとして接続)
    17
    © 2022 Insight Technology, Inc.

    View Slide

  18. アセスメント結果
    18
    © 2022 Insight Technology, Inc.

    View Slide

  19. アセスメント結果:失敗したSQL
    19
    © 2022 Insight Technology, Inc.

    View Slide

  20. アセスメント結果:失敗したSQL
    20
    © 2022 Insight Technology, Inc.
    ※未実装の構⽂

    View Slide

  21. アセスメント結果:失敗したSQL
    21
    © 2022 Insight Technology, Inc.

    View Slide

  22. アセスメント結果:結果が異なるSQL
    22
    © 2022 Insight Technology, Inc.

    View Slide

  23. アセスメント結果:結果が異なるSQL
    23
    © 2022 Insight Technology, Inc.

    View Slide

  24. アセスメント結果:結果が異なるSQL
    24
    © 2022 Insight Technology, Inc.
    環境問題なので
    無視してもよさそう

    View Slide

  25. アセスメント結果:結果が異なるSQL
    25
    © 2022 Insight Technology, Inc.

    View Slide

  26. アセスメント結果:結果が異なるSQL
    26
    © 2022 Insight Technology, Inc.
    順序違いも検出できる
    ※ORDER BYのないクエリの順序違いを無視した⽐較も可能

    View Slide

  27. アセスメント結果:結果が異なるSQL
    27
    © 2022 Insight Technology, Inc.

    View Slide

  28. アセスメント結果:結果が異なるSQL
    28
    © 2022 Insight Technology, Inc.
    これも順序違いだが、
    MySQL 5.7ではGROUP BY句で暗黙ソートがあった

    View Slide

  29. アセスメント結果:結果が異なるSQL
    29
    © 2022 Insight Technology, Inc.
    基本は5.7準拠であるが、
    ⼀部、8.0の仕様が取り込まれているものがある

    View Slide

  30. アセスメント結果:性能が劣化したSQL
    30
    © 2022 Insight Technology, Inc.
    今回の環境は特に性能を意識して準備はしていないので、
    どういった感じで確認できるかのサンプルとなります。

    View Slide

  31. アセスメント結果:性能が劣化したSQL
    31
    © 2022 Insight Technology, Inc.
    実⾏計画の確認ができます
    実⾏計画の確認もMySQLと同様にできることがわかりました

    View Slide

  32. まとめ
    l MySQLからTiDBへの移⾏を想定した際のSQL互換性確認に、
    SQLテストツール Insight Database Testing を使⽤する例を紹介しました。
    l 今回お⾒せした例はシンプルなクエリのみですが、実際のアプリケーションで
    発⾏されているSQLは少なくても数千、多ければ数万、それ以上になると思われ、
    それらの確認を⼿動で⼀つずつ確認していくのは⾮現実的です。⼀⽅、ソースコードと
    DBの互換性の仕様を確認して⾮互換を洗い出すのも
    ⼤変⾻の折れる作業ではあります。
    l 性能確認の機能として、クエリ単位でのSQL実⾏時間の確認を⾏うことができます。
    l まずは現在使⽤されているクエリが問題ないか、また、確認漏れがないかをチェック
    するなどを⽬的として、Insight Database Testing などのツールをご活⽤ください。
    32
    © 2022 Insight Technology, Inc.

    View Slide

  33. 33
    © 2022 Insight Technology, Inc.

    View Slide

  34. View Slide