我对 HFiles 有一个相当基本的怀疑。
当发起 put/insert 请求时,首先将值写入 WAL,然后再写入 memstore。memstore 中的值以与 HFile 中相同的排序方式存储。一旦 memstore 满了,它就会被刷新到一个新的 HFile 中。
现在,我已经读到HFile 按排序顺序存储数据,即顺序行键将彼此相邻。
这是100%真实的吗?
例如:我首先用 rowkey 1 到 1000 写入行,除了 rowkey 500。假设 memstore 现在已满,因此它将创建一个新的 HFile,称为 HFile1。现在,这个文件是不可变的。
现在,我将写入第 1001 到 2000 行,然后写入行键 500。假设 memstore 已满并写入 HFile,称为 HFile2。
那么,事情是这样发生的吗?
如果是,则行键 500 不在 HFile1 中,因此 HFiles 中的行键没有排序。那么,粗体的原始陈述是否正确?
那么,当读取发生时,读取是如何发生的呢?