MRS Logo

JSON Relational Duality for
MySQL REST Service

MySQL REST SERVICE (MRS)は、JSON Relational Dualityを完全にサポートし、リレーショナル・テーブルと JSON ドキュメント両方の利点を、どちらのモデルのトレードオフもなく組み合わせられるようになりました。

MySQL Shell for VS Codeは、JSON Relational Duality REST ビューの SQL を完全サポートし、直感的で使いやすいJSON Relational Duality Editor GUI により、ネストされた JSON ドキュメントを簡単に設計することができます。

ライブで生成される新しい MRS SDK Client API により、JSON Relational Duality REST ビューのテストやプロトタイピングを、直接 MySQL Shell for VS Code で行うことができます。

MySQL MRS での JSON Relational Duality サポート

MySQL HeatWaveのインスタンス、オンプレミスのMySQL環境、どちらでも利用可能です

SQL 完全サポート

  • SQL で MRS を完全管理
  • CREATE REST DUALITY VIEW 命令の対応
  • REST SQL 構文のフルセット
  • MySQL Shell で利用可能

Duality GUI エディタ

  • とても使いやすい WYSIWYG エディタ
  • データベーススキーマの自動分析
  • 数回のクリックで複雑な JSON 構造を構築
  • SQL と SDK インターフェースのプレビュー

SDK による API 生成

  • 使っている RESTful エンドポイント向けに調整された SDK
  • 人気の高い Prisma に似た API
  • ライブ SDK ランタイムサポート
  • 組み込みの認証サポート

MySQL REST Service

MySQL REST Service (MRS) は、MySQL データへの高速で安全な HTTPS アクセスを可能にします。MySQL Router の機能として実装された MRS は、MySQL に格納されたデータを操作するための RESTful Web サービスを公開する機能を提供します。新しい JSON Relational Duality 機能と新しい MRS SDK Client API により、MySQL REST Service は Progressive Web Apps (PWA) やモバイル・アプリに JSON ドキュメントを提供するための、より優れた選択肢になります。

MRS の詳細については、発表時のブログ記事をこのリンクからご覧ください

JSON Relational Duality

JSON Relational Duality ビューは、JSON ドキュメントとリレーショナル・モデルそれぞれを使う際の利点を組み合わせ、それぞれの制限を回避します。この画期的なイノベーションは、Oracle Database 23c で初めて導入されました。JSON Relational Duality ビューの詳細なコンセプトは、「Introducing Document Relational Duality」の基調講演をご覧ください。

そして今、この新しい技術が MySQL REST Service の一部として MySQL エコシステムに組み込まれます。

Duality ビューは、リレーショナル・スキーマの利点とドキュメント・データベースの使いやすさを組み合わせたものです。Duality ビューは、リレーショナルに、かつ階層的にデータを構成することで、データに概念的な及び運用上の二元性 (Duality) を与えます。1つまたは複数の同じテーブルに格納されたデータに対して、Duality の異なるビューをベースとすることができ、同じ共有データに対して異なる JSON 階層を提供することができます。つまりアプリケーションは、JSON ドキュメントのコレクションとして、またはリレーショナルなテーブルとカラムのセットとして、同じデータにアクセス(すなわち作成、検索、変更など)することができ、両方のアプローチを同時に採用できます。

MySQL REST Service は、Duality ビューを完全にサポートしています。これらは、リレーショナルなユースケース (1) とドキュメント中心のユースケース (2) の双方をカバーできます。

  1. REST エンドポイントが有効な単一のリレーショナルテーブルまたはビューを作成
    • テーブルの行をフラットな JSON ドキュメントの配列として公開
    • 従来のリレーショナル・アプローチも必要に応じて使えるように、アプリケーションに許可
  2. データベーススキーマ内のリレーションを張った複数のテーブルセットに対して、単一の REST エンドポイントを作成
    • リレーションを張ったテーブル群を、JSON ドキュメント配列内にネストされた JSON オブジェクトとして公開
    • ドキュメント指向のアプローチをアプリケーションに許可

次の図は、これら2つのユースケースをビジュアル化したものです。

JSON ドキュメント

MySQL REST Service では、JSON Relational Duality ビューは REST Duality ビューとして公開されます。これらは MRS の CREATE REST DUALITY VIEW DDL ステートメントを使用するか、MySQL Shell for VS Code 拡張の MRS Object ダイアログを使用して対話的に作成できます。

REST Duality ビューが作成されたら、以下のワークフローによって REST でアクセスするのはとても簡単です。

  • REST Duality ビューからドキュメントを GET で取得します。
  • ネストされた JSON オブジェクトへの変更を含めて、ドキュメントに必要な変更を加えます。
  • ドキュメントを REST Duality ビューに PUT で戻します。

次の図は、典型的な JSON ドキュメントの更新サイクルを示しています。

JSON ドキュメントのワークフロー

では、MySQL REST Service を実際に動かしてみましょう。

SQL での MySQL REST Service の完全サポート

MySQL REST Service は、SQL 文によって完全に設定および管理できるようになりました。これにより、アプリケーションの MySQL データベーススキーマ定義と REST Service 設定を単一の SQL スクリプトにまとめられるようになり、デプロイ手順が大幅に簡素化されました。

sakila サンプルデータベース用に REST Serviceと REST スキーマを作成し、オブジェクトとして設定する SQL の例を次に示します。

CONFIGURE REST METADATA;

CREATE REST SERVICE /myService;

CREATE REST SCHEMA /sakila FROM `sakila`;

MRS の SQL 文は MySQL Shell の新しい SQL 拡張インターフェイスを通じて公開され、MRS のスクリプト API や MySQL Shell for VS Code の GUI の代替となります。

SQL を使った REST Duality View の作成

CREATE REST DUALITY VIEW 文の使い方は簡単です。以下の例では、sakila.city データベース・テーブルに REST Duality ビューを作成し、テーブルのすべての列を結果の JSON ドキュメントで公開しています。

USE REST SCHEMA /sakila;
CREATE REST DUALITY VIEW /city
AS `sakila`.`city`;

列のサブセットのみを公開したり、ネストされた参照テーブルを含めるには、GraphQL によるオブジェクト定義を追加できます。

CREATE OR REPLACE REST DUALITY VIEW /city
FROM `sakila`.`city` {
	cityId: city_id @SORTABLE,
	city: city,
	countryId: country_id
};

以下の動画クリップは、MySQL Shell for VS Code の DB Notebook 上の SQL を使って、REST Duality ビューを作る手順を示しています。

MRS SQL support

 

次のステップでは、参照しているテーブルsakila.countryを REST Duality ビューに追加します。これは、GraphQL 構文をフルに使って SQL で行うか、JSON Relational Duality のエディタを使って行えます。まず SQL 文の場合を見てみましょう。

CREATE OR REPLACE REST DUALITY VIEW /city
ON SERVICE /myService SCHEMA /sakila
FROM `sakila`.`city` {
    cityId: city_id @SORTABLE,
    city: city,
    countryId: country_id,
    country: sakila.country {
        countryId: country_id @SORTABLE,
        country: country
    }
};

JSON Relational Duality の GUI エディタ

REST Duality ビューは、上記のように SQL で記述するか、または MySQL Shell for VS Code を使用して JSON Relational Duality エディタで対話的に設計できます。JSON Relational Duality エディタは、WYSIWYG (What-You-See-Is-What-You-Get) インターフェースを提供し、複雑な REST Duality ビューの作成を容易にします。

生成された SQL 文を確認できる SQL プレビューモードを備え、以前に作成した REST Duality ビューの編集や拡張に利用できます。

JSON Relational Duality エディタは、VS Code のサイドバーから起動することも、DB Notebook の TypeScript プロンプトから直接起動することもできます。

次の動画クリップでは、JSON Relational Duality エディタを使用して /city REST Duality ビューを設計する方法を示しています。

JSON/Relational Duality Editor

統合ドキュメント

MySQL Shell for VS Code 拡張は、JSON Relational Duality ビュー、新しい MRS SQL 拡張構文、インタラクティブな MRS SDK クライアント APIについて学ぶのに役立つ、包括的な統合ドキュメントを提供します。

DATABASE CONNECTIONS ビューの MySQL REST Service エントリの右横にあるブックアイコンをクリックするだけで、統合ドキュメントを表示できます。

Integrated Documentation

まとめ

MySQL REST Service は、MySQL 開発者に対して、RESTful Web サービスおよび JSON ドキュメントを操作できる新しい強力な機能のセットを提供します。このサービスは、MySQL HeatWave や MySQL InnoDB Cluster/ClusterSet など、あらゆる MySQL ソリューションと密接に統合されています。

MySQL REST Serviceは、現在プレビュー版をご利用いただけます。以下のダウンロードボタンを通じて取得してください。

 

注: MySQL REST Service をサポートする MySQL Router の最新バージョンは MySQL Shell for VS Code 拡張に含まれています。

MySQL Router のサーバーデプロイ用パッケージをダウンロードするには、labs.mysql.com にアクセスし、お使いのプラットフォーム用の MySQL Router MRS Preview パッケージを選択してください。新しい MySQL Router MRS Preview パッケージをインストールする前に、MySQL Router パッケージをすべて削除してください。.zip または .tar.gz パッケージを使用して手動でインストールする場合は、システムの PATH 変数に MySQL Router の bin ディレクトリを追加してください。

MySQL Router MRS Preview のソースは labs.mysql.com に、MySQL Shell for VS Code のソースは github.com にあります。