【发布时间】:2021-06-19 04:57:52
【问题描述】:
寻找有关如何在云存储中动态构建文件的示例。以下是我的用例:
- Java 应用程序将查询大查询以获取数据
- 大查询使用分页,分页拉取数据
- 从 BQ 获得数据后,会将每个块保存在云存储中。
- 上传所有块后,完成文件上传。
这里的挑战是云存储文件是不可变的,所以一旦你在 GCS 中创建了对象,你就不能再重新打开它,除非你覆盖同一个文件。 尝试使用流媒体和resumable upload 功能进行探索,根据我的理解,它需要在上传之前准备好文件。
如果这是不可能的,我现在唯一的选择是将每个块上传为不同的文件,并使用云存储组合功能将这些块合并到一个文件中。这是非常昂贵的,因为您需要向 GCS 创建多个请求才能完成一个文件。
【问题讨论】:
-
为什么您认为由多个部分组成一个 Cloud Storage 对象“成本很高”?那是最好的方法。 10,000 次 A 类 API 操作的成本是 5 美分。
-
@JohnHanley 基于 github 中的此评论,github.com/googleapis/gcs-resumable-upload/issues/…
-
管理定价很重要。试图节省 5/1000 美分,然后在软件工程上花费数千美元来实现这些节省。从技术上讲,对于大于几百兆字节的文件,使用对象组合远优于单个多部分上传。
-
是的,定价对我们来说非常重要,因为有大量用户试图访问我们的应用程序并每次执行此操作都会产生复合成本。同意,最好以较小的部分上传,而不是在一个上传请求中删除整个文件。
标签: java google-cloud-platform google-cloud-storage