【问题标题】:Emulate transaction for batch put in hbase模拟批量放入 hbase 的事务
【发布时间】:2023-03-15 18:01:01
【问题描述】:

我正在努力在 hbase 中实现回滚操作。 我的组件被提供了所有信息来做 put(实际上有数百个这样的 put)——表、时间戳(可能为空)、家庭、限定符、值。它缓冲它们,然后批量调用 HTable.put()。考虑到数据未经预先验证的事实,任何 put 都可能失败。

我正在尝试实现回滚在失败的 put() 之前已经完成的操作的方法。

据我所知,有 3 种回滚方式:

  1. 删除新项目(如果之前不存在此类项目)
  2. 什么都不做(如果之前存在完全相同的项目(包括时间戳))
  3. 执行另一个 Put(如果新 Put 更改了旧行中的一些数据。注意:我知道在 hbase 中无法更改数据。通过“更改”,我指的是新数据已写入的事实相同的行/时间戳/系列/限定符,而旧的被丢弃 - 在我的设置中,hbase 被指示只保留该项目的一个版本。

所以问题是 - 如何区分这 3 个看跌期权?当然,查询特定项目的 hbase 是个问题,但是对我来说,对几百个项目进行简单的 get/scan 似乎效率不高。

所以我正在寻找某种方法在 hbase 上进行批量获取/扫描。

【问题讨论】:

    标签: transactions nosql hbase acid


    【解决方案1】:

    我会使用 Apache BookKeeper 之类的东西来存储事务日志,然后使用 HBAse checkAndPut 读取分类帐以执行回滚

    【讨论】:

    • 谢谢,如果我们不考虑第三个选项(当现有数据被更改时),(checkAndPut)将起作用。仔细查看我的数据方案数据更改并不是我真正需要的,所以我接受你的回答
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多