在Hbase文档(http://hbase.apache.org/0.94/book/versions.html)中,它说:
" 5.8.2.1。删除掩码Puts
删除掩码put,甚至删除输入删除后发生的[18]。请记住,删除会写一个逻辑删除,只有在下一次主要压缩运行后才会消失。假设您删除所有内容< = T.在此之后,您执行一个时间戳< = T的新put。即使它在删除后发生,也会被删除逻辑删除屏蔽掉。执行看跌期权不会失败,但是当你做到获得时你会注意到看跌期权没有效果。在主要压缩运行后它将再次开始工作。如果您对行添加使用始终增加的版本,则这些问题不应成为问题。但即使你不关心时间,它们也会发生:只需删除并立即放在彼此之后,并且它们有可能在同一毫秒内发生。"
然而,在我们使用Bigtable Hbase 1.0 API的实验中,delete不会掩盖puts。我们能否确认这是Bigtable中的预期行为?
我们所做的是按顺序执行以下操作:
put data into column x with timestamp 10
put data into column x with timestamp 12
delete column x with timestamp 22
put data into column x with timestamp 17
put data into column x with timestamp 67
然后,当我们得到列x时,我们希望只看到时间戳为67的单元格,但我们看到两个时间戳为17和67的单元格。
在我们的应用程序中,我们更喜欢删除掩码。
谢谢!
答案 0 :(得分:2)
贾斯汀,
如果删除后发出了放置,则Bigtable不会在删除后屏蔽放置。屏蔽掉的问题是,在主要压缩之后,看跌期间会出现一些时间,这对于用户来说是一个意想不到的结果。 您能否稍微描述一下您的用例,以便我们能够更好地帮助您克服这种不适合您的行为?
谢谢!