文件資料庫是 NoSQL 資料庫的一種,會將資料儲存在彈性的「文件」中,這些文件通常採用 JSON 或 BSON 等格式。
文件資料庫的特色包括:
文件資料庫就像智慧型數位檔案櫃。資料會按照集合 (資料夾) 分組,每個集合都包含單一實體 (例如客戶或產品) 的獨立文件 (檔案)。
與結構固定的關聯式資料表不同,每份文件都能有獨特的結構。舉例來說,您可以在電子商務目錄中,為單一產品新增「sustainability_rating」欄位,而不必變更其他所有商品的結構定義。
Document 1: { "id": 1, "product_name": "blue shirt", "product_category": "shirt", "qty": 76, "sustainability_rating": "moderate" } | 文件 2: { "id": 2, "product_name": "green pants", "product_category": "pants", "qty": 44 } |
Document 1:
{
"id": 1,
"product_name": "blue shirt",
"product_category": "shirt",
"qty": 76,
"sustainability_rating": "moderate"
}
文件 2:
{
"id": 2,
"product_name": "green pants",
"product_category": "pants",
"qty": 44
}
文件資料庫非常適合需要具備彈性、擴充性和快速開發的應用程式,例如 AI 應用程式、內容管理、電子商務和遊戲。
舉例來說,單一社群媒體貼文包含半結構化資料,例如使用者名稱、時間戳記和「讚」數等可預測的欄位,但結構具有彈性。例如,其中一則貼文可能包含選填的地點標記,另一則則可能列出標記的使用者。此外,貼文可能包含非結構化資料,例如圖片或影片、說明文字的自由格式文字,以及一系列使用者留言。
文件資料庫的設計宗旨,是將所有相關資訊 (從結構化的使用者名稱到非結構化的圖片和留言) 儲存在同一個「文件」中。這樣一來,開發人員就能有效率地處理實際資料,不必先將資料強制套用至預先定義的嚴格結構。
文件資料庫與眾不同,因為其具備一系列獨特的架構特性,旨在支援現代開發模式和資料效率。
文件會分組為集合,類似關聯式資料庫中的資料表。不過,與資料表不同的是,集合不要求所有文件都具有相同的結構,因此更具彈性。舉例來說,假設有數份文件儲存了客戶的姓名和電子郵件地址,但付款方式不同。例如,一份文件可能儲存信用卡詳細資料,另一份則可能儲存支票帳戶的銀行識別碼和帳號。
除了每個文件都有獨特的結構外,格式也會隨著資訊新增而改變。換句話說,資料結構和值都會演變。這與關聯式資料庫有根本上的差異,在關聯式資料庫中,資料表中的所有資料列都必須符合相同的預先定義資料欄,只有值會變更。動態結構定義在直覺式程式開發中特別實用,因為單一提示詞表達新的業務需求時,可能會反映資料模型的變更。
文件資料庫可讓您直接在文件欄位中查詢,並使用索引來快速查詢。舉例來說,您可以依電子郵件快速找到使用者,或擷取超過特定價格的訂單。
文件資料庫的設計可輕鬆擴充,只要順暢新增更多伺服器或叢集,幾乎不會停機。具備擴充性,因此非常適合資料需求不斷增加或難以預測的應用程式。
文件資料庫廣泛用於需要彈性、擴充性和速度的應用程式。以下是一些常見用途:
文件資料庫、關聯式資料庫和鍵值儲存庫都能管理資料,但就結構、彈性和速度來說,優先順序不同。
功能 | 文件資料庫 | 鍵/值儲存庫 | 關聯資料庫 |
資料格式 | 複合型、結構化文件 | 簡單的鍵/值組合 | 表格式 (資料列和資料欄) |
工作彈性 | 高;每份文件可能不同 | 高;每列的欄數可能不同 | 有限;預先定義的架構 |
查詢 | 進階,包括巢狀欄位 | 使用鍵索引或次要索引,可獲得最佳效能 | 使用 JOIN 進行進階複雜查詢 |
適用情境 | 快速開發及資料模型持續進化 | 簡單的資料結構和快速查詢 | 資料高度一致,可查詢多個資料表 |
功能
文件資料庫
鍵/值儲存庫
關聯資料庫
資料格式
複合型、結構化文件
簡單的鍵/值組合
表格式 (資料列和資料欄)
工作彈性
高;每份文件可能不同
高;每列的欄數可能不同
有限;預先定義的架構
查詢
進階,包括巢狀欄位
使用鍵索引或次要索引,可獲得最佳效能
使用 JOIN 進行進階複雜查詢
適用情境
快速開發及資料模型持續進化
簡單的資料結構和快速查詢
資料高度一致,可查詢多個資料表
文件資料庫非常適合動態環境,例如電子商務平台或行動應用程式,因為這些環境的資料會快速演變或以多種形式呈現。這類資料庫具備彈性,適合處理來自不同來源或具有不同結構定義的資料集。
另一方面,關聯式資料庫非常適合傳統應用程式,例如財務系統或商品目錄管理,因為這類應用程式對資料一致性和結構的要求極高。舉例來說,在金融服務業,嚴格的結構定義可確保每個客戶帳戶都使用監管機構規定的相同資料類型。
從兩者之間選擇時的考量:
打造大型複雜的應用程式 (例如電玩遊戲) 時,可能會同時使用文件資料庫和關聯式資料庫,分別儲存不同部分的資料。
文件資料庫和鍵值儲存庫都是 NoSQL 資料庫,但兩者處理資料的方式不同,因此用途也不同。
文件資料庫:文件資料庫延伸了鍵/值概念。文件可包含巢狀資料,文件資料庫則提供更彈性的建立索引方式,可針對巢狀資料的值執行高效能查詢。這種結構讓文件資料庫能管理各種資料集,並支援進階查詢。
鍵/值儲存庫:這類資料庫使用簡單的鍵/值結構。每個鍵都是獨一無二的,並直接指向其值。這種簡便性讓鍵/值儲存庫的查詢速度極快,但由於不使用複雜的查詢語言,因此不適合處理複雜或階層式的資料。
適用時機:
文件資料庫是處理現代資料需求的強大工具。以下列舉幾項主要優點:
彈性
由於文件資料庫的結構定義是動態的,因此適合資料模型經常變更的應用程式。
效能
文件資料庫內建索引功能,並提供有效率的資料存取模式,即使處理大型或複雜的資料集,也能快速完成。
擴充性
藉由水平擴充,您可以隨著資料量增加來加入更多伺服器,確保應用程式規模擴大時,效能仍能維持穩定。此外,文件資料庫還能藉由在每個節點增加算力,進行垂直擴充。
開發人員體驗
您可以使用開發人員熟悉的語法,將 JSON 文件對應至資料庫中的物件。您也可以直接在程式碼中更新文件。
資料多樣性
文件資料庫擅長儲存、管理及查詢各種資料類型,包括非結構化和半結構化資訊,以及與圖片和影片等檔案相關聯的中繼資料。
MongoDB 是廣泛使用的文件資料庫,以彈性的 BSON 資料格式、臨時查詢語言和水平擴充功能而聞名。MongoDB, Inc. 提供商業版,其他供應商的數個競爭資料庫則提供不同程度的 MongoDB 相容性。
Firestore 是全代管的企業級文件資料庫,提供高達 99.999% 的可用性,和符合 ACID 標準的多文件交易。Firestore 與 MongoDB 相容,因此您可以搭配 Firestore,使用現有的 MongoDB 應用程式程式碼、驅動程式、工具,以及 MongoDB 整合的開放原始碼生態系統。Firestore 與 Firebase 整合,可簡化網頁和行動應用程式的即時資料同步作業。
Couchbase 是分散式文件資料庫和雲端平台,可支援多雲端、行動、AI 和邊緣運算工作負載。
CosmosDB 是多重模型資料庫服務,專為需要全球規模低延遲讀寫的應用程式而設計。
Amazon DocumentDB 是 Amazon Web Services (AWS) 代管的資料庫服務。
Firestore 是全代管文件資料庫,可降低資料庫管理的複雜度,並讓您充分發揮 Google Cloud 的強大功能,以及其可擴充的全球性平台。
無論是建構小型應用程式,還是擴充全球平台,Firestore 的功能都能協助您加快速度,同時維持彈性和效能。
Firestore 是 Google Cloud 和 Firebase 的一部分,與 Firebase Auth、BigQuery 和許多其他服務簡易整合,為應用程式提供強大後盾。無論是即時協作工具、行動應用程式或企業平台,Firestore 都能提供您所需的工具,助您取得成功。
立即開始使用,低用量可享免費方案,體驗強大、可靠且可擴充的文件資料庫。