什麼是文件資料庫?

文件資料庫是 NoSQL 資料庫的一種,能以彈性格式儲存、管理及擷取資料。這些「文件」可以有各自的獨特結構,這與使用嚴格資料表 (含資料列和資料欄) 的關聯式資料庫不同。

這種彈性讓文件資料庫成為處理半結構化或非結構化資料的理想選擇,例如 AI 生成的應用程式或感應器資料,在這些情況下,傳統結構定義會過於嚴格。這類資料庫特別適合用於內容管理、電子商務和即時分析等用途。

重點整理

文件資料庫是 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 應用程式、內容管理、電子商務和即時分析。

舉例來說,單一社群媒體貼文包含半結構化資料,例如使用者名稱、時間戳記和「讚」數等可預測的欄位,但結構具有彈性。例如,其中一則貼文可能包含選填的地點標記,另一則則可能列出標記的使用者。此外,貼文可能包含非結構化資料,例如圖片或影片、說明文字的自由格式文字,以及一系列使用者留言。

文件資料庫的設計宗旨,是將所有相關資訊 (從結構化的使用者名稱到非結構化的圖片和留言) 儲存在同一個「文件」中。這樣一來,開發人員就能有效率地處理實際資料,不必先將資料強制轉換成預先定義的嚴格結構。

文件資料庫的主要功能

文件資料庫的獨特架構功能,可支援現代開發模式和資料效率,因此與其他資料庫有所區別。

文件會分組為集合,類似於關聯式資料庫中的資料表。不過,與資料表不同的是,集合不要求所有文件都具有相同的結構,因此更具彈性。舉例來說,假設有數份文件儲存了客戶的姓名和電子郵件地址,但付款方式不同。例如,一份文件可能儲存信用卡詳細資料,另一份則可能儲存支票帳戶的銀行識別碼和帳號。

除了每份文件都有獨特的結構外,格式也會隨著資訊新增而改變。換句話說,資料結構和值都會演變。這與關聯式資料庫有根本上的差異,在關聯式資料庫中,資料表中的所有資料列都必須符合相同的預先定義資料欄,只有值會變更。動態結構定義在直覺式程式開發中特別實用,因為單一提示詞表達新的業務需求時,可能會反映資料模型的變更。

文件資料庫可讓您直接查詢文件欄位,並透過索引快速查詢。舉例來說,您可以依電子郵件快速找到使用者,或擷取超過特定價格的訂單。

文件資料庫的設計可輕鬆擴充,只要順暢新增更多伺服器或叢集,幾乎不會停機。具備擴充性,因此非常適合資料需求不斷增加或難以預測的應用程式。

文件資料庫的主要用途

文件資料庫廣泛用於需要彈性、擴充性和速度的應用程式。以下是一些常見用途:

  • 內容管理系統 (CMS):管理各種內容,包括網誌文章和產品說明,確保有效的內容傳遞及更新
  • 電子商務平台:為高效能網路商店提供強大支援,處理複雜的產品目錄、使用者帳戶和即時交易
  • 即時分析:處理及分析大量資料,取得寶貴的洞察資訊,並根據資料做出決策
  • 行動和網頁應用程式:打造快速、互動性更高的應用程式,在各種裝置上提供流暢的使用者體驗
  • 物聯網 (IoT):儲存及分析大量感應器資料,支援智慧型裝置和系統
  • 遊戲開發:管理玩家資料、遊戲狀態和排行榜,打造身歷其境的遊戲體驗
  • 醫療照護應用程式:安全地儲存及管理敏感的病患資訊,提供有效率且準確的醫療照護服務
  • AI 輔助應用程式:使用可快速演進的資料模型支援 AI,跟上不斷變化的 AI 提示詞
  • AI 快取:快取 AI 服務的結果,例如語言翻譯、資料分類等,以降低服務費用

比較文件、鍵/值和關聯式資料庫

