什麼是文件資料庫?

文件資料庫是 NoSQL 資料庫的一種,與傳統的固定資料表不同,會以 JavaScript 物件標記法 (JSON) 格式儲存、管理及擷取資料。這些「文件」可具備各自的獨特結構,不像 關聯式資料庫使用固定資料表,並以資料列和資料欄呈現。

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

重點摘要

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

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

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

文件資料庫的主要功能與特色

文件資料庫與眾不同,因為其具備一系列獨特的架構特性,旨在支援現代開發模式和資料效率。

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

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

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

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

文件資料庫的主要應用實例

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

  • 內容管理系統 (CMS):管理各種內容,包括網誌文章和產品說明,確保有效的內容傳遞及更新
  • 電子商務平台:為高效能網路商店提供強大支援,處理複雜的產品目錄、使用者帳戶和即時交易
  • 行動和網頁應用程式:打造快速、互動性更高的應用程式,在各種裝置上提供流暢的使用者體驗
  • 遊戲開發:管理玩家資料、遊戲狀態和排行榜,打造身歷其境的遊戲體驗
  • 醫療照護應用程式:安全地儲存及管理敏感的病患資訊,提供有效率且準確的醫療照護服務
  • AI 輔助應用程式:使用可快速演進的資料模型支援 AI,跟上不斷變化的 AI 提示詞

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

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

功能

文件資料庫

鍵/值儲存庫

關聯資料庫

資料格式

複合型、結構化文件

簡單的鍵/值組合

表格式 (資料列和資料欄)

工作彈性

高;每份文件可能不同

高;每列的欄數可能不同

有限;預先定義的架構

查詢

進階,包括巢狀欄位

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

使用 JOIN 進行進階複雜查詢

適用情境

快速開發及資料模型持續進化

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

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

功能

文件資料庫

鍵/值儲存庫

關聯資料庫

資料格式

複合型、結構化文件

簡單的鍵/值組合

表格式 (資料列和資料欄)

工作彈性

高;每份文件可能不同

高;每列的欄數可能不同

有限;預先定義的架構

查詢

進階,包括巢狀欄位

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

使用 JOIN 進行進階複雜查詢

適用情境

快速開發及資料模型持續進化

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

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

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

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

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

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

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

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

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

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

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

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

適用時機:

  • 選擇鍵值儲存庫來處理簡單的資料結構,例如管理使用者工作階段或快取,這類作業需要快速查詢
  • 如果應用程式的資料結構複雜且包含巢狀資料,建議選擇文件資料庫

文件資料庫常見問題

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

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

使用文件資料庫的好處

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

彈性

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

效能

文件資料庫內建索引功能,並提供有效率的資料存取模式,即使處理大型或複雜的資料集,也能快速完成。

擴充性

藉由水平擴充,您可以隨著資料量增加來加入更多伺服器,確保應用程式規模擴大時,效能仍能維持穩定。此外,文件資料庫還能藉由在每個節點增加算力,進行垂直擴充。

開發人員體驗

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

資料多樣性

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

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

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

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

  • 無伺服器架構,價格依佈建量而定:Firestore 採用無伺服器架構,因此無須設定或管理任何基礎架構。可自動擴充資源,處理資料負載,從零到數百萬個並行連線都沒問題。Firestore Enterprise 版則具備無伺服器資料庫的優點,價格與佈建式替代方案相比也非常實惠。
  • 進階查詢功能:Firestore 支援數百種運算子,可組成複雜的可組合查詢管道,包括全文搜尋 (FTS),讓您不只能查詢簡單的文件。
  • 企業級:可用性高達 99.999%,具備符合 ACID 標準的多文件交易、客戶管理加密金鑰 (CMEK)、自動備份,以及時間點復原等功能。
  • 整合 Google Cloud 服務:輕鬆與其他 Google Cloud 服務連結,例如 Cloud FunctionsCloud RunBigQuery。因此,您不必進行複雜的設定,就能建立強大的資料處理和分析管道。
  • 與 MongoDB 相容:使用 MongoDB 驅動程式、工具和程式碼,直接連線至 Firestore。因此,您能輕鬆遷移現有應用程式,或使用熟悉的模式啟動新專案。
  • 即時更新:透過平台內建的即時資料同步功能,讓使用者隨時掌握最新資訊。
  • 全球擴充性:Firestore 可水平擴充,輕鬆因應業務成長,同時確保全球使用者享有低延遲存取體驗。
  • 方便開發人員使用:專注於打造創新功能,不必擔心基礎架構或維護作業。Firestore 的全代管服務可處理繁重的工作。
  • 可使用生成式 AI:透過 Google AI Studio 整合功能,只要輸入簡單的文字提示詞,就能在幾秒內將應用程式上線,並以 Firestore 做為後端資料庫。利用 遠端 MCP 支援,可以安全地將常用的 AI 代理和開發人員工具直接連線至 Firestore。使用 Firestore 向量搜尋LangChainLlamaindex 輕鬆建構生成式 AI 應用程式。使用立即可用的擴充功能,只要按幾下滑鼠,就能整合 Firestore 與熱門 AI 服務,實現自動生成嵌入、翻譯語言、分類圖片等用途。
  • 永久免費方案:Firestore 提供慷慨大方的免費方案,非常適合新創公司或小型專案,讓他們在成長過程中擴充規模,且無需預付費用。

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

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

透過 Google Cloud 解決業務難題

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

其他資源

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

後續行動

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