原文: From Question to Insight with MySQL Studio

MySQL Studioを導入した際、私たちの目標は、データベース開発と分析における共通の要素――SQLの作成、スキーマの探索、結果の可視化、そしてAsk Studio――を1つのOCIワークスペースにまとめることでした。次のステップは、MySQLの日常業務のフローの中で、このワークスペースをさらに役立つものにすることです。

多くのMySQL開発者、DBA、アプリケーション・チームにとって難しいのは、単にデータベースへ接続したり、単一のクエリを実行したりすることだけではありません。ビジネス上の疑問から正しいSQLへと導き出し、そのSQLが意図した通りに動作するかを確認し、明らかなクエリ上の問題を理解し、その結果を再利用可能な形に変えることこそが課題なのです。

この記事では、OLTPスタイルのairportdbスキーマを使って、そのプロセスを追っていきます。航空会社の予約収益に関する質問から始め、SQLの作成とレビューの際にSQL Intelligenceを使い、実行時の警告を確認し、結果を可視化します。さらにAsk Studioを使って関連する質問を編集可能なSQLとチャートに変換します。

MySQL Studio workspace

トランザクションに関する質問から始める

あるアプリケーション・チームが、特定の日付のフライトについて、航空会社別の予約収益を把握したいとします。基盤となるスキーマは運用系のもので、予約、フライト、航空会社、乗客、航空機、空港、その他関連する詳細情報が含まれています。

最初の有用な質問は次のようなものです:

2015年9月1日のフライトで、予約収益が最も高かった航空会社はどこか?

質問自体は単純ですが、SQLは正確である必要があります。bookingflightairlineを結合し、フライトの出発日でフィルタし、予約数と収益を集計し、収益が高い航空会社が分かりやすいように結果を並べ替える必要があります。

MySQL Studioでは、このクエリを作成する間もSQLワークスペースにとどまることができます。SQL Intelligenceは入力中にSQL関数やスキーマを認識したオブジェクトも含む補完を支援するため、エディタはステートメントの構造とスキーマ詳細の両方を支援できます。

たとえば、集計クエリを作成しているときに、エディタは部分的に入力したCOUからCOUNTを補完し、関数シグネチャと説明をインラインで表示できます。

SELECT
    a.airlinename,
    COU
FROM airportdb.booking b
JOIN airportdb.flight f
    ON f.flight_id = b.flight_id
JOIN airportdb.airline a
    ON a.airline_id = f.airline_id
WHERE f.departure >= '2015-09-01'
    AND f.departure < '2015-09-02'
GROUP BY a.airlinename;
COUNT completion in MySQL Studio

これは小さな機能ですが、実際のSQL構築作業においては重要です。補完機能はユーザーの作業の流れを保ち、インライン・ヘルプにより、クエリ作成中に一般的な関数の詳細を確認するためだけに別のドキュメントに切り替える必要を減らします。

クエリ実行前にSQLの問題を検出する

次のステップはレビューです。SQLエラーのよくある原因の1つは、スキーマ名に実際に存在する名前ではなく、存在すると期待している名前を使ってしまうことです。この例では、ユーザーがairline_nameと書くかもしれませんが、airportdb.airlineテーブルで使われている列名はairlinenameです。

SELECT
    a.airline_name,
    COUNT(*) AS bookings,
    ROUND(SUM(b.price), 2) AS revenue
FROM airportdb.booking b
JOIN airportdb.flight f
    ON f.flight_id = b.flight_id
JOIN airportdb.airline a
    ON a.airline_id = f.airline_id
WHERE f.departure >= '2015-09-01'
    AND f.departure < '2015-09-02'
GROUP BY a.airline_name
ORDER BY revenue DESC
LIMIT 10;
SQL diagnostic in MySQL Studio

SQL Intelligence を使用すると、クエリを実行してデータベースエラーを確認する手間をかける前に、エディタ上でこの種の問題を指摘することができます。SQL の制御権はユーザーにありますが、Studio によって、修正を行う場所に近い場所で問題を確認できるようになります。

列名を修正すると、レビュー済みのクエリは実行できる状態になります:

SELECT
    a.airlinename,
    COUNT(*) AS bookings,
    ROUND(SUM(b.price), 2) AS revenue,
    ROUND(AVG(b.price), 2) AS avg_ticket_price
FROM airportdb.flight f
JOIN airportdb.booking b
    ON b.flight_id = f.flight_id
JOIN airportdb.airline a
    ON a.airline_id = f.airline_id
WHERE f.departure >= '2015-09-01'
    AND f.departure < '2015-09-02'
GROUP BY a.airlinename
ORDER BY revenue DESC
LIMIT 10;

文脈に沿ったクエリのフィードバックを理解する

正しいSQLが必ずしも効率的なSQLであるとは限りません。トランザクション・テーブルを扱う場合、早々に別のチューニング・ワークフローへ切り替えるのではなく、クエリの近くで実行フィードバックを確認できると便利です。

たとえば、実行計画の警告により、クエリパスにフルテーブルスキャンが含まれることを明らかにすることができます。これは、必ずしもそのクエリが間違っているという意味ではありません。開発者やDBAが、フィルタ、結合条件、利用可能なインデックス、想定されるデータ量を確認するよう促すシグナルとなります。

Explain full table scan warning in MySQL Studio

