Cloud Firestore
这是一种基于 Google Cloud 基础设施构建的灵活且可扩容的 NoSQL 云端数据库,可以使用它来存储和同步用于客户端及服务器端开发的数据。
Cloud Firestore 是一种灵活且可扩容的数据库,适用于在 Firebase 和 Google Cloud 上进行移动、Web 和服务器开发。与 Firebase Realtime Database 一样,它可以通过实时监听器使您的数据在各个客户端应用之间保持同步,并为移动和 Web 应用提供离线支持,帮助您构建无论网络延迟时间或互联网连接状况如何都能快速响应的应用。Cloud Firestore 还提供与其他 Firebase 和 Google Cloud 产品(包括 Cloud Functions)的无缝集成。
主要功能
灵活性 | Cloud Firestore 数据模型支持灵活的分层数据结构。将您的数据存储在文档中,并整理成集合。文档中不仅可以包含子集合,还可以包含复杂的嵌套对象。 |
表达能力出色的查询 | 在 Cloud Firestore 中,您可以使用查询来检索特定的个别文档,或者检索某个集合中与查询参数匹配的所有文档。您的查询可以包含多个链式过滤条件,还可以将过滤和排序功能结合使用。默认情况下系统会为查询编制索引,所以查询性能与结果集的大小(而不是数据集的大小)成比例。 |
实时更新 | 与 Realtime Database 一样,Cloud Firestore 也使用数据同步功能来更新所有已连接设备上的数据。但是,它也可以高效地进行简单的一次性提取式查询。 |
离线支持 | Cloud Firestore 会缓存您的应用正在使用的数据,因此,即使在设备处于离线状态时,该应用也可以写入、读取、监听和查询数据。当设备恢复在线状态时,Cloud Firestore 会将所有本地更改同步到 Cloud Firestore。 |
可扩容设计 | Cloud Firestore 可让您充分利用 Google Cloud 强大的基础架构:自动多区域数据复制、强大的一致性保证、原子批量操作以及真正的事务支持。我们设计 Cloud Firestore 的宗旨就是为了应对大型应用中棘手的数据库工作负载。 |
工作原理
Cloud Firestore 是一种托管在云端的 NoSQL 数据库,Apple、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、Apple 平台和 JavaScript 的 Firebase Authentication 和 Cloud Firestore 安全规则,或适用于服务器端编程语言的 Identity and Access Management (IAM),为 Cloud Firestore 中的数据访问提供保护。
实现流程
集成 Cloud Firestore SDK | 通过 Gradle、CocoaPods 或脚本添加方式快速添加客户端。 | |
保护您的数据 | 对于移动/Web 开发和服务器开发,分别使用 Cloud Firestore 安全规则和 Identity and Access Management (IAM) 来保护您的数据。 | |
添加数据 | 在您的数据库中创建文档和集合。 | |
获取数据 | 创建查询或使用实时监听器从数据库中检索数据。 |
后续步骤
- Cloud Firestore 使用入门 - 设置您的数据库,然后添加数据并开始读取这些数据。
- 详细了解 Cloud Firestore 数据模型。
- 了解 Realtime Database 与 Cloud Firestore 之间的差异。