HBase是否支持嵌套事务(或类似的东西)?


诸葛神侯
2025-04-05 08:58:17 (6天前)
  1. 我想运行修改数据的测试,声明更改是正确的,然后回滚更改。在典型的数据库用语中,这将被称为启动事务,稍后...

2 条回复
  1. 0# 银角 | 2019-08-31 10-32



    首先,很少有数据库支持真正的嵌套事务。但是,MySQL和Postgres都支持

    SAVEPOINT

    这可以用来完成你想要做的事情。如果您使用像轨道的ORM;它应该已经能够处理这样一个用例。




    HBase中的交易
    </强>



    Apache HBase不支持传统意义上的事务,即它不提供启动然后回滚操作的能力.HBase提供的唯一事务保证是:




    1. 行级操作的原子性。


    2. 在HBase区域上运行的任何扫描操作都将看到扫描开始时的数据状态。在扫描运行时,它不会看到写入该区域的新数据。

    3. </醇>


      我的建议是不要像NoSQL数据库那样对关系数据库有类似的期望。 HBase擅长处理数十PB的数据,用于进行高容量点更新,点读取和范围扫描。但是,管理HBase集群比管理MySQL实例要多得多。在迁移到HBase时,您需要删除关系数据库中的许多要求。



      也就是说,您尝试做的事情有变通方法,根据您的确切设置可能会或可能不会起作用。您可以在每次测试开始之前清理整个数据库/表。



      处理此问题的另一种方法是在HBase之上使用另一个引擎,它提供类似语义的SQL。

      Apache Phoenix

      是一个这样的项目,有一个非常活跃的开发者社区。他们在最新版本中推出了跨行交易支持(支持仍处于测试阶段,当然,这里也没有嵌套交易)。


登录 后才能参与评论