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. ⾃⼰紹介 l 名前 • 松尾 拓真 l インサイトテクノロジー(札幌R&Dセンター⛄) • プロダクト開発本部

    • プロダクトマネジメント本部 l やってること • PISO、Insight Database Testing、Insight Data Maskingなど、 ⾃社のプロダクト関連で活動 2 © 2022 Insight Technology, Inc.
  2. 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.
  3. 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. 結構たくさんリストされていて 調査が⼤変、、、、 今実⾏しているアプリへの影響を 簡単に確認するすべはないか?
  4. Insight Database Testingは何をするツールか? l SQLテストを活⽤し • データベース移⾏時の移⾏アセスメント(アプリ改修コストの⾒積もり)に利⽤ • データベースバージョンアップ時のSQL互換性テスト l

    SQLテストとは? • SQLテストではこれまで運⽤し動作してきたSQLが アップグレード後も “きちんと” 動作するかを確認する 8 © 2022 Insight Technology, Inc.
  5. 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 テスト
  6. とくに多い使われ⽅や問い合わせ 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.
  7. TiDBへの移⾏における利⽤シーン l 移⾏アセスメント • 現⾏環境で発⾏されているSQLを収集 • 動的SQLやバインド変数を使⽤したSQLの変数値も取得 • SQLテストを実⾏して、実⾏できないSQLと発⽣するエラー情報を収集 è修正⼯数⾒積もりの精緻化

    • 実⾏できてもクエリ実⾏結果が現在と変わるものや性能が著しく劣化してしまうものの洗い出し è早い段階で⾒つけられる問題を発⾒ l SQL変換・修正後の⽐較 • 開発フェーズにおいて現⾏SQLと修正後SQLを実⾏しての現新⽐較 èツールを使うことでの実施作業/デバッグ作業の省⼒化、結果の⾒える化 l 事例などは https://www.insight-tec.com/resource/ を参照ください。 11 © 2022 Insight Technology, Inc.
  8. 実施環境 13 © 2022 Insight Technology, Inc. 現⾏環境 MySQL 5.7

    (RDS) 移⾏元 移⾏先 SQL 収集 SQL テスト 現⾏環境(テスト環境) MySQL 5.7 (RDS) 現⾏環境(テスト環境) TiDB v6.2.0 (TiDB cloud)
  9. 実⾏した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.
  10. まとめ l MySQLからTiDBへの移⾏を想定した際のSQL互換性確認に、 SQLテストツール Insight Database Testing を使⽤する例を紹介しました。 l 今回お⾒せした例はシンプルなクエリのみですが、実際のアプリケーションで

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