文件資料庫是一種 NoSQL 資料庫,可用於將資料做為類似 JSON 的文件存放並對其進行查詢。JavaScript 物件標記法 (JSON) 是一種人類與機器均可閱讀的開放資料交換格式。開發人員可以在其程式碼中使用 JSON 文件,並將其直接儲存到文件資料庫中。文件和文件資料庫的靈活、半結構化和分層化特性允許它們隨應用程式的需求而演變。

JSON 文件資料庫
JSON 文件資料庫查詢

文件資料庫有哪些優勢

文件資料庫支援靈活的索引、強大的隨選查詢和文件集合分析。詳細閱讀以下優勢:

易於開發

JSON 文件映射至物件,這是大多數程式設計語言中常見的資料類型。建置應用程式時,開發人員可靈活地直接從程式碼建立和更新文件。這意味著前期建立資料模型花費的時間更少。因此,應用程式開發更快捷快、更有效率。

靈活的結構描述

以文件為導向的資料庫可讓您在同一集合中,建立具有不同欄位的多個文件。在存放電子郵件或社交媒體張貼等非結構化資料時,這可能很方便。但是,某些文件資料庫提供結構描述驗證,因此,您可以對結構施加一些限制。

任何規模都具備高效能

文件資料庫提供內建的分散功能。您可以在多個伺服器上水平擴展,而不會影響效能,這也具有成本效益。此外,文件資料庫透過內建複寫來提供容錯能力和可用性。

文件資料庫有哪些使用案例

文件模型適用於內容管理、型錄、感應器管理等使用案例。針對每個使用案例,每個文件都是獨一無二的,並隨著時間的推移而演進。

內容管理

文件資料庫非常適合用於部落格和影片平台等內容管理應用程式。有了文件資料庫後,應用程式所追蹤的每個實體都能以單一文件的形式儲存。隨著資料需求不斷演變,文件資料庫能方便開發人員以直覺的方式更新應用程式。此外,開發人員如果需要變更資料模型,僅需更新受影響的文件即可。不需要更新結構描述,也不用讓資料庫停機以進行變更。

目錄

文件資料庫能有效地存放目錄資訊並發揮高效率。舉例來說,在電子商務應用程式中,不同產品屬性數目通常都不同。在關聯式資料庫中管理上千個屬性效率不佳,而且讀取效能也會受到影響。若使用文件資料庫,各項產品屬性皆能以單一文件的形式描述,如此管理起來更加容易,讀取速度也更快。變更其中一個產品的屬性也不會影響其他產品。

感應器管理

得益於物聯網 (IoT),組織可定期從感應器和儀表等智慧型裝置收集資料。感應器資料通常會以變數值的連續串流形式輸入。由於延遲問題,某些資料物件可能不完整、重複或遺失。此外,您必須收集大量資料,再篩選或彙總以進行分析。

在這種情況下,文件存放區更方便。您可以快速地以原樣存放感應器資料,而無需將其清除或使其符合預先確定的結構描述。您還可以視需要進行擴展,並在分析完成後刪除整個文件。

文件資料庫如何運作

文件資料庫以 JSON 格式將資料做為鍵值對來存放。您能夠以程式設計方式讀取 JSON 文件,並將其寫入資料庫。

JSON 文件結構

JSON 以三種方式呈現資料:

鍵值

鍵值對會記錄在大括號內。索引鍵是一個字串,值可以是任何資料類型,例如整數、十進制或布林值。例如,一個簡單的鍵值如下︰{"year": 2013}。

陣列

陣列是在左括號 ([) 和右括號 (]) 中定義值的有序集合。陣列中的項目以逗點分隔。例如,{"fruit": ["apple","mango"]}。

物件

物件是鍵值對的集合。基本上,JSON 文件允許開發人員內嵌物件並建立巢狀對。例如,{"address": {"country": "USA","state": "Texas"}}。

JSON 文件範例

在以下範例中,類似 JSON 的文件描述了一個電影資料集。

