模拟放入hbase的批处理的事务

时间:2012-11-19 15:14:09

标签: transactions nosql hbase acid

我正在hbase中实现回滚操作。 我的组件被提供了所有要放置的信息(实际上有数百个这样的放置) - table,timestamp(可能为null),family,qualifier,value。它缓冲它们,然后批量调用HTable.put()。考虑到数据未经过预先验证,任何放置都可能失败。

我正在尝试回放失败的put()之前已经完成的工作。

我认为有3种方法可以回滚:

  1. 删除新项目(如果之前没有此类项目)
  2. 什么都不做(如果之前存在完全相同的项目(包括时间戳))
  3. 执行另一个Put(如果new Put在旧行中更改了一些数据。注意:我知道在hbase中没有办法改变数据。通过'更改'我指的是新数据被写入的事实相同的行/时间戳/系列/限定符,旧的被丢弃 - 因为在我的设置中,hbase被指示只保留该项目的一个版本。)
  4. 所以问题是 - 如何区分这三个看跌期权?当然这是查询特定项目的hbase的问题,但对我来说,做几百项的普通获取/扫描似乎不是很有效。

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

1 个答案:

答案 0 :(得分:0)

我使用Apache BookKeeper之类的东西存储事务日志,然后使用HBAse checkAndPut

读取分类帐以执行回滚