gpt4 book ai didi

java - 是否有乐观锁定的替代方案

转载 作者:行者123 更新时间:2023-11-30 09:39:24 25 4
gpt4 key购买 nike

我正在开展一个项目,我们收集(last_x, counters )关于帐户的信息。用户操作可能会导致生成多个业务事件。当 web 上的单个用户操作导致多个事件时,它将触发对 USER HISTORY 表的更新。

我们进行乐观锁定以确保所有事件都会更新 USER HISTORY 表。

问题:

乐观锁会导致额外的读取(当检测到冲突时,再次读取并更新)和额外的写入(在解决冲突之后)。

尝试过的解决方案:

  • 每个事件都会插入 USER HISTORY 表 - 历史信息较多,读取性能较差。

还有其他选择吗?

最佳答案

是否有压倒性的需要在此表上读取性能?

在我看来,这就像是某种“工作日结束”/大约每小时一次,客户资料/情报表。如果是这种情况,那么您可以只使用插入并考虑数据仓库技术,例如 Star Schema照顾事物的 (last_x, counters) 方面。

如果它更重要并且更依赖于时间,那么您的模式可能不适合这项工作。您是否考虑过使用消息传递中间件,例如 JMS通知和触发其他业务事件?

自从您使用 Oracle 以来,您可以查看:Oracle AS

[编辑] 根据讨论,您有一个计数器信息的实时生产者/消费者。我不认为数据库是解决这个问题的基本方法。出于会计目的,您可能需要保留柜台,因此您可能需要这样的东西:

生产者:init(从数据库重建 session /memcached)
RECV 用户操作 X -> session /Memcached(ActionX) + 插入到数据库。

消费者:运行(检查 session /memcached 的条件,行动)

您甚至可以让用户历史计数器的消费者成为生产者在计数器达到 X 时触发的事件的订阅者,并消除消费者对 USER HISTORY 的依赖

关于java - 是否有乐观锁定的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com