Documentdb-sql-overview
提供:Dev Guides
DocumentDB SQL-概要
DocumentDBは、Azure上で実行されるMicrosoftの最新のNoSQLドキュメントデータベースプラットフォームです。 このチュートリアルでは、DocumentDBでサポートされている特別なバージョンのSQLを使用したドキュメントのクエリについてすべて学習します。
NoSQLドキュメントデータベース
DocumentDBはMicrosoftの最新のNoSQLドキュメントデータベースですが、NoSQLドキュメントデータベースと言うとき、NoSQLとドキュメントデータベースとは正確には何を意味しますか?
- SQLは、リレーショナルデータベースの従来のクエリ言語である構造化クエリ言語を意味します。 SQLは、多くの場合、リレーショナルデータベースと同一視されます。
- NoSQLデータベースを非リレーショナルデータベースと考えると、非常に便利です。したがって、NoSQLは本当に非リレーショナルを意味します。
次のようなキー値ストアを含むさまざまな種類のNoSQLデータベースがあります-
- Azureテーブルストレージ
- Cassandraなどの列ベースのストア
- NEO4のようなグラフデータベース
- MongoDBやAzure DocumentDBなどのドキュメントデータベース
なぜSQL構文なのか?
これは最初は奇妙に聞こえるかもしれませんが、NoSQLデータベースであるDocumentDBでは、SQLを使用してクエリを実行します。 前述のように、これはJSONおよびJavaScriptセマンティクスに根ざしたSQLの特別なバージョンです。
- SQLは単なる言語ですが、リッチで表現力のある非常に人気のある言語でもあります。 したがって、データベースからドキュメントを取得する場合に学習する必要があるクエリを表現するまったく新しい方法を考え出すよりも、SQLの方言を使用することは間違いなく良い考えのようです。
- SQLはリレーショナルデータベース用に設計されており、DocumentDBは非リレーショナルドキュメントデータベースです。 DocumentDBチームは、ドキュメントデータベースの非リレーショナルの世界にSQL構文を実際に適用しました。これは、JSONおよびJavaScriptでSQLをルート化することを意味します。
- この言語は今でもおなじみのSQLとして読みますが、セマンティクスはすべてリレーショナルテーブルではなく、スキーマフリーのJSONドキュメントに基づいています。 DocumentDBでは、SQLデータ型ではなくJavaScriptデータ型を使用します。 SELECT、FROM、WHEREなどに精通していますが、数値と文字列に限定されているJavaScript型、オブジェクト、配列、ブール値、nullは、広範囲のSQLデータ型よりもはるかに少ないです。
- 同様に、式はT-SQLの何らかの形式ではなくJavaScript式として評価されます。 たとえば、非正規化データの世界では、行と列ではなく、ネストされた配列とオブジェクトを含む階層構造を持つスキーマフリーのドキュメントを扱います。
SQLはどのように機能しますか?
DocumentDBチームは、いくつかの革新的な方法でこの質問に答えました。 それらのいくつかは次のようにリストされています-
- まず、ドキュメント内のすべてのプロパティに自動的にインデックスを付けるデフォルトの動作を変更していないと仮定すると、クエリ内でドット表記を使用して、ドキュメント内のネストの深さに関係なく、任意のプロパティへのパスをナビゲートできます。
- また、リレーショナル世界の2つのテーブル間で結合が実行される方法と非常によく似た方法で、ネストされた配列要素がドキュメント内の親要素と結合されるドキュメント内結合を実行できます。
- クエリは、データベースからドキュメントをそのまま返すことができます。または、必要なドキュメントデータの量に応じて、必要なカスタムJSON形状を投影できます。
- DocumentDBのSQLは、次のような一般的な演算子の多くをサポートしています-
- 算術演算とビット演算
- ANDおよびORロジック
- 同等性と範囲の比較
- 文字列の連結
- クエリ言語は、組み込み関数のホストもサポートしています。