アプリケーション開発者は、特にデータドリブンなアプリケーションとAIソリューションを構築する際に、セキュリティやパフォーマンスを犠牲にすることなく、俊敏性を追求しています。そのため、MySQL HeatWaveデータベースから直接RESTful APIエンドポイントを瞬時に作成できる、フルマネージドな統合ソリューションであるMySQL HeatWave REST Service (MRS)を導入することに興奮しています。バックエンドのコーディング、ミドルウェア、またはサードパーティのフレームワークは、HTTPSを介してデータへの合理的で安全なアクセスを提供する必要はありません。

MRSを使用すると、次のことができます: 

  • 複雑さを排除: シンプルなHTTPリクエストでアプリケーションをデータに接続します。追加のバックエンドのレイヤーは必要ありません。
  • 開発の加速: MySQLスキーマおよび表にマップされたRESTエンドポイントを自動生成することで、プログレッシブWebアプリケーション、AIを活用したソリューションおよびダッシュボードをより迅速に構築します。
  • 組込みのセキュリティとスケーラビリティの活用: ロールベースのアクセス、柔軟な認証および高パフォーマンスのHTTPサーバーが、すべてデフォルトで含まれており、簡単で堅牢な操作が可能です。

フロントエンド開発者、データ・アナリスト、フルスタック・エンジニアのいずれであっても、MySQL HeatWave RESTサービスを使用すると、オラクルがRESTインフラストラクチャを処理しながら、革新的なアプリケーションの構築に集中できます。

このブログでは、MySQL HeatWaveのRESTサービスの設定について説明します。このブログでは、いくつかの簡単なステップで、RESTを介してMySQLデータを安全に公開して利用できます。

ステップバイステップ: MySQL HeatWaveのMRSをデプロイおよび有効化する方法 

1. HeatWaveクラスターを有効にした MySQLの DB Systemを作成する

  •  Oracle Cloudコンソールにログインし、「MySQL HeatWave」→「DB Systems」に移動し、「Create DB System」をクリックします。.
Create DB System
図 1: DB Systemの作成
  • DBシステム情報、管理資格証明を指定し、DBシステムを作成するためのネットワーキングを構成します。DBシステムの作成方法の詳細は、次のビデオを参照してください。
  • 拡張オプションの「構成」タブから最新のREST機能については、MySQLバージョン9.3.1以降を選択します。
Configuration tab
図 2: 設定 (Configuration) タブ
  • 拡張オプションの「接続」でMySQL RESTサービス(MRS)を探して有効にします。
    • ポート 443 (HTTPS)をRESTのポートとして割り当てる

Show advanced options

Connections Tab
図 3: 接続 (Connections)タブ

 Tip: RESTのポートをインターネットに直接公開しないでください。踏み台サーバーやOCIのBastionを介したプロキシ・アクセスを強くお薦めします。

2. データベース・スキーマとテーブルを作成する

DB Systemがアクティブになったら: 

  1.  MySQL Shell, コマンドラインまたはMySQL Shell for VS Codeを使用して接続します。このブログでは、VS Codeの拡張機能であるMySQL Shell for VS Codeを使用してデータベースに接続しています。MySQL Shell for VS Code を使用してMySQL HeatWave DBシステムを接続する方法の詳細は、次のブログを参照してください。
  2. スキーマおよび表を作成します。たとえば:
CREATE DATABASE hrdb; 

USE hrdb;

CREATE TABLE employees ( 
employee_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR (100),
email VARCHAR (100) UNIQUE,
phone VARCHAR (20),
hire_date DATE,
job_title VARCHAR (50),
salary DECIMAL(10,2),
department VARCHAR (50));