[
    {
        "year" : 2013,
        "title" : "Turn It Down, Or Else!",
        "info" : {
            "directors" : [ "Alice Smith", "Bob Jones"],
            "release_date" : "2013-01-18T00:00:00Z",
            "rating" : 6.2,
            "genres" : ["Comedy", "Drama"],
            "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
            "plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
            "actors" : ["David Matthewman", "Jonathan G. Neff"]
        }
    },
    {
        "year": 2015,
        "title": "The Big New Movie",
        "info": {
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
]

您可以觀察到 JSON 文件非常靈活地保存簡單的值、陣列和物件。您甚至可以設置包含 JSON 物件的陣列。因此,以文件為導向的資料庫可讓您建立內嵌式 JSON 物件的無限層級階層。這完全取決於您要提供文件存放區的結構描述。

文件資料庫操作

您可以建立、讀取、更新和刪除存放在資料庫中的整個文件。文件資料庫提供查詢語言或 API,允許開發人員執行下列操作:

建立

您可以在資料庫中建立文件。每個文件都有一個用做索引鍵的不重複識別符。

讀取

您可以使用 API 或查詢語言來讀取文件資料。您可以使用欄位值或索引鍵來執行查詢。您還可以將索引新增至資料庫,以提高讀取效能。

更新

您可以靈活地更新現有文件。您可以重寫整個文件或更新個別值。

文件資料庫與鍵值存放區之間有何差異

鍵值資料庫是一種 NoSQL 資料庫,其使用簡單的鍵值方法來存放資料。這種資料庫將資料儲存為鍵值組集合,而其中的鍵做為唯一識別碼。索引鍵和值不限種類,從簡單物件到複雜的複合物件皆可。

以文件為導向的資料庫是一種特殊類型的鍵值存放區,其中索引鍵只能是字串。此外,該文件使用 JSON 等標準或 XML 等相關語言編碼。您還可以將 PDF、影像檔案或文字文件直接做為值來存放。

查詢文件存放區時,您可以讀取值或值的一部分,如果值是另一個 JSON 物件時尤其如此。例如,您可以使用 {"book": {"id": 1,"price": $10}},然後查詢 book.price,資料庫將傳回值 10。鍵值資料庫總是傳回整個值且帶有 ID 和價格資訊。

AWS 如何支援您的文件資料庫要求

Amazon DocumentDB (with MongoDB compatibility) 是一種全受管、原生 JSON 文件資料庫服務,可支援包括 MongoDB、工作負載在內的文件。開發人員可以使用相同的 MongoDB 應用程式程式碼、驅動程式和工具在 Amazon DocumentDB 上執行、管理和擴展工作負載。您可以享受提升的效能、可擴展性和可用性,無需擔心管理底層基礎設施。藉由 Amazon DocumentDB,您可以︰

  • 在使用 Amazon DocumentDB Elastic 叢集時,擴展至每秒數百萬次讀取和寫入請求,對效能的影響很小或幾乎沒有,並且無需對底層基礎設施進行管理。
  • 分離儲存與運算,因此您可以憑藉多達 15 個共用相同底層儲存的讀取複本,而無需在複本節點執行寫入,藉此來提高讀取效能。
  • 在無需支付授權費用的情況下,自動執行無差異化的手動資料庫管理任務,包括硬體佈建、修補、設定等等。
  • 透過 Amazon DocumentDB 全球叢集,實現 99.99% 的增強高可用性,適用於支援快速本機讀取效能的全球分散式應用程式。 
  • 透過自動複寫、持續備份和嚴格的網路隔離,實現 99.99% 的耐久性。
  • 高度可靠且耐用,具有容錯和自我修復的儲存、時間點復原、持續備份等。Amazon DocumentDB 透過複寫六種新的寫入方式,同時只需為一份副本付費,讓您在區域內三個可用區域中的資料持久耐用。
  • 藉由預設靜態加密、網路隔離和進階稽核來實現高度安全性,同時能夠透過精細存取來控制資源層級的許可。
  • 廣泛的合規範覆蓋範圍,包括 SOC (1、2 和 3)、PCI DSS、HIPAA 認證。

立即建立免費帳戶,開始使用 AWS 上的文件資料庫。

使用 Amazon DocumentDB 進行資料建模
Amazon DocumentDB 彈性叢集簡介