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

Firebase 提供兩個雲端式文件資料庫,可供客戶存取。我們建議新客戶開始使用 Cloud Firestore:

  • Cloud Firestore建議的企業級 JSON 文件資料庫,受到超過 250,000 名開發人員信賴。適合具有豐富資料模型的應用程式,需要可查詢性、擴充性和高可用性。也具備低延遲的用戶端同步處理與離線資料存取功能。

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

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

回顧之前的重要考量後,您可能需要選擇資料庫。如果您仍在衡量優勢和缺點,本節將說明 Cloud Firestore 和即時資料庫之間的其他差異。

資料模型

即時資料庫和 Cloud Firestore 都是 NoSQL 資料庫。

優先使用 Cloud Firestore 即時資料庫
將資料儲存為文件集合。
  • 簡單的資料輕而易舉,儲存在文件中,這一點和 JSON 非常類似。
  • 在文件內使用子集合,您可以更輕鬆地大規模整理階層式資料。
  • 需要較少去標準化和資料簡化資料。

進一步瞭解 Cloud Firestore 資料模型

以單一大型 JSON 樹狀結構儲存資料。
  • 簡單的資料很容易儲存
  • 大規模整理複雜的階層資料並不容易。

進一步瞭解即時資料庫資料模型

即時與離線支援

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

優先使用 Cloud Firestore 即時資料庫
為 Apple、Android 和網路用戶端提供離線支援。 Apple 和 Android 用戶端的離線支援。

Presence

瞭解客戶何時在線上或離線會很有幫助。Firebase 即時資料庫可以記錄用戶端連線狀態,並在每次用戶端連線狀態變更時提供更新。

優先使用 Cloud Firestore 即時資料庫
原生不支援。透過 Cloud Functions 同步處理 Cloud Firestore 和即時資料庫,您可以建構即時資料庫支援功能,詳情請參閱在 Cloud Firestore 中建構產品的相關說明。 支援在家狀態。

查詢

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

優先使用 Cloud Firestore 即時資料庫
使用複合排序及篩選功能的已建立索引查詢。
  • 您可以在單一查詢中鏈結篩選器,並結合篩選與排序功能。
  • 查詢相當淺層:只會傳回特定集合或集合群組中的文件,不會傳回子集合資料。
  • 查詢必須一律傳回完整文件。
  • 根據預設,查詢會建立索引:查詢效能與結果集大小成正比,而非資料集的大小。
具備有限排序及篩選功能的深度查詢。
  • 查詢可以排序「或」篩選屬性,但不能同時對兩者進行排序。
  • 查詢預設為深層,一律會傳回整個子樹狀結構。
  • 查詢能按任何精細程度存取資料,精細程度可達 JSON 樹狀結構中的個別分葉節點值。
  • 查詢不需要索引。不過,隨著資料集增加,某些查詢的效能會降低。

寫入作業和交易

優先使用 Cloud Firestore 即時資料庫
進階寫入和交易作業。
  • 透過設定和更新作業,以及陣列和數字運算子等進階轉換,寫入資料作業
  • 交易能以不可分割的形式,從資料庫的任何部分讀取及寫入資料。
基本的寫入和交易作業。
  • 透過設定和更新作業寫入資料
  • 交易在特定資料子樹狀結構上以不可分割的形式呈現。

可靠性和效能

優先使用 Cloud Firestore 即時資料庫
Cloud Firestore 是可自動調整資源配置的區域與多區域解決方案。
  • 低延遲解決方案,一般回應時間不超過 30 毫秒。
  • 將資料存放在不同地區的多個資料中心,確保能維持全域擴充性和高可靠性。
  • 適用於全球的區域或多區域設定。
如要進一步瞭解 Cloud Firestore 的效能和可靠性特性,請參閱服務水準協議
即時資料庫是區域性解決方案,
  • 適用於區域設定。資料庫僅限於單一區域內的可用區可用性。
  • 延遲時間極短,一般回應時間不超過 10 毫秒。如要頻繁進行狀態同步處理,這是不錯的選擇。
如要進一步瞭解即時資料庫的效能和可靠性特性,請參閱《服務水準協議》。

運作時間

優先使用 Cloud Firestore 即時資料庫
極高運作時間效能。
  • 一般運作時間效能為 99.999%。
  • 如果可用性是首要之務 (例如電子商務應用程式),請使用 Cloud Firestore。
高效能運作效能。
  • 一般運作時間效能為 99.95%。

擴充性

優先使用 Cloud Firestore 即時資料庫
會自動調度資源。
  • 可完全自動擴充。資源調度限制約為 100 萬個並行連線和每秒 10,000 次寫入。我們預計日後會提高這些上限。
  • 針對個別文件或索引的寫入頻率設有限制
資源調度需要進行資料分割。
  • 在單一資料庫中擴充為大約 200,000 個並行連線和 1,000 次寫入作業。資源調度超出此需求,必須將資料分散在多個資料庫。
  • 個別資料的寫入頻率沒有當地限制。

安全性

優先使用 Cloud Firestore 即時資料庫
結合授權與驗證的非連鎖規則。
  • 讀取及寫入受到 Cloud Firestore 安全性規則保護的行動 SDK 資料。
  • 來自受 Identity and Access Management (IAM) 保護的伺服器 SDK 讀取和寫入作業。
  • 除非您使用萬用字元,否則規則不會循序漸進。
  • 規則可以限制查詢:如果查詢結果可能含有使用者無法存取的資料,整項查詢都會失敗。
分隔授權和驗證的連鎖規則語言。

定價

如需這兩種解決方案,請參閱 Spark 和 Blaze 定價方案

優先使用 Cloud Firestore 即時資料庫
費用主要是依據在資料庫中執行的作業 (讀取、寫入、刪除),以及費率、頻寬和儲存空間降低。

Cloud Firestore 支援 App Engine 專案的每日支出上限,確保您不會超出預算。

進一步瞭解 Cloud Firestore 定價方案

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

進一步瞭解即時資料庫定價方案

使用 Cloud Firestore 和即時資料庫

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

進一步瞭解即時資料庫Cloud Firestore 中的可用功能。

準備好選擇資料庫了嗎?

希望以上比較能協助您瞭解 Firebase 資料庫解決方案。現在我們有助您在 Firebase 專案中新增資料庫。