INSERT INTO employees (name, email, phone, hire_date, job_title, salary, department) VALUES
('Alice Johnson', 'alice.johnson@gmail.com', '555-1234', '2020-01-15', 'Software Engineer', 85000.00, 'Engineering'),
('Bob Smith', 'bob.smith@gmail.com', '555-5678', '2019-07-22', 'Senior Software Engineer', 99000.00, 'Engineering'),
('Carol Davis', 'carol.davis@gmail.com', '555-8765', '2021-03-10', 'Project Manager', 75000.00, 'Operations'),
('David Lee', 'david.lee@gmail.com', '555-3456', '2018-11-01', 'HR', 69000.00, 'Human Resources'),
('Eve Martinez', 'eve.martinez@gmail.com', '555-4900', '2023-01-24', 'UX Designer', 78000.00, 'Design');
Creating Database Schema and Tables
図 4: データベース・スキーマとテーブルの作成

 

3. MRSユーザーの作成と権限のアサイン

MRSアクセス専用のサービス・アカウントが適しています。これにより、他のデータベース操作からREST APIのやりとりを分離し、アクセスの範囲を制限することでセキュリティを強化できます。管理者として、MySQL Shell for VS CodeでこれらのSQL文を実行します: 

CREATE USER 'mrs_user' IDENTIFIED BY 'Password!'; 

GRANT USAGE ON *.* TO 'mrs_user'@'%';

GRANT ALL PRIVILEGES ON hrdb.* TO 'mrs_user'@'%';

GRANT ALL PRIVILEGES ON hrdb.employees TO 'mrs_user'@'%' WITH GRANT OPTION; 

GRANT 
'mysql_rest_service_admin'@'%',
'mysql_rest_service_data_provider'@'%',
'mysql_rest_service_dev'@'%',
'mysql_rest_service_schema_admin'@'%',
'mysql_task_user'@'%'
TO 'mrs_user'@'%';

FLUSH PRIVILEGES; 

-- シームレスなRESTのアクセスのため、全ての権限を付与

SET ROLE ALL;
ALTER USER 'mrs_user'@'%' DEFAULT ROLE ALL;

もちろんパスワードは変更してください 

Grant Privileges
図 5: 権限の付与

 

4. セキュアなアクセスのためのOCIのBastion経由でのSSHトンネルの用意

セキュリティを確保するために、RESTエンドポイントを公開しないでください。アクセスを保護する方法を次に示します: 

  • Oracle Cloudコンソールで、「要塞 (Bastion)」に移動します。VCNの要塞を作成します。作成後、セッションの作成に進みます。
  • MySQL DBシステムのプライベートIPおよびポート443を使用してセッションを作成します。要塞ポート転送セッションにアクセスするための公開キーをアップロードするオプションを選択します。

Identity and Security

Oracle Bastion
図 7: OCIの Bastion
  • 以下のSSHコマンドを使用して、SSHトンネルを設定します。例) 

           ssh -i ~/.ssh/my-key -N -L 8446:<db-private-ip>:443 ocid1.bastionsession…@host.bastion.<region>.oci.oraclecloud.com 

  • このコマンドをターミナルで実行し、トンネルを有効にすると、開発ツールなどから https://localhost:8446 で MRSのエンドポイントに接続できます。

 

5. MRSの設定とMRSサービスの作成

  •  データベースに`mrs_user`ユーザーで接続します。 (以下はMySQL Shell for VS Codeでの作業)
  • 接続後、画面左側の MySQL REST Serviceのセクションを選択します
MySQL REST Service section
図8: MySQL REST Serviceセクション
  • MRSが設定済みのため、新しいREST Serviceを追加できます。Database Connectionを開き、 MySQL REST Serviceのエントリーを右クリックしてAdd REST Serviceを選びます。

Add Rest Service

Add Rest Service
図 10: Rest Serviceの追加
  • DATABASE CONNECTIONSのビューのスキーマを右クリックして、ポップアップメニューからAdd Schema to RESTを選択してMySQLのデータベース・スキーマを追加します。詳細を確認し、クリックを押すと、スキーマがMRSサービスに追加されます。

Add Schema to REST Service

Add Schema to REST Service
図 12: REST Serviceの追加
  • 続いて、MySQLのテーブルを追加します。 DATABASE CONNECTIONSビューを右クリックし、ポップアップメニューからAdd Database Object to REST Service を選択します。
Add Database Object to REST Service
図 13: Add Database Object to REST Service
  • CRUD操作から必要なものを選択し(READはデフォルトで選択されている)、 オブジェクトに自由にアクセスできるようにRequires Authenticationのフラグのチェックを外します。
