0

假设我刚刚向表中添加了一行,并且该行仍在 memstore 中。此时,我将其删除。删除是怎么回事?我不确定我的理解是否正确:在 memstore 中为该行添加了一个标记。当 memstore 被刷新时,行和标记被写入 HFile。但如果是这样,为什么不从 memstore 中删除该行?

4

2 回答 2

1

HBase 的工作方式是每次更改都是一个新的“插入”。这让我们以高效的方式工作。您还应该记住,在许多情况下,HBase 设置为保存每个值的 x 个版本。因此,该行仅在内存存储中并且应该只保留该行的一个版本的时间是一个非常特殊的边缘情况。系统最好以单一、预测和测试的方式工作,而不是处理这种边缘情况。

于 2013-04-11T07:57:05.753 回答
0

磁盘上的 Store 文件中可能已经存在具有相同 rowkey 的行,在这种情况下,另一个具有相同 rowkey 的添加将更新现有行,从而生成该行的新版本。从 memstore 中使用删除标记保存新添加的行将允许主要压缩将该行的所有旧版本删除到具有删除标记的版本。

于 2013-04-10T19:40:33.420 回答