選擇一個數據庫:Cloud Firestore 或實時數據庫

Firebase 提供兩種基於雲的、客戶端可訪問的數據庫解決方案,支持實時數據同步:

  • 雲計算公司的FireStore火力地堡的最新移動應用開發數據庫。它建立在實時數據庫的成功基礎上,提供了一個新的、更直觀的數據模型。 Cloud Firestore 還具有比實時數據庫更豐富、更快的查詢和擴展能力。

  • 實時數據庫是火力地堡的原始數據庫。對於需要跨客戶端實時同步狀態的移動應用程序,這是一種高效、低延遲的解決方案。

Firebase 推薦哪個數據庫?

您對數據庫解決方案的選擇將取決於許多因素,但是當涉及到某些功能時,我們可以就哪種數據庫適合您提出建議。

兩種解決方案都提供:

  • 客戶端優先的 SDK,無需部署和維護服務器
  • 實時更新
  • 免費套餐,然後按使用量付費

關鍵考慮因素

除了兩個數據庫共有的重要核心功能之外,請考慮下面列出的任何或所有註意事項將如何影響您的應用程序的成功。

數據庫的作用
我的應用程序使用數據庫...
主要同步數據,基本查詢。
如果你不需要先進的查詢,排序和交易,我們建議實時數據庫
高級查詢、排序和事務。
如果您需要使用您的數據的複雜的相互作用,例如,在電子商務應用程序,我們建議雲公司的FireStore。
數據操作
我的應用程序的數據庫使用情況看起來像...
幾 GB 或更少的頻繁更改的數據。
如果您的應用程序將被發送微小的更新,如在數字白板的應用程序流,我們建議實時數據庫
數百 GB 到 TB 的數據讀取次數遠多於更改次數。
對於非常大的數據集,並且當需要頻繁使用批處理操作,我們建議雲公司的FireStore。
數據模型
我更喜歡將我的數據結構化為...
一個簡單的 JSON 樹。
對於JSON非結構化數據,我們建議實時數據庫
文檔組織成集合。
對於結構化文檔和收藏,推薦雲公司的FireStore。
可用性
我的可用性需求是...
99.999% 的極高正常運行時間保證。
如果可用性是至關重要的,例如,在電子商務應用程序,我們建議雲公司的FireStore。
保證至少 99.95% 的正常運行時間。
當非常高的,但不是關鍵的可用性是可以接受的,我們建議無論是雲公司的FireStore實時數據庫
本地數據離線查詢
我的應用程序需要在連接受限或沒有連接的設備上執行查詢...
頻繁地。
有關本地數據複雜的查詢功能,當用戶處於離線狀態,我們建議雲公司的FireStore。
很少或從不。
如果你希望你的用戶始終在線,我們推薦雲公司的FireStore實時數據庫
數據庫實例數
在我的個人項目中,我需要使用...
許多數據庫,例如每個主要客戶的數據庫。
因為它可以讓你添加多個數據庫到一個單一的火力地堡的項目,我們建議實時數據庫
只是一個數據庫。
如果你需要一個單一的數據庫,我們建議您雲公司的FireStore實時數據庫

還有哪些重要的事情需要考慮?

想著以前的關鍵因素之後,你可能準備選擇一個數據庫。如果您仍在權衡利弊,本節將介紹 Cloud Firestore 和實時數據庫之間的其他差異。

數據模型

實時數據庫和 Cloud Firestore 都是 NoSQL 數據庫。

實時數據庫雲防火牆
將數據存儲為一棵大型 JSON 樹。
  • 簡單的數據很容易存儲。
  • 複雜的分層數據更難大規模組織。

了解更多關於實時數據庫的數據模型

將數據存儲為文檔集合。
  • 簡單的數據很容易存儲在文檔中,這與 JSON 非常相似。
  • 使用文檔中的子集合,可以更輕鬆地大規模組織複雜的分層數據。
  • 需要較少的非規範化和數據扁平化。

了解更多關於雲計算公司的FireStore數據模型

實時和離線支持

兩者都具有移動優先的實時 SDK,並且都支持離線應用程序的本地數據存儲。

