Azure SQL Database の JSON 関数のパブリック プレビューを発表

執筆者: Jovan Popovic (Program Manager, Azure SQL Database)

このポストは、4 月 19 日に投稿された JSON functionalities in Azure SQL Database (public preview) の翻訳です。

 

このたび Azure SQL Database の新しい JSON 関数のパブリック プレビューがリリースされました。新しい JSON 関数を使用すると、JSON ドキュメントを使用して通信する他のサービスとデータベースを簡単に統合し、データベースに格納されるさまざまなデータを処理できます。

JSON を使用するメリット

JSON はさまざまな最新のアプリケーションやサービス間のデータ交換に広く使用されている形式で、半構造化データの格納にも使用されます。

JSON は、Azure エコシステムのあらゆる場所で使用されています。JSON ドキュメントは、Web クライアントやモバイル クライアント (ブラウザーの JavaScript ライブラリなど)、センサー、ログを生成するサービス (Application Insight など) で生成され、Azure Stream Analytics、Azure Data Factory、Azure Machine Learning などのさまざまな Azure サービスを使用して処理できます。また、Azure DocumentDB、Azure Blob Storage、Azure Table Storage、Azure Data Lake、Azure SQL Database などに格納できます。Azure Search では、さまざまなデータ ソースに格納されている JSON ドキュメントにインデックスを付けることもできます。

Azure SQL Database では、JSON を標準のテキスト形式で格納し、標準の SQL 言語を使用して JSON データのクエリを実行できるほか、インデックス作成方法も他の標準の SQL データ型と同じです。JSON フィールドの自動インデックス作成、グローバルな分散データの整合性レベルの調整、JavaScript の統合を利用するために特殊な JSON データベースが必要な場合は、ストレージ エンジンとして Azure DocumentDB を使用することをお勧めします。

Azure SQL Database での JSON の使用に適したシナリオ

Azure SQL Database では、リレーショナル データと JSON データの両方を格納およびクエリできるハイブリッド モデルを使用できます。標準のリレーショナル モデルを使用してデータを整理し、スキーマの柔軟性を向上させるために JSON を使用して、リレーショナル列と JSON 列の両方のクエリに完全な SQL 言語を使用することができます。

Azure SQL Database の JSON 関数を使用すると、下記のようなシナリオに対応できます。

JSON データの取得を容易に

JSON 形式でデータを提供するシステムやデバイス (モバイル デバイス、センサー、Azure Stream Analytics、Application Insight など) を使用している場合、JSON 形式からリレーショナル形式に変換するレイヤーを追加せずに、データを直接 Azure SQL Database に送信することができます。生の JSON ドキュメントを Azure SQL Database に直接送信して、元の形式のまま格納することも、リレーショナル モデルに変換することもできます。

他のシステムやライブラリとのデータ交換に JSON ドキュメントを使用

AJAX 呼び出しによりサーバー データを読み取る Web フレームワークやライブラリ (JQuery、D3、AngularJS、ReactJS など)、JSON 形式でデータを提供する REST Web サービス、GeoJSON 形式でデータを表示するコンポーネントでは、JSON 形式のデータを Azure SQL Database で直接使用できます。Azure SQL Database のデータを JSON 形式に変換するコンポーネントが不要なため、Azure SQL Database に格納されているデータを容易に JSON ドキュメントに変換し、ライブラリやサービスで直接使用することができます。

柔軟なデータ モデルで各種データに対応

半構造化データをリレーショナル モデルに追加する必要があるとお考えですか? さまざまな種類の製品を含むカタログ、多くの質問を含む調査やアンケートの回答、センサーの種類や目的ごとの情報を持つセンサー データなど、多数のプロパティが頻繁に変化するようなデータ モデルでは、データの可変部分を格納するための柔軟性が必要になります。これらのデータ モデルでは、エンティティ間のリレーションシップが必要ですが、同時にフィールドやデータ構造を容易に追加、変更できる柔軟性も必要です。リレーショナル モデルと JSON フィールドを組み合わせることで、これらのユース ケースに最適なモデルを容易に設計し、リレーショナル列と JSON 列の両方にクエリを実行することができます。

使用可能な関数

Azure SQL Database では、よく知られている標準テキスト形式の JSON ドキュメントが使用されます。JSON ドキュメントをカスタムのバイナリ シリアル化形式やバイナリ型に変換したり、JSON データの再読み込みや変換を行ったりする必要はありません。次の図は、Azure SQL Database で使用可能な JSON 関数の概要を示したものです。84e1da6e-854e-45fc-9520-c0a3384ddd28

Azure SQL Database に組み込まれているシンプルな関数により、JSON テキストから値を抽出してクエリで使用したり (JSON_VALUE、英語)、JSON からオブジェクトを抽出したり (JSON_QUERY、英語)、JSON テキストの値の一部を更新したり (JSON_MODIFY、英語)、JSON テキストの形式が適切であるかを検証したり (ISJSON、英語) できます。シンプルで覚えやすいこれらの 4 つの関数はあらゆる SQL クエリで使用できます。

新しい JSON クエリ言語を学習しなくても、よく知られている標準の SQL 言語と新しい組み込みの JSON 関数を使用して、JSON 列とリレーショナル列の両方に同じクエリを実行できます。アプリケーションやツールは、テーブルの列から取得された値と JSON テキストから抽出された値を同じものとして扱います。また、新しい OPENJSON (英語) 関数では、JSON テキストをテーブル構造に変換できます。

変換された JSON は、標準の SQL 言語を使用してクエリを実行したり、リレーショナル テーブルに読み込んだりできます。最後に、JSON 関数では FOR JSON (英語) 文を使用して、データベースのコンテンツや SQL クエリの結果を JSON テキスト形式に簡単に変換できます。JSON 形式のデータは JSON を理解するあらゆるアプリケーションやサービスで使用できます。

次のステップ

JSON をアプリケーションに統合する方法については、TechNet ブログ (英語)MSDN のドキュメント (英語)Channel 9 ビデオ (英語) をご覧ください。また、アプリケーションに JSON をどのように統合できるかについては、さまざまなシナリオを紹介しているこちらの Channel 9 ビデオ (英語) のデモをご覧ください。さらに、JSON ブログ (英語) では皆様のユース ケースに適したシナリオを紹介しています。

ぜひ JSON 関数をお試しのうえ、ご意見をお聞かせください!