Transactions Couchbase作为CMS持久层
我一直在寻找Couchbase作为我们CMS系统MySQL的替代品。 令我困惑的事情之一是缺少交易 我们已经在组件之上构建了版本控制 每次编辑器保存零部件时,上一个零部件都会保存为新版本 此外,我们对几乎所有操作都有审计日志记录,因此更新记录在另一个表中。 总而言之,更新涉及将数据写入至少3个表 这不是MySQL的问题,因为以上所有内容都包装在一个事务中。如果上述任一操作失败,事务将中止,并且不会写入任何内容 我知道Couchbase为单个文档上的操作提供了原子性。 那么couchbase如何涵盖这样的用例呢Transactions Couchbase作为CMS持久层,transactions,couchbase,Transactions,Couchbase,我一直在寻找Couchbase作为我们CMS系统MySQL的替代品。 令我困惑的事情之一是缺少交易 我们已经在组件之上构建了版本控制 每次编辑器保存零部件时,上一个零部件都会保存为新版本 此外,我们对几乎所有操作都有审计日志记录,因此更新记录在另一个表中。 总而言之,更新涉及将数据写入至少3个表 这不是MySQL的问题,因为以上所有内容都包装在一个事务中。如果上述任一操作失败,事务将中止,并且不会写入任何内容 我知道Couchbase为单个文档上的操作提供了原子性。 那么couchbase如何涵
关于我对Couchbase很陌生,但从我目前学到的:
- 对单个文档的操作是原子的
- 您可以使用CAS实现乐观并发
不确定您使用的是哪种语言/SDK,但这里有一个CAS使用.NET SDK的示例:您描述的需求不一定需要事务逻辑。添加内容的新版本可以在不接触以前版本的情况下完成,只需将新版本作为带有新版本号或时间戳的文档插入即可。当前文档是具有最高版本号或时间戳的文档,可以使用CB视图轻松检索。任何附加的日志记录表都是冗余的,可以用原始数据的适当视图替换。对于唯一的版本号,CB提供了中所述的原子计数器概念 当然,可能还有额外的要求使事务成为必要。这本书在第124页到133页描述了一种实现事务的方法。我想知道为什么CB开发人员没有将这样的功能集成到他们的产品中,这似乎是可能的 因此,其实质是:
- 如果您有机会不进行交易,请尝试一下
- 如果您确实需要它们,请检查引用的方法是否适合您