我正在寻找一种长期运行(数小时或更长时间)交易的结构化方法。如上所述here,这些类型的交互通常由乐观锁定和手动合并策略处理。
使用标准事务对这类问题采用更加结构化的方法会非常方便。各种长时间运行的交互,例如用户注册,订单确认等都具有类似事务的语义,并且发明自己脆弱的手动回滚和/或超时/清理策略既容易出错又乏味。 。
以RDBMS为例,我意识到这将是保持所有交易开放的主要性能成本。作为替代方案,我可以想象有一个数据库同时支持两个隔离级别/策略,一个用于短期运行,一个用于长时间运行的对话。例如,长时间运行的对话可能对数据访问有更严格的限制,以便于他们花费更多时间(对某些数据的只读语义,乐观锁定语义等)。
有没有可以做类似事情的解决方案?
答案 0 :(得分:0)
答案 1 :(得分:0)
RDBMS ACID事务总是属于短期,原子和本地操作。分布式应用程序,自主服务,松散耦合的组件使用不同的策略,如保留和补偿事务。
关于这个主题的一个很好的读物是Pat Helland's论文,自80年代以来他一直在教这个主题。例如,请参阅Architecture of an Autonomous Application或Fiefdoms and Emissaries。