文件資料庫、關聯式資料庫和鍵值儲存庫都能管理資料,但就結構、彈性和速度來說,優先順序不同。

功能

文件資料庫

鍵/值儲存庫

關聯資料庫

資料格式

複合型、結構化文件

簡單的鍵/值組合

表格 (資料列和資料欄)

工作彈性

高;每份文件可能不同

高;每列的欄數可能不同

有限;預先定義的結構定義

查詢

進階:包括巢狀欄位

使用鍵索引或次要索引,可獲得最佳效能

使用 JOIN 的進階複雜查詢

適用情境

快速開發及不斷演進的資料模型

簡單的資料結構和快速查詢

資料一致性高,可查詢多個資料表

功能

文件資料庫

鍵/值儲存庫

關聯資料庫

資料格式

複合型、結構化文件

簡單的鍵/值組合

表格 (資料列和資料欄)

工作彈性

高;每份文件可能不同

高;每列的欄數可能不同

有限;預先定義的結構定義

查詢

進階:包括巢狀欄位

使用鍵索引或次要索引,可獲得最佳效能

使用 JOIN 的進階複雜查詢

適用情境

快速開發及不斷演進的資料模型

簡單的資料結構和快速查詢

資料一致性高,可查詢多個資料表

比較文件資料庫與關聯式資料庫

文件資料庫在電子商務平台或行動應用程式等動態環境中表現出色,因為這些環境的資料會快速演變或呈現多種形式。這類資料庫的彈性高,適合處理來自不同來源或具有不同結構定義的資料集。

另一方面,關聯式資料庫則非常適合傳統應用程式,例如財務系統或庫存管理,因為這類應用程式對資料一致性和結構有嚴格要求。舉例來說,在金融服務業,嚴格的結構定義可確保每個客戶帳戶都使用監管機構規定的相同資料類型。

從兩者之間選擇時的考量:

  • 結構:關聯式資料庫會強制執行嚴格的結構定義,而文件資料庫則允許每筆記錄有獨特的結構
  • 關聯性:關聯式資料庫仰賴 JOIN 作業來連結資料表,而文件資料庫通常會將相關資料嵌入單一文件中,以便快速存取
  • 擴充性:關聯式資料庫較容易垂直擴充,也就是在單一伺服器中加入更多資源,但水平擴充則需要複雜的機制。文件資料庫專為跨多部伺服器的水平擴充而打造
  • 彈性:文件資料庫可輕鬆適應不斷變化的資料模型,而關聯式資料庫則需要花費大量心力修改結構定義

打造大型複雜的應用程式 (例如電玩遊戲) 時,可能會同時使用文件資料庫和關聯式資料庫,分別儲存不同部分的資料。

比較文件資料庫與鍵/值儲存庫

文件資料庫和鍵值儲存庫都是 NoSQL 資料庫,但兩者處理資料的方式不同,因此用途也不同。

文件資料庫:文件資料庫延伸了鍵/值概念。文件可包含巢狀資料,文件資料庫則提供更彈性的建立索引方式,可針對巢狀資料的值執行高效能查詢。這種結構讓文件資料庫能管理各種資料集,並支援進階查詢。

鍵/值儲存庫:這類資料庫使用簡單的鍵/值結構。每個鍵都是獨一無二的,並直接指向其值。這種簡便性讓鍵/值儲存庫的查詢速度極快,但由於未使用複雜的查詢語言,因此不適合處理複雜或階層式資料。

適用時機:

  • 如果需要管理使用者工作階段或快取等簡單資料結構,且快速查詢至關重要,請選擇鍵值儲存庫
  • 如果應用程式的資料結構複雜且不斷演變,例如管理產品目錄或使用者個人資料,請選擇文件資料庫

文件資料庫常見問題

Firestore 是 Google Cloud 的全代管無伺服器文件資料庫。您可以將資料儲存在彈性文件,並與其他 Google Cloud 服務順暢整合,打造出強大且可擴充的解決方案。

