java - 如何并行更新 400,000 个 GAE 数据存储实体?

标签 java google-app-engine parallel-processing google-cloud-datastore

我有 400,000 个某种类型的实体,我想对每个实体执行一个简单的操作(添加属性)。我无法连续处理它们,因为这需要很长时间。我不想使用 MapReduce 库,因为它很复杂且令人难以承受。

基本上,我想在任务队列上创建 100 个任务,每个任务采用约 4,000 个实体的一段,并对每个实体执行此操作。当所有任务并行执行时,希望处理所有 400k 个实体不会花费超过几分钟的时间。

但是,我不确定如何使用 GAE 查询来执行此操作。我的实体具有由我的应用程序生成的“230498234-com.example”形式的字符串 ID。我希望每个任务基本上都询问数据存储,例如“请给我实体#200,000-#204,000”,然后对它们进行一一操作。

这可能吗?如何以这种方式划分数据存储?

最佳答案

这对于 MapReduce 来说是一项完美的工作 ( https://developers.google.com/appengine/docs/python/dataprocessing/ )。刚开始学习可能会很困难,但一旦掌握了,您就会爱上它。

您还可以考虑在下次保存条目时延迟添加该属性,前提是没有该属性与查询中具有默认值相同。

关于java - 如何并行更新 400,000 个 GAE 数据存储实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638552/

相关文章:

java - 在 Struts2 中使用 prepare() 方法在 action 类中执行 CRUD 操作

java - java中的空格

testing - 从串行运行 Selenium 测试到并行运行时处理测试数据

java - 在使用 Gradle 构建的 Java 项目中管理 javaagent 依赖项

java - android java mediaplayer 服务 - 我怎么知道 mediaPlayer 是否准备好了?

java - 如何在 App Engine 中安排 cron 作业?

php - appcfg.py : error: Error parsing app\app. yaml:无法将值 'php55' 分配给属性 'runtime'

java - 应用引擎,JSP "No forced path servlet for/WEB-INF/home.jsp"

c# - 如何捕获一组任务的异常

CUDA:如何使该代码并行?