在最终一致的数据库中查找更新条目的策略

时间:2013-08-16 03:15:24

标签: database updates detect eventual-consistency

如果我在最终一致的数据库中存储了大量条目,那么我是否有可靠的方法来查找修改后的条目?当然,它们只会被“最终”发现,这是可以的,但我想避免可能出现永远无法找到它们的情况。

这似乎是一个非常普遍的问题,因此我希望有一些标准的方法来处理它。但不幸的是,我很难找到任何有用的东西。

我一直在考虑的方法是使用某种单调增加的版本号(例如时间戳)标记所有条目,然后查询数据库中所有条目的版本号大于我见过的最高版本号至今。这样做的问题是可能无序地提交(因此在查询中返回)条目。因此,如果稍后的更新“使它”成为给定的查询,而较早的更新没有,我不能只使用后者的版本号作为我在下一个查询中看到的最高版本号,否则我将永远不会找到早期的更新。

如果版本号可以保证总是连续增加而没有跳过的版本(在我的情况下很难实现,但可能是可行的),我可以简单地保留一个更改日志,每个更改都有一个条目然后查询“给我除x,y,z,...之外的所有版本”。但是这个更改日志和相关的查询可能会很大(取决于相对于我可以假定一致性的时间尺度的变化速度),所以我认为这不是一个好的选择。 / p>

有什么想法吗?

0 个答案:

没有答案