一起使用STM和数据库事务

我一直在使用 Haskell的STM库,我非常喜欢组织交易的能力,以及STM的一般“你不能得到这个错误”的性质.

由于很好的理由,STM不允许在事务中进行IO操作.无法重试IO操作. (在此引入发射导弹参考).另一方面,数据库事务确实有一些非常相似的原子性保证.有没有一个可接受的方法来使用这两个在一起?

将不同种类的交易交织成一个单一的交易概念称为“交易提升”,目前在Haskell的STM中并没有一个很好的方法.然而,有一种方法来建立仅在提交或仅在重试时执行的操作: http://hackage.haskell.org/package/stm-io-hooks

此外,您可以尝试twilight-stm项目,它在事务结束和实际提交之间提供了一个明确的“暮光之城”.据我所知,提供的代码更多的是参考实现,而不是调整为性能的参考实现:http://proglang.informatik.uni-freiburg.de/projects/twilight/

尽管如此,根据您的应用,可能会为您的目的而快速发展.

相关文章
相关标签/搜索