重要なのは、Studioがデータベース設計の判断にとって変わるわけではないということです。まだ記憶に新しいうちにタイムリーなフィードバックを提供することで、そのステートメントがアドホック分析に適しているのか、より限定的な条件が必要なのか、または繰り返し使うワークフローに組み込む前に最適化すべきなのかを判断できます。

クエリを実行し、結果を可視化する

SQLのレビューが完了したら、元の質問に明確に答える結果が出力されるはずです。この例では、2015年9月1日時点のフライトについて、予約収益上位の航空会社、予約数、平均チケット価格が返却されます。

結果グリッドは正確な値を確認するのに役立ちますが、チャートを利用するとパターンを一目で比較しやすくします。特に、アプリケーションの所有者、運用チーム、別のDBAとの議論に使う場合に有効です。

Revenue results in MySQL Studio

ここでワークスペース・モデルが役立ちます。ユーザーは、疑問から編集可能なクエリ、結果、そして視覚的な要約へ進むために、SQLの文脈から離れる必要はありません。SQLは引き続き再確認や再利用が可能です。

レビュー可能な出発点としてAsk Studioを活用する

SQL Intelligenceは、すでにSQLを書いているときに役立ちます。一方でAsk Studioは、疑問から始めたいときに役立ちます。

たとえば、ユーザーは次のように質問できます:

airportdbスキーマを使用して、2015年9月1日のフライトにおいて、予約収益が最も高い航空会社を表示してください。
予約件数と平均チケット価格も併せて表示してください。

Ask Studioは、ユーザーが適用する前にレビューできるSQLを提案します。この確認ステップは重要です。AIが生成したSQLは出発点として扱うべきです。データベースに対して実行する前に、テーブル、結合、フィルタ、集計を確認してください。

Ask Studio generated SQL for review

このフローにおいて、Ask Studioは独立した目的地ではありません。SQL Explorerと連携して動作するため、生成されたクエリは通常の編集可能なSQLとなります。ユーザーは編集内容を承認して、調整・実行し、同じワークスペース内で結果の精緻化を継続することができます。

深掘り質問からチャートへ

最初の結果が得られると、次の疑問はより具体的になることがよくあります。収益ランキングから、次のような質問につながるかもしれません:

この日付について、航空会社ごとの予約収益はどのように異なるか。

または次のような質問になるかもしれません:

上位航空会社を比較できるように、この結果を棒グラフで表示してほしい。

Ask Studioを使用すれば、ユーザーがSQLや出力を制御したまま、そのフォローアップの疑問をグラフ形式の結果に変換することができます。ユーザーは提案されたSQLや編集内容をレビュー・実行し、グラフが意図した質問と一致しているか確認します。

Ask Studio bar chart result

実用上の価値は継続性にあります。ビジネス上の疑問から始め、SQL IntelligenceでSQLを作成・修正し、実行フィードバックで明らかな問題を確認し、Ask Studioを使用して分析を続けることができます。これにより、複数の連携していないツール間で作業を行う必要がなくなります。

分析を再現可能にする

アドホックな回答は一度しか役に立ちませんが、レビュー済みのクエリは何度でも有効に再利用できます。

MySQL Studioを使えば、同じワークスペースにSQL、結果、および関連する分析をすべて保存できます。開発者はクエリをプロジェクトの一部として保存し、後で改良を加えることができ、同じ疑問が生じた際に以前に検証済みのステートメントに戻ることができます。

MySQL OLTPチームにとって、この再現性は重要です。「昨日何が起きたのか?」という問いから始まったクエリは、「これを毎週確認できるか?」や「このダッシュボードの背後にあるロジックを共有できるか?」という形に発展することがよくあります。レビュー済みのSQLを分析結果とあわせて保存しておくことで、ツール間の変換作業が軽減され、ワークフローの監査も容易になります。

まとめ

MySQL Studioは、単にステートメントを実行する場所ではなく、MySQLに関連する作業を行うための、より強力な環境になりつつあります。OLTPアプリケーションチームにとって、改善されたワークフローはシンプルです:

  1. 運用上の疑問から始める。
  2. StudioのワークスペースでSQLを書く、または生成する。
  3. SQL Intelligenceを使ってステートメントを補完、診断、および改善する。
  4. AIが提案した編集内容を適用前にレビューする。
  5. クエリを実行し、フィードバックを確認し、結果を可視化する。
  6. 作業を再現できるように、SQLと分析結果を一緒に保持する。

これが、疑問から洞察に至る道筋です。コンテキスト切り替えを減らし、レビューしやすいSQLが得られ、MySQLチームが実際にデータを調査する方法に合わせて設計されたワークスペースが実現します。

ご自身のMySQL OLTPスキーマを使用して、MySQL Studioでこのワークフローをお試しください。チームがすでに抱えている疑問から始め、生成または編集されたSQLをレビューし、同じワークスペース内で結果を再現可能な分析に変換します。

OCIテナンシでMySQL Studioにアクセスする: https://cloud.oracle.com/

利用に関する注意事項: この記事で説明した新しいMySQL Studio機能をご利用いただくには、新しいDBシステムを作成してください。既存のDBシステムが本記事の公開後にメンテナンスされていない場合は、そのDBシステムをアップグレードしてください。

詳細は公式ドキュメントをご参照ください: