Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Cloud Firestore

使用我们的灵活且可扩缩的 NoSQL 云端数据库存储和同步数据,以便进行客户端及服务器端的开发。

Cloud Firestore 是一种灵活且可扩缩的数据库,适用于在 Firebase 和 Google Cloud Platform 上进行移动、Web 和服务器开发。与 Firebase Realtime Database 一样,它可以通过实时侦听器使您的数据在各个客户端应用之间保持同步,并为移动和 Web 应用提供离线支持,以帮助您构建无论网络延迟时间或互联网连接状况如何都能快速响应的应用。Cloud Firestore 还提供与其他 Firebase 和 Google Cloud 产品(包括 Cloud Functions)的无缝集成。

开始

主要功能

灵活性 Cloud Firestore 数据模型支持灵活的分层数据结构。将您的数据存储在文档中,并整理成集合。文档中不仅可以包含子集合,还可以包含复杂的嵌套对象。
富有表现力的查询 在 Cloud Firestore 中,您可以使用查询来检索特定的个别文档,或者检索某个集合中与查询参数匹配的所有文档。您的查询可以包含多个链式过滤条件,还可以将过滤和排序功能结合使用。默认情况下系统会为查询编制索引,所以查询性能与结果集的大小(而不是数据集的大小)成比例。
实时更新 与实时数据库一样,Cloud Firestore 也使用数据同步功能来更新所有已连接设备上的数据。但是,它也可以高效地进行简单的一次性提取式查询。
离线支持 Cloud Firestore 会缓存您的应用正在使用的数据,因此,即使在设备处于离线状态时,该应用也可以写入、读取监听和查询数据。当设备恢复在线状态时,Cloud Firestore 会将所有本地更改同步到 Cloud Firestore。
采用可伸缩设计 Cloud Firestore 为您提供了 Google Cloud 强大的基础架构所具备的最棒功能:自动多区域数据复制、强大的一致性保证、原子批量操作以及真正的事务支持。我们设计 Cloud Firestore 的宗旨就是处理来自全球规模最大应用的最棘手的数据库工作负载。

工作原理

Cloud Firestore 是一种托管在云端的 NoSQL 数据库,iOS、Android 和 Web 应用可以直接通过原生 SDK 访问它。除了 REST API 和 RPC API 之外,在原生 Node.js、Java、Python、Unity、C++ 和 Go SDK 中也可以使用 Cloud Firestore。

按照 Cloud Firestore 的 NoSQL 数据模型,您要将数据存储在包含映射到值的字段的文档中。这些文档存储在集合中,而集合是文档的容器,可用于整理数据和构建查询。文档支持许多不同的数据类型,包括简单的字符串和数值以及复杂的嵌套对象。您还可以在文档中创建子集合,并构建能够随数据库增长而扩展的分层数据结构。Cloud Firestore 数据模型可支持最适合您的应用的任何数据结构。

另外,Cloud Firestore 中的查询高效、灵活并且表达清晰。创建浅查询可以在文档级别检索数据,而无需检索整个集合或任何嵌套的子集合。您可以为查询添加排序、过滤和数量限制功能,或添加游标以对结果进行分页。要想使您应用中的数据保持最新,但又不想在每次更新时都检索整个数据库,可添加实时监听器。将实时监听器添加到您的应用后,每当客户端应用监听的数据发生更改时,系统就会通过一个数据快照通知您,并且只检索新的更改。

借助适用于 Android、iOS 和 JavaScript 的 Firebase 身份验证和 Cloud Firestore 安全规则,或适用于服务器端编程语言的 Identity and Access Management (IAM),对 Cloud Firestore 中的数据访问行为进行防护。

实现方法

集成 Cloud Firestore SDK 通过 Gradle、CocoaPods 或脚本添加方式快速添加客户端。
保护您的数据 对于移动/网页开发,使用 Cloud Firestore 安全规则来保护您的数据;对于服务器开发,使用 Identity and Access Management (IAM) 来保护您的数据。
添加数据 在您的数据库中创建文档和集合。
获取数据 创建查询或使用实时侦听器从数据库中检索数据。

后续步骤