删除掩码是否放入Bigtable?
Does delete masks put in Bigtable?
在 Hbase 文档 (http://hbase.apache.org/0.94/book/versions.html) 中,它说:
"5.8.2.1. 删除掩码 Puts
删除掩码放置,甚至是输入删除后发生的放置[18]。请记住,删除会写入一个墓碑,它只会在下一次主要压缩 运行 之后消失。假设你删除了所有 <= T 的东西。之后你做了一个时间戳 <= T 的新 put。这个 put,即使它发生在删除之后,也会被 delete tombstone 屏蔽。执行 put 不会失败,但是当您执行 get 时,您会注意到 put 没有任何效果。在 major compaction 运行 之后它将再次开始工作。如果您对连续的新 puts 使用始终增加的版本,这些问题应该不是问题。但即使您不关心时间,它们也可能会发生:只需将 delete 和 put 紧接在一起,它们有可能在同一毫秒内发生。"
然而,在我们使用 Bigtable Hbase 1.0 API 的实验中,删除不会屏蔽放置。我们可以确认这是 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 的单元格。
在我们的应用程序中,我们更喜欢删除掩码。
谢谢!
贾斯汀,
如果 puts 在删除后发出,Bigtable 不会在删除后屏蔽 puts。 masking puts 的问题是 puts 会在 major compaction 之后的一段时间后出现,这对用户来说是一个惊喜,意想不到的结果。
您能否稍微描述一下您的用例,以便我们更好地帮助您克服这种不适合您的行为?
谢谢!
在 Hbase 文档 (http://hbase.apache.org/0.94/book/versions.html) 中,它说:
"5.8.2.1. 删除掩码 Puts
删除掩码放置,甚至是输入删除后发生的放置[18]。请记住,删除会写入一个墓碑,它只会在下一次主要压缩 运行 之后消失。假设你删除了所有 <= T 的东西。之后你做了一个时间戳 <= T 的新 put。这个 put,即使它发生在删除之后,也会被 delete tombstone 屏蔽。执行 put 不会失败,但是当您执行 get 时,您会注意到 put 没有任何效果。在 major compaction 运行 之后它将再次开始工作。如果您对连续的新 puts 使用始终增加的版本,这些问题应该不是问题。但即使您不关心时间,它们也可能会发生:只需将 delete 和 put 紧接在一起,它们有可能在同一毫秒内发生。"
然而,在我们使用 Bigtable Hbase 1.0 API 的实验中,删除不会屏蔽放置。我们可以确认这是 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 的单元格。
在我们的应用程序中,我们更喜欢删除掩码。
谢谢!
贾斯汀,
如果 puts 在删除后发出,Bigtable 不会在删除后屏蔽 puts。 masking puts 的问题是 puts 会在 major compaction 之后的一段时间后出现,这对用户来说是一个惊喜,意想不到的结果。 您能否稍微描述一下您的用例,以便我们更好地帮助您克服这种不适合您的行为?
谢谢!