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