首先,很少有数据库支持真正的嵌套事务。但是,MySQL和Postgres都支持
SAVEPOINT
这可以用来完成你想要做的事情。如果您使用像轨道的ORM;它应该已经能够处理这样一个用例。
的
HBase中的交易
</强>
Apache HBase不支持传统意义上的事务,即它不提供启动然后回滚操作的能力.HBase提供的唯一事务保证是:
行级操作的原子性。
在HBase区域上运行的任何扫描操作都将看到扫描开始时的数据状态。在扫描运行时,它不会看到写入该区域的新数据。
</醇>
我的建议是不要像NoSQL数据库那样对关系数据库有类似的期望。 HBase擅长处理数十PB的数据,用于进行高容量点更新,点读取和范围扫描。但是,管理HBase集群比管理MySQL实例要多得多。在迁移到HBase时,您需要删除关系数据库中的许多要求。
也就是说,您尝试做的事情有变通方法,根据您的确切设置可能会或可能不会起作用。您可以在每次测试开始之前清理整个数据库/表。
处理此问题的另一种方法是在HBase之上使用另一个引擎,它提供类似语义的SQL。
Apache Phoenix
是一个这样的项目,有一个非常活跃的开发者社区。他们在最新版本中推出了跨行交易支持(支持仍处于测试阶段,当然,这里也没有嵌套交易)。