【发布时间】:2012-03-22 23:36:43
【问题描述】:
我正在开展一个项目,我们收集有关帐户的(last_x,counters)信息。 用户操作可能会导致生成多个业务事件。当网络上的单个用户操作导致多个事件时,它将触发对 USER HISTORY 表的更新。
我们进行乐观锁定以确保所有事件都会导致对 USER HISTORY 表的更新。
问题:
乐观锁定会导致额外的读取(当检测到冲突时,再次读取并更新)和额外的写入(在解决冲突之后)。
已尝试的解决方案:
- 每个事件都会导致插入到 USER HISTORY 表 - 更多历史信息,导致读取性能不佳。
还有其他选择吗?
【问题讨论】:
-
你可以只写记录而不是更新吗?因此没有发生冲突的可能性。
-
写入将导致网站中的用户事件与用户历史记录表中的记录之间的一对一映射。因为它是一个具有计数器变量和 last_X 变量的表。我们需要最新的记录。这意味着我们必须在加载之前对所有事件进行排序。这将导致读取性能不佳。
-
立即更新有多重要?
-
我猜几秒钟的延迟是可以的。但是当有多个事件时,哪个事件会等待呢?
标签: java oracle jakarta-ee nosql