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