實時數據庫雲防火牆
對 iOS 和 Android 客戶端的離線支持。對 iOS、Android 和 Web 客戶端的離線支持。

在場

了解客戶端何時在線或離線會很有用。 Firebase 實時數據庫可以記錄客戶端連接狀態並在每次客戶端連接狀態發生變化時提供更新。

實時數據庫雲防火牆
支持存在。本地不支持。您可以通過使用 Cloud Functions 同步 Cloud Firestore 和實時數據庫來利用實時數據庫對狀態的支持。見雲構建的FireStore存在

查詢

通過查詢從任一數據庫中檢索、排序和過濾數據。

實時數據庫雲防火牆
深查詢與限制排序和過濾功能
  • 查詢可以排序屬性過濾器,但不能同時使用。
  • 默認情況下查詢是深的:它們總是返回整個子樹。
  • 查詢可以以任何粒度訪問數據,下至 JSON 樹中的單個葉節點值。
  • 查詢不需要索引;但是,某些查詢的性能會隨著數據集的增長而降低。
索引查詢與化合物排序和過濾
  • 您可以在單個查詢中鏈接過濾器並結合過濾和排序屬性。
  • 查詢很淺:它們只返回特定集合或集合組中的文檔,不返回子集合數據。
  • 查詢必須始終返回整個文檔。
  • 默認情況下對查詢進行索引:查詢性能與結果集的大小成正比,而不是與數據集的大小成正比。

寫入和交易

實時數據庫雲防火牆
基本的寫入和事務操作。
  • 寫入數據通過設置和更新操作。
  • 交易是在一個特定的數據子樹原子。
高級寫入和事務操作。
  • 寫入數據的操作通過設置和更新操作以及先進的轉換,如陣列和數字運算符。
  • 交易可以原子閱讀並從數據庫中的任何部分寫入數據。

可靠性和性能

實時數據庫雲防火牆
實時數據庫是一個區域解決方案。
  • 在區域配置中可用。數據庫僅限於區域內的區域可用性。
  • 極低的延遲,頻繁狀態同步的理想選擇。
了解更多關於在實時數據庫的性能和可靠性特性服務水平協議
Cloud Firestore 是一個區域和多區域解決方案,可自動擴展。
  • 將您的數據存放在不同區域的多個數據中心,確保全球可擴展性和強大的可靠性。
  • 在世界各地的區域或多區域配置中可用。
了解更多關於雲公司的FireStore性能和可靠性特性服務水平協議

可擴展性

實時數據庫雲防火牆
擴展需要分片。
  • 在單個數據庫中擴展到大約 200,000 個並發連接和 1,000 次寫入/秒。超出此範圍需要跨多個數據庫分片您的數據。
  • 對單個數據的寫入速率沒有本地限制。
縮放是自動的。
  • 完全自動縮放。目前,擴展限制約為 100 萬個並發連接和 10,000 次寫入/秒。我們計劃在未來增加這些限制。
  • 限制的寫速率個別文件或索引。

安全

實時數據庫雲防火牆
將授權和驗證分開的級聯規則語言。結合授權和驗證的非級聯規則。

價錢

這兩種解決方案都可以在Spark和火焰的定價計劃

實時數據庫雲防火牆
收費僅適用於帶寬和存儲,而是以更高的速率。

了解更多關於實時數據庫的定價計劃

收費主要是對運營中的數據庫(讀,寫,刪除)進行,並以較低的速度,帶寬和存儲。

雲公司的FireStore支持每日消費限額為App Engine的項目,以確保您不要超過你舒服的成本。

了解更多關於雲計算公司的FireStore的定價計劃

使用 Cloud Firestore 和實時數據庫

您可以在同一個 Firebase 應用或項目中使用這兩個數據庫。兩個 NoSQL 數據庫都可以存儲相同類型的數據,並且客戶端庫以類似的方式工作。請記住,如果你決定上述的差異在您的應用程序中使用這兩個數據庫

了解更多關於提供這兩個功能的實時數據庫雲公司的FireStore

準備好選擇數據庫了嗎?

希望這種比較有助於您確定 Firebase 數據庫解決方案。現在,您可以了解如何將數據庫添加到 Firebase 項目中。