java - 在 Java 中的 App Engine 上复制 blobstore 实体的最佳方法是什么?

标签 java google-app-engine blobstore

这是我们的简单用例:用户 2 想要将用户 1 的文档复制到我们应用程序中他或她自己的存储库中。应该很简单吧?我们需要做的就是在 blobstore 中创建第二个相同的 blob,并返回我们可以与 user2 关联的 key 。我们一定在这里遗漏了一些东西。看来 App Engine blob store 的主要功能是处理从浏览器上传和下载到浏览器的 blob,而发起服务器端的简单复制操作并不是那么简单。

明显的解决方案似乎是在 java 中使用实验性文件 api,但没有爱。它一直有效,直到你的文件大小超过 MB 左右,然后它失败了,有点不可预测。当我们只需要在存储层中制作一个副本时,将其全部读入服务器层似乎也很愚蠢。此外,我们将实验性功能应用到生产环境中的可能性很小,尽管不是零。

关于我们环境的一些信息:该应用程序是用 Java 编写的,我们使用的是 blobstore,而不是云存储,并且现在致力于它。我们是一个小型部门团队,想证明 App Engine 是一个很好用的平台,但是这个平台让我们感到难过。 S3 使这变得非常简单,我们在这里是否遗漏了一些非常愚蠢的东西?

最佳答案

我们最终放弃了使用文件 api 制作 blob 的编程副本并按照 Kalle 在他的评论中建议的引用的想法,并创建了一个新的外部参照实体来存储有关副本和原始文件的信息。删除图像或文件时,我们检查 xfef 实体的引用并删除指向该图像/文件的实体(即,如果删除的图像/文件是从另一个图像/文件复制而来的)。如果我们根本找不到任何外部参照,我们将删除 blob 本身。我们不喜欢留下孤立的 blob 对隐私/合规性的影响,即使存储很便宜,但每 $$$ 都有帮助。可以这么说,我们也喜欢保持房子干净的想法。

关于java - 在 Java 中的 App Engine 上复制 blobstore 实体的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258307/

相关文章:

java - 示例留言簿 GAE 项目 - 'Plugin execution not covered by lifecycle configuration'

google-app-engine - 为什么我在管理面板中同时看到 Blobstore 和数据存储查看器?

java - 在 java 1.8 上运行 javafx 应用程序

java - 如果 session 过期,如何重定向到登录页面?

java - 安卓系统应用

java - 使用 HTML5 多文件输入将多张图像上传到 GAE Blobstore

python - 如何使用实验性 API 将大文件写入 Blobstore?

java - Java限制文件大小的方法

java.lang.Long 无法转换为 java.lang.Integer JPA GAE 和枚举

google-app-engine - 以编程方式修改 Google App Engine 中的 cron 计划