Select desired CRUD operations
図 14: CRUD操作の選択
  • RESTサービスが作成され、MySQL Routerが起動されたので、WebブラウザでRESTエンドポイントにアクセスできます。
Access the REST endpoints
図 15: RESTエンドポイントへのアクセス
  • RESTオブジェクトを右クリックし、WebブラウザでREST Object Request Pathを開きます。 https://localhost:8446 が自動的にブラウザに追加され、GETリクエストの結果のJSONが表示されます。
Open REST Object Request Path in Web Browser
図 16: Open REST Object Request Path in Web Browserを選択した結果
  • URLの末尾に主キーの値 (例えば /1) を追加すると、結果を1件に絞り込むことができます。
Adding a Primary Key to request path
図 17: URLの末尾に主キーの値を追加した結果
  • オフセットおよび件数を問合せパラメータとして追加すると、完全なデータ・セットをページ化できます。デフォルトのページ・サイズは、RESTスキーマおよびRESTオブジェクト設定で設定できます。

MRSでは、結果セットをフィルタ処理するためのJSONベースの問合せ言語がサポートされています。詳細については、ドキュメントを参照してください。

 

6. OpenAPI Web UIとCRUD操作のテスト

  • データベースの接続から、右クリックして Deploy OpenAPI Web UI を選択します。ブラウザから利用できるOpenAPIベースのUIを通じて作成したRESTエンドポイントにアクセス可能となります。
Deploy OpenAPI Web UI
図 18: Deploy OpenAPI Web UI 
  • ダイアログ・ウィンドウが開いたら、RESTサービス作成時に選択した項目が表示されているので全てそのままにし、OKを押して次に進みます。
click OK
図 19: OKをクリック
  • Web UIの準備ができたら、ブラウザから上記のhrserviceのためのRESTエンドポイントを利用できる OpenAPI Web UI にアクセスしてテストします。 https://localhost:8446/myService/openApiUi/#/
OpenAPI-based Web UI
図 20: OpenAPI-based Web UIを開く
  • Web UIがロードされたら、利用できるエンドポイントがHTTPメソッドごとに表示されているのを確認できます。それぞれを開くと試すためのコマンドが表示表示されます。
    • GET /employee –  従業員の列挙
    • POST /employee –  従業員データの作成
    • PUT /employee/{employeeId} – 従業員データ更新
    • DELETE /employee/{employeeId} – 従業員データの削除
Available endpoints grouped by HTTP methods
図 21: 利用できるエンドポイントをHTTPメソッドごと表示
  • GETメソッドで全ての従業員を取得。GET /HRService/HRDB/employee のエンドポイントにスクロールし、メニューを開き、 Try it out をクリック
Get method
図 22: GETメソッド
  • Executeをクリックすると、レスポンスとしてHRサービスから得た現在の従業員の一覧が表示されます

Click on Execute

Click on Execute
図 24:  Executeをクリック

 同様に、他のエンドポイントを利用してアクセスを試すことができます。

MRSでは、RESTエンドポイント以上のものを利用できます。: 

  • ロールベースのアクセスおよびエンドポイント制御により、誰が何にアクセスできるか(および変更できるか)を制御
  • MySQLユーザー・アカウントまたは外部アイデンティティ・プロバイダを含む柔軟な認証
  • CRUD、結合、さらにはデータベース内のML/LLM操作のための自動API生成により、AIを活用したアプリケーションを簡単に構築
  • MySQL ShellやVisual Studio Codeなどの使い慣れたツールとの統合

まとめ:  

MySQL HeatWave RESTサービスは、アプリケーションがMySQLにネイティブに、シンプルかつセキュアに接続する方法の次の進化を表しています。わずか数ステップで、セキュアで高パフォーマンスのAPIをHeatWave加速データに公開し、スタックの複雑さを軽減して、イノベーションを加速できます。 

 

追加情報: 

 

Ready to get started?   

Provision your MySQL HeatWave instance, enable the REST Service, and start building with no middleware required!