我一直在使用Cloud Firestore构建数据库,因为这是最容易实现的。但是,Firestore 的查询功能不足以满足我想要构建的功能,主要是因为它无法处理多个字段上的查询不等式。我需要一个 SQL 数据库。
我设置了一个Google Cloud SQL实例。集成比Firebase困难得多,Firebase只需要添加一个Cocoapods Pod。根据我的研究,看起来我需要设置一个Cloud SQL代理,尽管如果有更简单的连接方法,我很高兴听到它。
从本质上讲,我需要一种让 iOS 上的客户端读取和写入 SQL 数据库的方法。云SQL似乎是最好,最具可扩展性的选择(尽管我愿意听到易于实现的替代方案(。
你可能不希望将应用程序配置为依赖于直接连接到 SQL 数据库。Firest是一个高度可扩展的数据库,可以处理数千个连接 - MySQL和Postgres不能很好地扩展。
相反,应考虑构造一个简单的前端服务,该服务可用于查询数据库并返回格式化结果。以这种方式构建有多种好处,包括能够进一步优化或分发查询。Google AppEngine和Google Cloud Functions都可以用来快速建立这样的服务,并且都提供了与Cloud SQL的简单连接选项。
我发现使用 Firestore 进行查询最好围绕您的前端需求进行设计。使用嵌套子集合,ref 属性或文档/集合 ID 关系可以获取前端所需的大部分内容。
您还可以使用以大多数主要语言编写的Firebase Functions,这些函数对Cloud SQL,Spanner或任何其他GCP数据库实例执行无状态事务。
或者,您可以将容器映像部署到 Google Container Registry,并轻松部署到 Kubernetes Engine、Compute Engine 或 Cloud Run。每个都有权衡和优势。
使用 Firestore 的一个优点是可以轻松地将用户与身份验证 {uid} 绑定;保护后端的规则;前端上基于角色的权限的自定义声明,以及以极低延迟访问实时流作为可观察量。