我有 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/