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 项目,因此我们建议使用实时数据库。 只是一个数据库。 如果您需要单个数据库,我们建议使用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 。