兩者差異在於結構和彈性。SQL 資料庫 (例如 Cloud SQLCloud Spanner) 使用嚴謹的資料表,其中包含資料列和資料欄。Firestore 等文件資料庫會將資料儲存在彈性、類似 JSON 的文件,因此結構可隨時調整,不會破壞結構定義。

使用文件資料庫的好處

文件資料庫是處理現代資料需求的強大工具。以下列舉幾項主要優點:

彈性

由於文件資料庫的結構定義是動態的,因此適合資料模型經常變更的應用程式。

效能

文件資料庫內建索引功能,並採用有效率的資料存取模式,即使處理大型或複雜的資料集,也能維持快速運作。

擴充性

水平擴充可讓您隨著資料量增加伺服器,確保應用程式規模擴大時仍能維持一致的效能。此外,您還能為每個節點增加運算能力,垂直擴充文件資料庫。

開發人員體驗

您可以使用開發人員熟悉的語法,將 JSON 文件對應至資料庫中的物件。直接在程式碼中更新文件。

資料多樣性

文件資料庫擅長儲存、管理及查詢各種資料類型,包括非結構化和半結構化資訊,以及與圖片和影片等檔案相關聯的中繼資料。

選擇 Firestore 來滿足文件資料庫需求

Firestore 是全代管的文件資料庫,可降低資料庫管理的複雜度。讓您充分發揮 Google Cloud 的強大功能,以及全球可擴充的平台。

無論是建構小型應用程式,還是擴充全球平台,Firestore 的功能都能協助您加快速度,同時維持彈性和效能。

  • 無伺服器架構:Firestore 採用無伺服器架構,因此無須設定或管理任何基礎架構。可自動調度資源,處理資料負載,從零到數百萬個並行連線都能輕鬆應對。
  • 整合 Google Cloud 服務:輕鬆與其他 Google Cloud 服務連結,例如 Cloud FunctionsCloud RunBigQuery。因此,您不必進行複雜的設定,就能建構強大的資料處理和分析管道。
  • 與 MongoDB 相容:使用 MongoDB 驅動程式、工具和程式碼,直接連線至 Firestore。因此,您能輕鬆遷移現有應用程式,或使用熟悉的模式啟動新專案。
  • 即時更新:透過平台內建的即時資料同步功能,讓使用者隨時掌握最新資訊。
  • 全球擴充性:Firestore 可水平擴充,輕鬆因應業務成長,同時確保全球使用者享有低延遲存取體驗。
  • 方便開發人員使用:專注於打造創新功能,不必擔心基礎架構或維護作業。Firestore 的全代管服務可處理繁重的工作。
  • 用量較低時可享免費方案:Firestore 提供慷慨大方的免費方案,非常適合新創公司或小型專案,讓他們在成長過程中擴充規模,且無需預付費用。

Firestore 是 Google Cloud 和 Firebase 的一部分,與 Firebase Auth、BigQuery 和許多其他服務簡易整合,為應用程式提供強大後盾。Firestore 提供各種工具,包括即時協作工具、行動應用程式和企業平台,協助您取得成功。

立即開始使用,低用量可享免費方案,體驗強大、可靠且可擴充的文件資料庫。

透過 Google Cloud 解決業務難題

新客戶可以獲得價值 $300 美元的免費抵免額,盡情試用各項 Google Cloud 功能。

額外資源

  • 什麼是關聯式資料庫:瞭解關聯式資料庫的基本概念,包括如何以資料列和資料欄建立資料結構,以及何時使用這類資料庫才能確保資料同步一致
  • 什麼是 NoSQL 資料庫:瞭解不同類型的 NoSQL 資料庫,例如鍵/值、文件和寬欄儲存庫,並探索這些資料庫如何處理非結構化資料
  • 開始使用 Firestore:按照本指南設定第一個 Firestore 資料庫、新增資料,並開始在 Google Cloud 上建構可擴充的應用程式

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。