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

Firebase 提供兩個雲端型、可供用戶端存取的文書資料庫。我們建議新客戶先從 Cloud Firestore 開始:

  • Cloud Firestore建議的企業級 JSON 相容文件資料庫,已獲得超過 25 萬名開發人員的信賴。這類應用程式含有豐富的資料模型,需要具備可查詢性、可擴充性和高可用性。也提供低延遲的用戶端同步和離線資料存取功能。

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

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

考量上述重要事項後,您可能已準備好選擇資料庫。如果您仍然在權衡優缺點,本節會說明 Cloud FirestoreRealtime Database 的其他差異。

資料模型

Realtime DatabaseCloud Firestore 都是 NoSQL 資料庫。

Cloud Firestore [ 建議 ] Realtime Database
將資料儲存為文件集合。
  • 簡單的資料很容易儲存在文件中,這類文件與 JSON 非常相似。
  • 使用文件中的子集合,就能更輕鬆地大規模整理複雜的階層資料。
  • 需要較少去標準化和資料簡化資料。

進一步瞭解 Cloud Firestore 資料模型

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

進一步瞭解 Realtime Database 資料模型

即時與離線支援

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

Cloud Firestore [ 建議 ] Realtime Database
支援 Apple、Android 和網路用戶端的離線功能。 支援 Apple 和 Android 用戶端的離線功能。

Presence

瞭解用戶何時上線或離線,可能會很有幫助。Firebase Realtime Database 可記錄用戶端連線狀態,並在用戶端連線狀態每次變更時提供更新。

Cloud Firestore [ 建議 ] Realtime Database
不支援原生廣告。您可以使用 Cloud Functions 同步處理 Cloud FirestoreRealtime Database,藉此擴充 Realtime Database 對狀態的支援。請參閱「Cloud Firestore 中建立狀態」。 支援在家狀態感應功能。

查詢

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

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

寫入作業和交易

Cloud Firestore [ 建議 ] Realtime Database
進階寫入和交易作業。
  • 透過設定和更新作業,以及陣列和數值運算子等進階轉換,寫入資料作業
  • 交易能以不可分割的形式,從資料庫的任何部分讀取及寫入資料。
基本寫入和交易作業。
  • 透過 set 和 update 作業寫入資料
  • 交易在特定資料子樹狀結構中是不可分割的。

可靠性和效能

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

運作時間

Cloud Firestore [ 建議 ] Realtime Database
極高的正常運作效能。
  • 一般正常運作時間為 99.999%。
  • 如果可用性是最重要的考量因素 (例如在電子商務應用程式中),請使用 Cloud Firestore
高可用性效能。
  • 一般運作時間表現為 99.95%。

擴充性

Cloud Firestore [ 建議 ] Realtime Database
會自動調度資源。
  • 可完全自動調度資源。擴充限制約為 100 萬個並行連線和 10,000 個寫入/秒。我們預計日後會提高這些限制。
  • 針對個別文件或索引的寫入頻率設有限制
擴充需要分割。
  • 在單一資料庫中,可擴充至約 200,000 個同時連線和 1,000 個寫入/秒。資源調度超出此需求,必須將資料分散在多個資料庫。
  • 個別資料寫入率沒有本地限制。

安全性

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

定價

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

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

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

進一步瞭解 Cloud Firestore 定價方案

系統只會針對頻寬和儲存空間計費,但費率較高。

進一步瞭解 Realtime Database 定價方案

使用 Cloud FirestoreRealtime Database

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

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

準備選擇資料庫了嗎?

希望這份比較資料能協助您選擇 Firebase 資料庫解決方案。接下來,您可以瞭解如何在 Firebase 專案中新增資料庫。