如何解决通过 Firestore 将 BigQuery 中的数据公开给移动/网络应用
我正在寻找一种简单的方法(当然具有良好的性能)来将我的 BigQuery 表中的数据公开给网络应用程序。
当前正在运行的解决方案是使用 Cloud Functions 和 Firestore(在本机模式下)在 BigQuery 中公开数据。实现就像 - 一旦将数据写入最终的大查询表,我们就会触发云函数(每次提交 500 条记录)来更新我们最终 Firestore 表中的数据。 firestore 表最终暴露给 App/Web 客户端。
而且,为了避免与 Cloud Functions 相关的超时问题,我们将整个数据集分成多个批次,每个 Cloud Functions 实例将仅处理单个批次的记录。
但在上线后不久,由于我们按顺序触发 Cloud Function 实例,我们遇到了写入的可扩展性问题。
提高性能的一种简单方法可能是从云函数内部进行并行写入,但同样根据 Firestore 文档,对集合执行超过 1000 次/秒的写入会降低性能。所以最终我们通过这种方法获得的性能提升可能是最小的。在我们的例子中,我们只有一个集合。
这里有人有处理针对 Firestore 的大量写入和读取的经验吗?数据存储模式下的 Firestore 可用于大量写入,但读取延迟如何?
此外,我正在考虑将 BigTable 用于此目的(最终一致性对我们来说可能没问题),但使用 bigtable 可能会添加额外的层来公开数据,可能是通过 Web 服务。
我们预计数据大小仅为 GB 左右。
PS :我不需要 Firestore 提供的离线功能,选择 Firestore 的原因只是为了便于开发。
解决方法
根据您分享的信息,Firestore 似乎不是您将一次添加的数据量的合适产品选择,此外,如果我们谈论的是 TB 级数据,那么成本可能会高于替代方案,我认为是这种情况。
一般而言,出于定价原因,不建议将 Firestore 用于数据密集型应用或写入过多的应用,因为读取比写入便宜得多。
我个人会为这种情况选择 Big Table,原因如下:
- 支持具有高吞吐量的应用。
- 易于扩展,同时不会损失性能或实例停机时间。
- 如果与 Big Query 保持在同一地区或区域,则将数据迁移到 Big Table 不会产生额外费用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。