我在他们的文档中找不到这个。这是一个例子:
假设我有一个带有一个列族f的Hbase表,其中maxVersions设置为2,并且数据包含2个限定符q1和q2。我向它添加一行r1,现在我有:
r1=>f:q1:ts1 ("some data 1")
r1=>f:q2:ts1 ("some data 2")
之后我执行put r1 => f:q1(“其他数据”)两次。根据我的理解,q1限定符中的“some data 1”将被删除,因为有两个新版本被写入q1。但是资格赛q2会发生什么?是否删除了数据,因为我添加了该行的两个新版本,或者它是否保留,因为它只有一个版本(我只将数据添加到q1)?
答案 0 :(得分:2)
首先关闭HBase不会立即删除旧版本 - 它们只会在压缩中删除。大多数操作都会掩盖旧版本(超过最大版本)但不是所有操作都会看到JIRA-10102。
关于你的问题,q2不会受到影响。版本在每个限定符实例上进行管理。您可以在hbase shell
:
create 't1', {NAME => 'f', VERSIONS => 1}
put 't1', 'r1', 'f:q1', 'some data 1', 1000
put 't1', 'r1', 'f:q2', 'some data 2', 1000
put 't1', 'r1', 'f:q1', 'other data', 2000
scan 't1'