【发布时间】:2012-02-13 01:23:29
【问题描述】:
我有一项长期运行的工作来更新 1000 个实体组。之后我想开始第二份工作,必须假设所有这些项目都已更新。由于实体组太多,我无法在事务中执行此操作,因此我刚刚使用任务队列将第二个作业安排在第一个作业完成后 15 分钟运行。
有没有更好的办法?
是否可以假设 15 分钟可以保证数据存储与我之前的调用同步?
我正在使用高复制。
在有关 HRD 的 google IO 视频中,他们列出了处理最终一致性的方法。其中之一是“接受”。一些更新(如推特帖子)不需要与下一次阅读保持一致。但他们也说了类似“嘿,我们只是说几毫秒到几秒,然后它们就一致了”。该时间框架是否记录在其他任何地方?假设在写入后等待 1 分钟再读取是否意味着我之前的所有写入都在读取中?
在视频http://www.youtube.com/watch?feature=player_embedded&v=xO015C3R6dw 39:30 处提到了这一点
【问题讨论】:
-
我在下面给出了部分答案,但你能提供更多关于你到底想要做什么的信息吗?
-
基本上我正在插入或更新 1000 个实体。完成该工作后,我需要对这些项目应用等级。因此,我运行一个查询,选择所有记录并按我关心的排名字段对它们进行排序。然后我在另一个实体类型中更新排名。如果查询中缺少实体,该排名显然会下降。
标签: java google-app-engine google-cloud-datastore