DocumentDB SQL - 概述



DocumentDB 是微軟最新的 NoSQL 文件資料庫平臺,執行在 Azure 上。在本教程中,我們將學習有關使用 DocumentDB 支援的 SQL 特殊版本查詢文件的所有內容。

NoSQL 文件資料庫

DocumentDB 是微軟最新的 NoSQL 文件資料庫,但是,當我們說 NoSQL 文件資料庫時,我們究竟指的是什麼?NoSQL 和文件資料庫分別是什麼?

  • SQL 代表結構化查詢語言,它是關係資料庫的傳統查詢語言。SQL 通常與關係資料庫等同。

  • 將 NoSQL 資料庫視為非關係資料庫實際上更有幫助,因此 NoSQL 實際上意味著非關係型。

NoSQL 資料庫有不同型別,包括如下鍵值儲存:

  • Azure 表儲存
  • 基於列的儲存,如 Cassandra
  • 圖資料庫,如 NEO4
  • 文件資料庫,如 MongoDB 和 Azure DocumentDB

為什麼使用 SQL 語法?

這起初聽起來可能很奇怪,但在 DocumentDB(一個 NoSQL 資料庫)中,我們使用 SQL 進行查詢。如上所述,這是基於 JSON 和 JavaScript 語義的 SQL 特殊版本。

  • SQL 只是一種語言,但它也是一種非常流行的語言,功能豐富且表達力強。因此,使用某種 SQL 方言而不是想出一種全新的查詢表達方式(如果要從資料庫中獲取文件,則需要學習這種新方式)絕對是一個好主意。

  • SQL 是為關係資料庫設計的,而 DocumentDB 是一個非關係型文件資料庫。DocumentDB 團隊實際上已經調整了 SQL 語法,使其適用於文件資料庫的非關係型世界,這就是將 SQL 植根於 JSON 和 JavaScript 的含義。

  • 該語言的閱讀方式仍然與熟悉的 SQL 相同,但語義都基於無模式的 JSON 文件,而不是關係表。在 DocumentDB 中,我們將使用 JavaScript 資料型別而不是 SQL 資料型別。我們將熟悉 SELECT、FROM、WHERE 等,但使用 JavaScript 型別(僅限於數字和字串、物件、陣列、布林值和 null)遠少於 SQL 資料型別的廣泛範圍。

  • 同樣,表示式也作為 JavaScript 表示式進行計算,而不是某種形式的 T-SQL。例如,在非規範化資料的世界中,我們不處理行和列,而是處理包含巢狀陣列和物件的層次結構的無模式文件。

SQL 如何工作?

DocumentDB 團隊已經通過幾種創新的方式回答了這個問題。其中一些列出如下:

  • 首先,假設您沒有更改預設行為以自動索引文件中的每個屬性,您可以在查詢中使用點表示法來導航到任何屬性的路徑,無論它在文件中巢狀多深。

  • 您還可以執行文件內連線,其中巢狀陣列元素與其父元素在文件中連線,方式與在關係世界中兩個表之間執行連線的方式非常相似。

  • 您的查詢可以按原樣返回資料庫中的文件,或者您可以根據所需文件資料的多少,投影任何所需的自定義 JSON 形狀。

  • DocumentDB 中的 SQL 支援許多常見運算子,包括:

    • 算術和位運算

    • AND 和 OR 邏輯

    • 等式和範圍比較

    • 字串連線

  • 查詢語言還支援大量內建函式。

廣告

© . All rights reserved.