Firestore在“数据存储模式”下是否有任何优势“本机模式”

tro*_*tze 5 google-cloud-datastore google-cloud-firestore

Google Cloud Firestore即将取代旧版Google Cloud Datastore。然后,可以选择在“本机模式”或“数据存储模式”下使用Cloud Firestore。前者允许通过常规的Firestore SDK访问Firestore,而后者则允许使用旧的Cloud Datastore SDK(不具有Web / Mobile API)。

我还不熟悉Firestore。我的问题是:除了将内容移植到新的API之外,实际上还有任何在“本机模式”下使用Firestore无法完成的事情,这可以通过旧的Cloud Datastore(或其替代:在“数据存储模式”下使用Firestore完成) )?还是使用“数据存储模式”的其他优势(例如成本)?

如果没有,那么除了使用旧的Cloud Datastore兼容旧代码外,似乎在“数据存储模式”下使用Firestore实际上没有任何优势。

在我的假设是公司的FireStore“数据存储模式”绝对没有好处除了能够使用传统的数据存储API(在成本我说得对不对能够使用新的和公司的FireStore API,包括移动和网络可能更丰富的功能蜜蜂)?

Xav*_*iet 14

即使对于新项目,使用“数据存储模式”也有优势。

我正在为 MySQL 的迁移项目评估 Firestore“数据存储模式”和“本机模式”的两种模式。

一方面,我考虑对一个后端全局存储库使用“数据存储模式”,因为:

  1. 仅服务器端
  2. 对跨所有实体的搜索查询的强烈期望
  3. 对多个属性进行查询和排序
  4. 具有一种根类型和少量二级类型的结构化数据模型
  5. 大量写入且事务要求有限,大量读取与实体组内的投影

另一方面,“本机模式”似乎适合面向特定应用程序的用户的一些要求,因为:

  1. 具有双向同步功能的 Web、iOS、Android、API 接口
  2. 几个偶尔连接的用例
  3. 很少有大型多态对象需要同步和持久化
  4. 主要是对一个属性(父对象)的简单查询

虽然,有一个原因提倡第二个项目使用 Datastore 模式

  1. 具有命名空间的多租户

这两种模式还满足了共同的需求,支持迁移到 NoSQL 技术的决定

  1. 可扩展性
  2. 没有管理员
  3. 可用性
  4. 发展速度

第 2 至 5 项和第 10 项基于特定于数据存储模式的功能,在本机模式下无法实现。项目 6 到 9 特定于本地模式。

更新:2019 年 3 月 21 日

在我的第一个答案中描述的评估六个月后,我的团队同时使用 Firestore(本机)模式和 Datastore 模式。

  • 2个基于Firestore的项目。我们使用了很多集合、子集合和文档的概念,以及数据的不可分割的隔离。我们还在 iOS 和 Android 应用程序中为根据强大的业务和安全规则选择的子集合实施了侦听器,这在 Datastore 中是不可能的。

  • 9 个基于 Datastore 的项目。对于其中的三个 3,我们使用了很多命名空间和种类的概念。我们还使用种类属性的全局索引和服务器端属性的投影,这在 Firestore 中是不可能的。

PS:我们正在考虑开源我们的 Python 库,以便快速开发在 Firestore 和 Datastore 上运行的通用 API。


小智 6

成本。

数据存储区模式下的Firestore与原始数据存储区一样,仅支持键查询和投影查询。这意味着这些查询的结果集计入免费的“ Cloud Firestore小型操作”中。我们每天会累积数十亿次这样的小操作,而没有投影查询实际上将是我们数据存储成本的10倍,这是无法承受的。

由于此功能在Firestore纯模式中不可用-并且还添加了强大的一致性-我们希望它的性能不如原始数据存储中的性能好,但在我们的测试中并非如此。在所有类型的操作中,数据存储模式下的Firestore始终能够为我们的应用程序带来大约两倍的速度。


hgi*_*sac 5

根据官方文档,虽然Cloud Firestore向后兼容Cloud Datastore,但新的数据模型、实时更新以及移动和Web客户端库功能则不然。

数据存储模式下的 Cloud Firestore 使用 Cloud Datastore 系统行为,但访问 Cloud Firestore 的存储层,从而消除了以下 Cloud Datastore 限制:

  • 最终一致性,所有 Cloud Datastore 查询都变得高度一致。
  • 交易不再局限于25个实体组。
  • 对实体组的写入不再限制为每秒 1 次。

数据存储模式会禁用与 Cloud Datastore 不兼容的 Cloud Firestore 功能:

  • 该项目将接受 Cloud Datastore API 请求并拒绝 Cloud Firestore API 请求。
  • 该项目将使用 Cloud Datastore 索引而不是 Cloud Firestore 索引。
  • 您可以在此项目中使用 Cloud Datastore 客户端库,但不能使用 Cloud Firestore 客户端库。
  • Cloud Firestore 实时功能将不可用。
  • 在 GCP 控制台中,数据库将使用 Cloud Datastore 查看器。