Firebase 提供兩種基於雲、客戶端可訪問的數據庫解決方案,支持實時數據同步:
Cloud Firestore是 Firebase 用於移動應用程序開發的最新數據庫。它以 Realtime Database 的成功經驗為基礎,採用全新、更直觀的數據模型。 Cloud Firestore 還具有比實時數據庫更豐富、更快的查詢和擴展性。
Realtime Database是 Firebase 的原始數據庫。對於需要跨客戶端實時同步狀態的移動應用程序,這是一種高效、低延遲的解決方案。
Firebase 推薦哪個數據庫?
您對數據庫解決方案的選擇將取決於許多因素,但當涉及到某些功能時,我們可以就哪個數據庫適合您提出建議。
兩種解決方案都提供:
- 客戶端優先的 SDK,無需部署和維護服務器
- 實時更新
- 免費套餐,然後按使用量付費
關鍵考慮因素
除了兩個數據庫共有的重要核心功能外,請考慮下面列出的任何或所有註意事項將如何影響您的應用程序的成功。
數據庫的作用 | 我的應用程序使用數據庫來... 主要是同步數據,有基本的查詢。 如果您不需要高級查詢、排序和交易,我們推薦實時數據庫。 高級查詢、排序和交易。 如果您需要與數據進行複雜的交互,例如在電子商務應用程序中,我們建議使用Cloud Firestore 。 |
數據操作 | 我的應用程序的數據庫使用情況看起來像...... 幾 GB 或更少的頻繁更改的數據。 如果您的應用程序將發送微小的更新流,例如在數字白板應用程序中,我們建議使用實時數據庫。 數百 GB 到 TB 的數據被讀取的次數遠遠多於更改的次數。 對於非常大的數據集,並且經常需要批量操作時,我們推薦Cloud Firestore 。 |
數據模型 | 我更喜歡將我的數據結構化為... 一個簡單的 JSON 樹。 對於 JSON 非結構化數據,我們推薦實時數據庫。 文檔組織成集合。 對於結構化文檔和集合,我們推薦Cloud Firestore 。 |
可用性 | 我的可用性需求是... 99.999% 的極高正常運行時間保證。 如果可用性至關重要,例如在電子商務應用程序中,我們建議使用Cloud Firestore 。 保證至少 99.95% 的正常運行時間。 如果可接受非常高但不是關鍵的可用性,我們建議使用Cloud Firestore或Realtime Database 。 |
離線查詢本地數據 | 我的應用程序需要在連接受限或沒有連接的設備上執行查詢...... 頻繁地。 對於用戶離線時對本地數據的複雜查詢功能,我們推薦Cloud Firestore 。 很少或從不。 如果您希望您的用戶始終在線,我們建議使用 Cloud Firestore或Realtime Database 。 |
數據庫實例數 | 在我的個人項目中,我需要使用... 許多數據庫,例如每個主要客戶的數據庫。 由於它允許您將多個數據庫添加到單個 Firebase 項目,因此我們推薦Realtime Database 。 只是一個數據庫。 如果您需要單個數據庫,我們建議使用Cloud Firestore或Realtime Database 。 |
還有哪些其他重要事項需要考慮?
在考慮了前面的關鍵考慮因素之後,您可能已準備好選擇數據庫。如果您仍在權衡利弊,本部分將介紹 Cloud Firestore 和實時數據庫之間的其他差異。
數據模型
Realtime Database 和 Cloud Firestore 都是 NoSQL 數據庫。
實時數據庫 | 雲端 Firestore |
---|---|
將數據存儲為一棵大型 JSON 樹。
詳細了解實時數據庫數據模型。 | 將數據存儲為文檔集合。
詳細了解Cloud Firestore 數據模型。 |
實時和離線支持
兩者都具有移動優先的實時 SDK,並且都支持離線就緒應用程序的本地數據存儲。
實時數據庫 | 雲端 Firestore |
---|---|
離線支持 Apple 和 Android 客戶端。 | 對 Apple、Android 和 Web 客戶端的離線支持。 |
在場
了解客戶端何時在線或離線可能很有用。 Firebase 實時數據庫可以記錄客戶端連接狀態,並在每次客戶端連接狀態發生變化時提供更新。
實時數據庫 | 雲端 Firestore |
---|---|
支持存在。 | 本機不支持。您可以通過使用 Cloud Functions 同步 Cloud Firestore 和實時數據庫來利用實時數據庫對在線狀態的支持。請參閱在 Cloud Firestore 中建立存在。 |
查詢
通過查詢從任一數據庫中檢索、排序和過濾數據。
實時數據庫 | 雲端 Firestore |
---|---|
具有有限排序和過濾功能的深度查詢。
| 具有復合排序和過濾的索引查詢。
|
寫入和事務
實時數據庫 | 雲端 Firestore |
---|---|
基本的寫入和事務操作。 | 高級寫入和事務操作。 |
可靠性和性能
實時數據庫 | 雲端 Firestore |
---|---|
實時數據庫是一種區域性解決方案。
| Cloud Firestore 是一種區域和多區域解決方案,可自動擴展。
|
可擴展性
實時數據庫 | 雲端 Firestore |
---|---|
縮放需要分片。
| 縮放是自動的。
|
安全
實時數據庫 | 雲端 Firestore |
---|---|
將授權和驗證分開的級聯規則語言。 | 結合授權和驗證的非級聯規則。
|
價錢
這兩種解決方案都可以通過Spark 和 Blaze 定價計劃獲得。
實時數據庫 | 雲端 Firestore |
---|---|
僅對帶寬和存儲收費,但費率更高。 閱讀有關實時數據庫定價計劃的更多信息。 | 主要對在您的數據庫中執行的操作(讀取、寫入、刪除)收費,並且以較低的費率對帶寬和存儲收費。 Cloud Firestore 支持 App Engine 項目的每日支出限制,以確保您不會超出您可以接受的成本。 閱讀有關Cloud Firestore 定價計劃的更多信息。 |
使用 Cloud Firestore 和實時數據庫
您可以在同一個 Firebase 應用或項目中使用這兩個數據庫。兩個 NoSQL 數據庫都可以存儲相同類型的數據,並且客戶端庫以類似的方式工作。如果您決定在您的應用程序中使用這兩個數據庫,請記住上面概述的差異。
詳細了解實時數據庫和Cloud Firestore中可用的功能。
準備好選擇數據庫了嗎?
希望這種比較能幫助您確定 Firebase 數據庫解決方案。現在您可以學習如何將數據庫添加到您的 Firebase 項目中。
- 對於Cloud Firestore ,請查看Cloud Firestore 入門。
- 對於實時數據庫,請閱讀適用於您的平台的入門主題: Apple 、 Android 、 C++ 、 Unity 、 Web或REST 。