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

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

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

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

還有其他重要事項需要注意嗎?

考量過上述重點後,您可能已準備好選擇資料庫。如果您仍在評估優缺點,本節將說明 Cloud FirestoreRealtime Database 的其他差異。

資料模型

Realtime DatabaseCloud 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 FirestoreRealtime 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
系統會自動調整資源配置。
  • 完全自動擴充。擴充限制約為 100 萬個並行連線,以及每秒 10,000 次寫入作業。我們預計日後會提高這些限制。
  • 對個別文件或索引的寫入速率設有限制
如要擴充,必須進行分片。
  • 單一資料庫最多可擴充至約 20 萬個並行連線,以及每秒 1,000 次寫入作業。如要進一步擴充,必須將資料分片到多個資料庫。
  • 對個別資料寫入的速率沒有本地限制。

安全性

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

定價

這兩種解決方案都適用於 Spark 和 Blaze 定價方案

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

Cloud Firestore 支援為 App Engine 專案設定每日支出上限,確保您不會超出可接受的費用。

進一步瞭解Cloud Firestore定價方案

僅針對頻寬和儲存空間計費,但費率較高。

進一步瞭解 Realtime Database 定價方案

使用 Cloud FirestoreRealtime Database

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

進一步瞭解 Realtime DatabaseCloud Firestore 提供的功能。

準備好選擇資料庫了嗎?

希望這項比較有助您決定要使用哪種 Firebase 資料庫解決方案。 現在,您可以瞭解如何將資料庫新增至 Firebase 專案。