在不影响前端的情况下更新DB的最佳方法

时间:2013-05-25 06:12:15

标签: database-design oracle11g

我有一些表格,其中这些表格的数据将从另一个实时数据表中填充(使用实时表格中的OTA-开放测试架构来提取数据)。现在我必须定期(一天中有3到4次)来更新表格中的数据。

现在我的问题是这样做的最佳方法是什么?如果我必须更新我定期使用的表,我的计划是删除当前数据并从Live表更新,但是当有人在数据更新时访问前端时,他们将得到没有结果或得到错误的结果。那么我们如何在不影响前端的情况下做到这一点,但仍然更新表格中的数据?

我正在使用Java / JSP / Hibernate / Scriptom / Groovy和Oracle DB。

P.S:我是所有这些东西的新手,所以如果这不是正确的方法,请纠正我。访问Live DB对我来说不是一个选择。我们将无法访问Live数据表。如果我使用OTA提取数据并直接在我的前端显示它会非常慢。

1 个答案:

答案 0 :(得分:1)

所有Oracle事务至少 READ COMMITTED isolation level。这意味着事务的影响在提交之前对其他事务是不可见的。因此,只需将所有必要的操作封装在单个事务中,其他事务在提交之前不会看到结果(此时结果不再是部分的)。

除此之外,作者永远不会阻止读者,因此其他客户将能够在您的交易仍在生成新数据时继续阅读旧版数据。

BTW,Oracle还支持SERIALIZABLE隔离级别,这可能与您的需求更相关 - 它可以让您在阅读实时表时获得数据库的“及时快照”。