我希望运行修改数据的测试,断言更改是正确的,然后回滚更改。在典型的数据库术语中,这将被称为启动事务,然后回滚事务。
我受到MySql的限制,因为应用程序代码使用事务,所以测试不能在事务中进一步封装应用程序的更改。
如果我切换到HBase (我有其他考虑的理由,例如规模),我能做这样的事情吗?这是一个不确定的情况,谷歌的目的是什么。
发布于 2018-11-10 22:25:16
首先,很少有数据库支持真正嵌套的事务。然而,MySQL和Postgres都支持SAVEPOINT,它可以用来完成您想要做的事情。如果您使用的是rails这样的ORM,它应该已经能够处理这样的用例了。
事务在HBase中的应用
Apache不支持传统意义上的事务,也就是说,它不提供启动和回滚operation.The仅由HBase提供的事务性保证的能力:
我的建议是,不要像从关系数据库那样对NoSQL数据库抱有类似的期望。HBase擅长处理数十兆字节的数据,用于进行高容量的点更新、点读取和范围扫描。但是,管理HBase集群比管理MySQL实例要复杂得多。在迁移到HBase时,您需要删除关系数据库中的许多需求。
尽管如此,对于您想要做的事情有一些解决办法,根据您的确切设置,这些方法可能有效,也可能不起作用。您可以在每个测试开始之前清理整个DB/表。
处理这一问题的另一种方法是在HBase之上使用另一个提供类似SQL语义的引擎。阿帕奇凤凰就是这样一个项目,它拥有一个非常活跃的开发人员社区。他们在最新的版本中推出了跨行事务支持(这种支持仍然处于测试版,当然,这里也没有嵌套的事务)。
https://stackoverflow.com/questions/53230129
复制相似问题