并行发布和读取Feed - 在从Feedhead遍历到最近的条目时缺少条目

时间:2016-04-22 13:42:25

标签: oracle hibernate feed database-concurrency

这是一个经典的并发读写挑战:

我们正在通过Hibernate向Oracle数据库发布记录和Atom Hopper feed,我们的合作伙伴正在阅读它们。 如果我们发布记录1到5,则5是头部(即最后发布的)。 我们的合作伙伴要求从条目1开始的页面,并接收条目1-5。下次他们询问时,他们会要求输入比条目5更新的条目。客户端会记录已读取的条目。

问题在于,当他们阅读时,我们碰巧发布了一个条目号6,它在"创建的"中获得了比第5个更小的时间戳。柱。 因为它是在阅读后提交的,我们的合作伙伴永远不会得到。 6.他们得到了我们在此期间发布的7,8和9,所有时间戳都比nr更新。 5。

那么如何避免错过像nr这样的条目。 6?我们让数据库将时间戳设置为第一个度量,但我们仍有可能提交一个更老的"在他们阅读时进入,因为在记录获得时间戳和提交时间之间存在不可忽略的时间。 是否可以锁定数据库页面以供阅读?

我认为我们可能不得不改变客户行为,即要求输入比4号更新的条目,以防其间有提交。 在捕获像nr这样的提交方面,使用序列而不是时间戳会更好。 6?

0 个答案:

没有答案