选择原生模式或 Datastore 模式

创建新的 Firestore 数据库时,您可以将数据库实例配置为以 Datastore 模式运行,从而使数据库能够向后兼容 Datastore。本页介绍了两种 Firestore 数据库模式(即原生模式Datastore 模式)之间的差异。

原生模式 Firestore

Firestore 是 Datastore 的下一代主要版本,也是对该产品的一次品牌重塑。Firestore 是一个 NoSQL 文档数据库,其设计支持自动扩缩、具备出色的性能,并且易于进行应用开发;它结合了 Datastore 和 Firebase 实时数据库两者各自的优点。

Firestore 引入了一些新的功能,例如:

  • 具有高度一致性的新存储层
  • 集合和文档数据模型
  • 实时更新
  • 移动客户端库和 Web 客户端库

虽然 Firestore 向后兼容 Datastore,但新数据模型、实时更新以及移动和 Web 客户端库功能无法向后兼容。如需访问所有新的 Firestore 功能,您必须使用原生模式 Firestore。

Datastore 模式 Firestore

Datastore 模式 Firestore 遵循 Datastore 系统行为,但使用 Firestore 的存储层,因而摆脱了以下 Datastore 限制:

  • 最终一致性。所有 Datastore 查询都变得高度一致。
  • 事务中的查询不再是祖先查询的必要条件。
  • 事务不再限于 25 个实体组。
  • 对实体组的写入不再限于每秒 1 次。

Datastore 模式会停用与 Datastore 不兼容的 Firestore 功能:

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

自动升级为 Datastore 模式

现有 Datastore 数据库将自动升级为 Datastore 模式 Firestore。需要 Datastore 数据库的新项目应使用 Datastore 模式 Firestore。

价格和位置

原生模式数据库和 Datastore 模式数据库都遵循相同的价格结构,并且位于相同位置。如需详细了解价格和位置,请参阅以下页面:

原生模式 Firestore

Datastore 模式 Firestore

选择数据库模式

创建新的 Firestore 数据库时,必须选择数据库模式。 您不能在同一项目中同时使用原生模式和 Datastore 模式。 选择数据库模式时,建议采用以下方法:

  • 为新的服务器项目使用 Datastore 模式 Firestore。

    借助 Datastore 模式 Firestore,您可以使用成熟的 Datastore 服务器架构,同时还可摆脱基本的 Datastore 限制。Datastore 模式可以自动扩容为每秒数百万次写入。

  • 为新的移动应用和 Web 应用使用原生模式 Firestore。

    Firestore 可为移动和 Web 客户端库提供实时离线功能。原生模式可以自动扩容为数百万个并发客户端。

特性比较

下表比较了两种数据库模式的系统行为:

Firestore
原生模式
Firestore
Datastore 模式
数据模型 以文档和集合的形式整理文档数据库。 以种类和实体组的形式整理实体。
存储层 新存储层始终保持高度一致 新存储层始终保持高度一致
查询和事务
  • 整个数据库保持高度一致的查询
  • 在任意数量的集合中,每个事务最多有 500 个文档。
  • 限制:无投影查询。
  • 摆脱了 Datastore 以前的一致性限制
  • 整个数据库保持高度一致的查询
  • 事务可以访问任意数量的实体组
Datastore v1 API 支持 否,请求会被拒绝
Firestore v1 API 支持 否,请求会被拒绝
实时更新

支持侦听一个文档或一组文档以进行实时更新。

在侦听一个文档或一组文档时,您的客户端会收到有关任何数据更改的通知,并会收到最新的数据集。

不支持
离线数据持久化 移动和 Web 客户端库支持离线数据持久化。 不支持
客户端库 Firestore 客户端库:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS
  • Web
Datastore 客户端库:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
安全
  • Cloud Identity and Access Management (IAM) 管理数据库访问
  • Firestore 安全规则支持移动和 Web 客户端库的无服务器身份验证及授权
Cloud Identity and Access Management (IAM) 管理数据库访问
性能 自动扩容为数百万个并发客户端。每秒最多 10000 次写入。 自动扩容为每秒数百万次写入。
SLA Firestore SLA。 Firestore SLA。
位置
  • 美国(多区域)
  • 欧洲(多区域)
  • 蒙特利尔
  • 洛杉矶
  • 南卡罗来纳
  • 北弗吉尼亚
  • 圣保罗
  • 伦敦
  • 法兰克福
  • 东京
  • 孟买
  • 悉尼
  • 美国(多区域)
  • 欧洲(多区域)
  • 蒙特利尔
  • 洛杉矶
  • 南卡罗来纳
  • 北弗吉尼亚
  • 圣保罗
  • 伦敦
  • 法兰克福
  • 东京
  • 孟买
  • 悉尼
价格 价格结构相同
控制台 Firebase 控制台和 Cloud Console Firestore 查看器 Cloud Console Datastore 查看器
命名空间 不支持 支持命名空间
App Engine 客户端库集成

在 App Engine 标准环境 Python 2.7 和 PHP 5.5 运行时中不受支持

在 App Engine 标准环境 Python 3.7、PHP 7.2、Java 8、Go 和 Node.js 运行时中受支持

在 App Engine 柔性环境的所有运行时中受支持

在所有运行时中都受支持