選擇資料庫:Cloud Firestore 或即時資料庫

Firebase 提供兩種雲端式、用戶端可存取的文件資料庫。建議新客戶從 Cloud Firestore 開始:

  • Cloud Firestore 是建議使用的企業級 JSON 相容文件資料庫,深受超過 60 萬名開發人員信賴。適合用於具有豐富資料模型的應用程式,且這些模型需要查詢功能、擴充性和高可用性。此外,這項服務也提供低延遲用戶端同步和離線資料存取功能。

  • Realtime Database 是傳統的 Firebase JSON 資料庫。適合資料模型簡單、需要簡單查詢和低延遲同步處理,且擴充性有限的應用程式。

還有哪些重要事項需要考量?

思考過上述重要考量後,您可能已準備好選擇資料庫。如果您仍在權衡優缺點,本節將介紹 Cloud Firestore 和 Realtime Database 之間的其他差異。

資料模型

Realtime Database 和 Cloud Firestore 都是 NoSQL 資料庫。

Cloud Firestore [ PREFERRED ] Realtime Database
以文件集合的形式儲存資料。
  • 簡單的資料很容易儲存在文件中,這與 JSON 非常相似。
  • 使用文件中的子集合,可更輕鬆地大規模整理複雜的階層式資料。
  • 需要較少的反正規化和資料扁平化。

進一步瞭解 Cloud Firestore 資料模型。

將資料儲存為一個大型 JSON 樹狀結構。
  • 簡單的資料非常容易儲存。
  • 複雜的階層式資料較難大規模整理。

進一步瞭解 Realtime Database 資料模型。

即時和離線支援

兩者都提供行動優先的即時 SDK,且都支援本機資料儲存空間,可供離線應用程式使用。

Cloud Firestore [ PREFERRED ] Realtime Database
支援 Apple、Android 和網頁用戶端離線使用。 支援 Apple 和 Android 用戶端離線使用。

狀態

瞭解用戶端何時上線或離線,有助於掌握相關資訊。Firebase Realtime Database 可記錄用戶端連線狀態,並在用戶端連線狀態變更時提供更新。

Cloud Firestore [ PREFERRED ] Realtime Database
不支援原生。您可以透過 Cloud Functions 同步處理 Cloud Firestore 和 Realtime Database,進而建構 Realtime Database 的目前狀態支援。請參閱「在 Cloud Firestore 中建構目前狀態」。 支援「在家狀態」功能。

查詢

透過查詢,從任一資料庫擷取、排序及篩選資料。

Cloud Firestore [ PREFERRED ] Realtime Database
使用複合排序和篩選的索引查詢。
  • 您可以在單一查詢中鏈結篩選器,並結合篩選和排序屬性。
  • 查詢為淺層查詢:只會傳回特定集合或集合群組中的文件,不會傳回子集合資料。
  • 查詢一律會傳回完整文件。
  • 查詢預設會建立索引:查詢效能與結果集大小成正比,而與資料集的大小無關。
深度查詢,但排序和篩選功能有限。
  • 查詢可以排序「或」篩選屬性,但不能同時執行這兩項操作。
  • 查詢預設為深度查詢:一律會傳回整個子樹。
  • 查詢可以存取任何精細程度的資料,甚至能存取 JSON 樹狀結構中的個別葉節點值。
  • 查詢不需要索引,但隨著資料集增加,某些查詢的效能會降低。

寫入作業和交易

Cloud Firestore [ PREFERRED ] Realtime Database
進階寫入和交易作業。
  • 透過設定和更新作業,以及陣列和數值運算子等進階轉換,寫入資料作業。
  • 交易可以自動讀取及寫入資料庫任何部分的資料。
基本寫入和交易作業。
  • 透過設定和更新作業寫入資料。
  • 交易在特定資料子樹上不可分割。

可靠性和效能

Cloud Firestore [ PREFERRED ] Realtime Database
Cloud Firestore 是區域和多區域解決方案,可自動調度資源。
  • 低延遲解決方案,一般回應時間不超過 30 毫秒。
  • 將資料儲存在不同區域的多個資料中心,確保全球擴充性和高可靠性。
  • 提供全球區域或多區域設定。
如要進一步瞭解 Cloud Firestore 的效能和可靠性特性,請參閱《服務水準協議》。
Realtime Database 是區域性解決方案。
  • 適用於區域設定。資料庫僅限於區域內的可用區。
  • 延遲時間極低,一般回應時間不超過 10 毫秒。適合用於頻繁同步狀態。
如要進一步瞭解 Realtime Database 的效能和可靠性特性,請參閱《服務水準協議》。

運作時間

Cloud Firestore [ PREFERRED ] Realtime Database
極高的正常運作時間效能。
  • 正常運作時間通常為 99.999%。
  • 如果可用性最重要 (例如電子商務應用程式),請使用 Cloud Firestore。
高運作時間效能。
  • 正常運作時間通常為 99.95%。

擴充性

Cloud Firestore [ PREFERRED ] Realtime Database
自動調度資源
  • 完全自動調度資源。並行連線或整體資料庫寫入/秒速率沒有限制。
  • 對個別文件或索引的寫入速率設有限制。
擴充時需要進行資料分割。
  • 在單一資料庫中,可擴充至約 20 萬個並行連線,以及每秒 1,000 次寫入。如要進一步擴充,則須將資料分散到多個資料庫。
  • 個別資料寫入速率沒有本機限制。

安全性

Cloud Firestore [ PREFERRED ] Realtime Database
結合授權和驗證的非串聯規則。
  • 從受 Cloud Firestore Security Rules 保護的行動 SDK 讀取及寫入資料。
  • 伺服器 SDK 的讀取和寫入作業,由 Identity and Access Management (IAM) 保護。
  • 除非使用萬用字元,否則規則不會重疊。
  • 規則可以限制查詢:如果查詢結果可能包含使用者無權存取的資料,整個查詢就會失敗。
區分授權和驗證的串聯規則語言。

定價

Spark 和 Blaze 定價方案皆提供這兩種解決方案。

Cloud Firestore [ PREFERRED ] Realtime Database
主要依據在資料庫中執行的作業 (讀取、寫入、刪除) 收費,頻寬和儲存空間的費率則較低。

Cloud Firestore 支援每月預算和快訊,避免支出超出預期。

進一步瞭解 Cloud Firestore 定價方案。

僅收取頻寬和儲存空間費用,但費率較高。

進一步瞭解 Realtime Database 定價方案。

同時使用 Cloud Firestore 和 Realtime Database

您可以在同一個 Firebase 應用程式或專案中,同時使用這兩個資料庫。這兩個 NoSQL 資料庫都能儲存相同類型的資料,用戶端程式庫的運作方式也類似。如果您決定在應用程式中同時使用這兩個資料庫,請留意上述差異。

進一步瞭解 Realtime Database 和 Cloud Firestore 提供的功能。

準備好選擇資料庫了嗎?

希望這項比較能協助您決定 Firebase 資料庫解決方案。現在,您可以瞭解如何將資料庫新增至 Firebase 專案。