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

MySQLのJSON関連機能の活用術

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 MySQLのJSON関連機能の活用術

MySQL Technology Cafe
MySQL Rest Service
MySQL JSON Duality Views

Avatar for InagakiMySQL

InagakiMySQL

January 28, 2026

More Decks by InagakiMySQL

Other Decks in Technology

Transcript

  1. MySQL HeatWave REST Serviceの機能概要 Copyright © 2026, Oracle and/or its

    affiliates 3 HTTP/CRUD MySQL HeatWave REST Service データベースとネイティブにRESTでやりとりすることで、そのすべてを簡 素化します。 • Webアプリケーション • モバイル・アプリケーション • IoTデバイス等 カスタム・ミドルウェアが不要で、標準のHTTPのみを使用し HeatWaveと安全にやり取りが可能です
  2. MySQL HeatWave REST Serviceの機能概要 Copyright © 2026, Oracle and/or its

    affiliates 4 HTTP/CRUD MySQL HeatWave REST Service データベースとネイティブにRESTでやりとりすることで、そのすべてを簡 素化します。 • Webアプリケーション • モバイル・アプリケーション • IoTデバイス等 カスタム・ミドルウェアが不要で、標準のHTTPのみを使用し HeatWaveと安全にやり取りが可能です RESTのフルスタックのサポート • アプリケーション層は、ミドルウェアやアプリケーション・バックエンドが不要となり簡素化 • すべてのレイヤー(MySQLサーバー、ルーターおよびクライアント内)でJavaScript を使用して、強力なプログレッシブWebアプリケーション(PWA)を開発可能 最新のAIアプリケーション開発に対応 • HeatWave 機械学習機能を活用し、AI機能を既存および新規アプリケーション に統合 • 追加のソフトウェアやハードウェアを追加することなく、HeatWaveのデータベース内 LLMに依存するGenAIアプリケーションを開発 • LLMおよびREST処理を含むすべてのデータ処理をMySQLサーバーに移動するこ とで、データ・セキュリティの向上 どこでも利用可能 • MySQL RouterのMySQL REST Service (MRS)プラグインに基づいて、 HeatWave MySQL 9.3.1のマネージド・サービスとしてだけでなく、商用版の MySQL Enterprise EditionおよびMySQLコミュニティ版の通常のMySQL Routerパッケージの一部として使用可能
  3. MySQL HeatWaveでアプリ開発の簡素化へ Copyright © 2026, Oracle and/or its affiliates 6

    Web App JavaScript ツール 認証 AI JSON AIアプリ開発の簡素化 データベース内のAIおよび機械学習(ML)機能への標準化された使い やすいインタフェースを提供することで、AIによるアプリケーションの開発 を合理化 ➢ REST APIを使用して、AIおよびML機能に簡単にアクセス ➢ ビジネス価値を高めるAIを活用したアプリケーションを構築 ➢ AIとML機能を統合するために必要な時間と労力を削減 HeatWave GenAI/MySQL AIを使用した組込みAI ➢ LLMサービス: RESTエンドポイントを介したデータベース内のAIモ デルを使用 ➢ モデルのトレーニングと推論: データを移動せずにMLモデルをデー タベース内でトレーニングおよびクエリ ➢ RAG (Retrieval-Augmented Generation): ベクトル検 索とLLMワークフローが組み込まれた強力なインテリジェント・アプリ ケーション *外部のMLパイプラインを必要とせずに簡単に統合
  4. MySQL HeatWaveでアプリ開発の簡素化へ Copyright © 2026, Oracle and/or its affiliates 7

    Web App JavaScript ツール 認証 AI JSON JavaScriptをどこでも MySQLはJavaScriptもサポートしています。これによりアプリケーション はデータとシームレスに統合する堅牢でスケーラブルなアプリケーション・ バックエンドを作成できます。これにより、ビジネス・ロジックを処理し、 データベースとの複雑な相互作用を実行できるため、フルスタック・アプリ ケーションを構築するための理想的です。 【利点】 ➢ 開発言語とプラットフォームの統合による生産性の向上 ➢ データベースと統合によるパフォーマンスが向上 ➢ メンテナンスの簡素化 ➢ 開発者によるはアプリケーションの構築に専念可能
  5. MySQL HeatWaveでアプリ開発の簡素化へ Copyright © 2026, Oracle and/or its affiliates 8

    Web App JavaScript ツール 認証 AI JSON 入出力の全てをJSONで 自動でエンドポイント生成がサポート: ⚫ データ参照: シンプルなHTTP GETリクエストを使用して、表や ビュー(JOINの結果を含む)をJSONオブジェクトとして取得 ⚫ データ変更: JSONペイロード付きのHTTP POST, PUT, DELETEリクエストで、挿入、更新、削除を実行 バックグラウンドで、MySQL HeatWaveは、RESTコールを最適化さ れたSQL問合せにマッピング。 GETリクエストは仕様に従ってJSONオブジェクトを生成し、オブジェクト をリスト化 【このようなサービスに向けて】 ➢ UI/UXを重視するフロントエンド開発者 ➢ 複雑なビジネス・ロジックに集中したいバックエンド開発者 ➢ 迅速なプロトタイピング・チーム ➢ 社内ツールを構築する非エンジニアまたはデータ・アナリスト
  6. MySQL HeatWaveでアプリ開発の簡素化へ Copyright © 2026, Oracle and/or its affiliates 9

    Web App JavaScript ツール 認証 AI JSON 動的なウェブコンテンツ 静的および動的HTMLコンテンツのサービスもサポート これにより、HeatWave MySQLインスタンスが軽量Webサーバーとし て機能し、外部アプリケーション・フレームワークやサーバーなしでデータ ドリブン・ページを配信可能 (ダッシュボード、レポート、管理ツール等、これらはすべてデータベースから直接 実行) プログレッシブなWebアプリケーション 外部ライブラリやサードパーティ・コンポーネントに依存することなく、プロ グレッシブWebアプリケーション(PWA)を構築するために必要なすべて のものを提供 ルーティング、状態管理、データ管理など、すべてネイティブサポート (依存関係のスプロールが不要になり、ビルド・パイプラインが簡素化され、長期 的なメンテナンス性が向上) Webセッション管理 Webセッションは、クッキーまたはJSON Webトークン(JWT)を使用し て自動処理
  7. MySQL HeatWaveでアプリ開発の簡素化へ Copyright © 2026, Oracle and/or its affiliates 10

    Web App JavaScript ツール 認証 AI JSON セキュアなRESTサービス 登録されているユーザーのみがアクセス 各ユーザーがアクセスできるエンドポイントと、ロール・ベースのアクセス制 御により、実行できる操作を制御 柔軟な認証システム 拡張可能なシステムにて、ユーザー・アカウントと、ユースケースに最適 な方法によるログイン方法を管理 • 個別に管理されたパスワード・ベースのネイティブ・ユーザー・データ ベース • MySQLアカウントを持つすべてのユーザーにRESTサービス • ユーザー管理を外部アイデンティティ・サービスに委任し、既存ユー ザーが新しいRESTエンドポイントにアクセス
  8. MySQL HeatWaveでアプリ開発の簡素化へ Copyright © 2026, Oracle and/or its affiliates 11

    Web App JavaScript ツール 認証 AI JSON MySQL Shell for VS Code Visual Studio Codeの拡張機能であるMySQL Shell for VS Codeまたはコマンドライン・インタフェースが必要な場合は通常の MySQL Shellを使用して、HeatWave REST Serviceを管理可 能 自動生成クライアントSDK 追加でエンドポイントの高レベルのクライアントSDKを生成 • RAW HTTPリクエストではなく、使いやすいメソッド・コール • データベース・スキーマに一致する組込みデータ・モデル • 自動処理認証とリクエストのフォーマット (TypeScript、Pythonまたはその他のサポートされている言語を使用している かどうかに関係なく、最小限の労力でデータベースAPIを統合可能)
  9. MySQL REST Service - Quickstart Guide MySQL REST Serviceの初期設定 Copyright

    © 2026, Oracle and/or its affiliates 12 MRS の初期設定 MRS を設定して、MRS 用のメタデータス キーマを作成してよいかの確認 MRS の設定用 オブジェクトができる MRS の設定保存用 メタデータスキーマも生成 (システムスキーマも表示 する設定で可視化) 接続を右クリック
  10. MySQL REST Service - Quickstart Guide MySQL REST Service の

    REST ルートパスを設定 Copyright © 2026, Oracle and/or its affiliates 13 MRS オブジェクトを右クリック Add REST Service を選択 REST サービスのルートパスを 設定 MRS オブジェクトの下に REST サービスが生成される
  11. MySQL REST Service - Quickstart Guide MySQL REST Service の

    REST スキーマを設定 Copyright © 2026, Oracle and/or its affiliates 14 MySQL のデータベースを右クリック Add Schema to REST Service を選択 REST のスキーマパスを設定 REST サービスの下に REST スキーマが生成される 対応するデータベースのスキーマ名 (右クリックから生成することで自動設定)
  12. MySQL REST Service - Quickstart Guide MySQL REST Service の

    REST データベースを設定 Copyright © 2026, Oracle and/or its affiliates 15 MySQL のテーブルを右クリック Add Database Object to REST Service を選択 REST のオブジェクトパスを設定 REST スキーマの下に REST オブジェクトが生成される 対応するデータベースのテーブル名 (右クリックから生成することで自動設定) API を CRUD のどれに 対応させるか テーブルのカラムと REST 結果の属性の 対応付け
  13. ……. MySQL REST Service - Quickstart Guide MySQL Shell for

    VS Code からのローカル MySQL Router 設定 Copyright © 2026, Oracle and/or its affiliates 16 MRS オブジェクトを右クリック Bootstrap Local MySQL Router Instance を選択 Visual Studio Code のコンソールでブートストラップが走る MySQL Router が MySQL に接続する ための root パスワード入力 ランダムな JSON Web Token シークレットを指定 REST サービスが起動しているポートが表示される
  14. MySQL REST Service - Quickstart Guide ブートストラップ後の MySQL Router 起動

    Copyright © 2026, Oracle and/or its affiliates 17 MRS オブジェクトを右クリック Start Local MySQL Router Instance を選択 しばらく待つと、MySQL Router が起動し、 GUI 上にオブジェクトが生成される
  15. https://dev.mysql.com/doc/dev/mysql-rest-service/latest/#setting-up-a-new-rest-service MySQL REST Service - Quickstart Guide Copyright © 2026,

    Oracle and/or its affiliates 18 OCIでHeatWave MySQLの管理コンソー ルを開き、DB Systemを9.5にアップグレード し、REST Serviceを有効にして、エンドポイ ントの定義を開始します。
  16. • InnoDBのテーブルもしくはLakehouseのテーブルを対象にJSON Duality Viewを作成 • SELECT結果はJSONドキュメントの生成だけでなく、変更トラッキングのETAGも計算 • JSONオブジェクトを使用して、JSON Duality Viewに対してDML操作(INSERT、UPDATE、DELETE)の直接

    実行が可能 * SELECT(コミュニティエディション)/ INTERT,UPDATE,DELETE (Enterprise Edition) • データベース内で新しい「ロックレス・オプティミスティック・コンカレント制御」を導入し、ステートレス(REST)操作を介して 実行される読取り/書込み操作の競合の回避 *ETAG(オブジェクトの内容から計算されるハッシュ値)が各オブジェクトの一意の署名として機能します。 これによりデータベースは競合検出を自動で処理し、ユーザーはアプリケーション設計の簡素化を実現しています • JSON Duality Viewのメタデータにアクセスするための新しいInformation_SchemaのViewを用意 MySQL JSON Duality Viewの特徴 Copyright © 2026, Oracle and/or its affiliates 21
  17. MySQL JSON Duality View 機能概要 CREATE TABLE customers ( customer_id

    INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) ); CREATE TABLE orders ( order_id INT PRIMARY KEY AUTO_INCREMENT, customer_id INT, product VARCHAR(100), amount DECIMAL(10,2), FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); 22 Copyright © 2026, Oracle and/or its affiliates CREATE OR REPLACE JSON RELATIONAL DUALITY VIEW customers_orders_dv AS SELECT JSON_DUALITY_OBJECT( WITH(INSERT,UPDATE,DELETE) '_id': customer_id, 'customer_name': name, 'orders': ( SELECT JSON_ARRAYAGG( JSON_DUALITY_OBJECT( WITH(INSERT,UPDATE,DELETE) 'order_id': order_id, 'product': product, 'amount': amount ) ) FROM orders WHERE orders.customer_id = customers.customer_id ) ) FROM customers;
  18. MySQL JSON Duality Viewによる INSERT(登録) mysql> INSERT INTO customers_orders_dv VALUES

    ( '{ "customer_name": "Alice", "_id": 1, "orders": [ {"order_id": 1, "product": "Laptop", "amount": 1299.99}, {"order_id": 2, "product": "Mouse", "amount": 19.99} ] }’); Query OK, 3 rows affected (0.018 sec) Rows affected: 3 Warnings: 0. 23 Copyright © 2026, Oracle and/or its affiliates mysql> SELECT * FROM customers; +-------------+-------+ | customer_id | name | +-------------+-------+ | 1 | Alice | +-------------+-------+ mysql> SELECT * FROM orders; +----------+-------------+---------+---------+ | order_id | customer_id | product | amount | +----------+-------------+---------+---------+ | 1 | 1 | Laptop | 1299.99 | | 2 | 1 | Mouse | 19.99 | +----------+-------------+---------+---------+ 作成されたViewに直接JSONデータを追加可能 正規化されたテーブルには、追加したJSONデータ が展開されて格納
  19. MySQL JSON Duality Viewによる SELECT(参照) mysql> SELECT * FROM customer_orders_dv

    +--------------------------------------------------+ | data | +--------------------------------------------------+ |{ | | "_id": 1, | | "orders": [ | | { | | "amount": 1299.99, | | "product": "Laptop", | | "order_id": 1 | | }, | | { | | "amount": 19.99, | | "product": "Mouse", | | "order_id": 2 | | } | 24 Copyright © 2026, Oracle and/or its affiliates JSON Duality Viewに対してSELECTを実行 :JSONドキュメントと計算されたETAGを取得 | ], | | "_metadata": { | | "etag": "e6d40eabf2e070ffd2719c6755d50f1a" | | }, | | "customer_name": "Alice" | |} | +--------------------------------------------------+ 1 row in set (0.001 sec)
  20. MySQL JSON Duality Viewによる UPDATE(更新) mysql> UPDATE customer_orders_dv SET data

    = '{ "_id": 1, "orders": [ { "amount": 1000, "product": "Laptop", "order_id": 1 }, { "amount": 19.99, "product": "Mouse", "order_id": 2 } ], 25 Copyright © 2026, Oracle and/or its affiliates SELECT文からフェッチされたETAGを含むUPDATEを実行して、 ”orders”テーブルの”amount”列の値を1000に変更 "_metadata": { "etag": "e6d40eabf2e070ffd2719c6755d50f1a" }, "customer_name": "Alice" }' WHERE data->'$._id' = 1;
  21. MySQL JSON Duality Viewによる UPDATE 競合検出 26 Copyright © 2026,

    Oracle and/or its affiliates JSON Duality View ETAGの値を基にデータの競合検出を行っています Query OK, 1 row affected (0.007 sec) Rows affected: 1 Warnings: 0. SELECT時に取得したETAGに変更がない (オブジェクトに変更がない) SELECT時に取得したETAGに変更がある (データベース上のオブジェクトに変更があり、内部 ETAGが更新されている) ERROR 6494 (HY000): Cannot update JSON duality view. The ETAG of the document in the database did not match the ETAG '"e6d40eabf2e070ffd2719c6755d50f1a"' passed in. 再度SELECTを実施し、新たに取得したETAGに変更 することで、更新することが出来る
  22. MySQL JSON Duality View まとめ JSON データモデル リレーショナルデータモデル 強み 簡単に始められる、厳格なスキーマなし、データの追加のみ

    データ更新時の参照関係の一貫性、参照整合性を保証 REST APIおよびJavaScriptを多用するWebアプリケー ションとの完全な相乗効果 効率的なストレージ、正規化、重複のないデータ 複雑なオブジェクト・リレーショナル・マッピング(ORM)を排除 弱み 正規化が困難となり、データの重複を起こしやすい あらかじめスキーマを用意する必要がある。アジャイルなチー ムには課題となり得る データ更新時に一貫性が担保されない 開発エンジニアがORMかマッピングのロジックを用意する必 要がある 27 Copyright © 2026, Oracle and/or its affiliates • 一貫性が保証された、無制限のJSONドキュメント・シェイプ • 新規及び既存のリレーショナル・データベース上にドキュメント中心のアプリケーションを構築 • ユースケースに応じて、リレーショナル・データとJSONデータの両方に対する効率的なCRUD • リレーショナル・システムと非リレーショナル・システム間のJSONデータのシームレスなレプリケーション • MySQLの運用性・冗長性をそのまま活用
  23. GPLと商用版のデュアルライセンス • MySQL Community Server • MySQL Cluster • MySQL

    GUI管理ツール • MySQLコネクタ (JDBC, ODBC, etc.) • MySQL Standard Edition • MySQL Enterprise Edition • MySQL Cluster Carrier Grade Edition MySQLのライセンス Copyright © 2026, Oracle and/or its affiliates 29 Community Edition (GPL) Commercial Edition (商用版) *価格は下記をご参照ください。 https://www.oracle.com/jp/corporate/pricing/#mysql *ライセンスカウントはサーバ単位(※)が基本となります。 ※サーバ:MySQLがインストールされたコンピュータ 仮想環境上で稼働させた場合も物理サーバ 詳細は営業までお問い合わせください。 *GPLライセンスの解釈、商用利用については お客様の社内法務部門にご確認ください。
  24. 安心してMySQLをご利用ください 技術的な不安 MySQL Support Service DB障害対策 MySQL Enterprise Backup MySQL

    InnoDB Cluster MySQL Cluster CGE DBセキュリティリスク Oracle Enterprise Manager for MySQL MySQL Cluster Manager DBセキュリティリスク MySQL Enterprise Security Copyright © 2026, Oracle and/or its affiliates 30 100%
  25. Oracleが提供する オープンソース・データ・プラットフォーム 全体イメージ Copyright © 2026, Oracle and/or its affiliates

    31 リレーショナル データベース リレーショナル データベース + NoSQL NoSQL インメモリ データベース 全てのOCIのリージョンでご利用いただける高い可用性を持ったマネージド・サービス 高い可用性とストレー ジのオートスケールを 兼ね備えたマネージド なPostgreSQLサービス 機械学習、ベクトル・ ストア、LLMを組み込ん だインメモリのクエ リ・アクセラレータを 統合したMySQLサービス 文書データの索引型の 全文検索やセマン ティック検索を行い、 可視化や分析が可能な OpenSearchサービス シンプルなクエリに対 し、高いパフォーマン スを実現するフルマ ネージドのNoSQLサービ ス 低レイテンシかつ変化 するアクセス・ボ リュームに動的に対応 できる高い拡張性を もったRedisサービス OCI Search with OpenSearch OCI Cache OCI NoSQL Database OCI Database with PostgreSQL
  26. Copyright © 2026, Oracle and/or its affiliates 32 Transactional クラウド版MySQL

    Enterprise Edition Analytics 大規模データ分析を 大幅に高速化 Lakehouse オブジェクト・ ストレージとの統合 AutoML 機械学習の パイプラインを自動 化 GenAI 専門知識なしで 生成AIの活用