cassandra(hbase)的memtable(memstore)中的数据排序

chhqkbe1  于 2021-06-09  发布在  Hbase
关注(0)|答案(2)|浏览(329)

我知道传入系统的数据首先放入内存(memtable或memstore)。在缓冲区中,数据按行键和列名排序。当缓冲区大小达到某个限制时,数据被刷新到磁盘。如果将缓冲区大小限制配置为大值(~256 mb),则数据点的数量必须非常大(~数千万)。用于此目的的数据结构和排序算法是什么?

vptzau2j

vptzau2j1#

hbase store files/hfiles的内部存储数据结构是lsm(log structured merge)树。lsm树类似于b+树,但是它允许更好的可伸缩性和分布式使用,因为它有一个磁盘日志文件和内存存储。因此,一旦memstore达到其极限,它就会被刷新到磁盘上,类似于b+树的数据结构。稍后,它将与其他存储文件合并,形成一个大的存储文件。
与b+树相比,这种数据结构的优点是,每次更新/删除都不需要磁盘io,从而显著提高了性能。

8zzbczxx

8zzbczxx2#

在hbase中存储数据的元素是keyvalue。它由指向字节数组的指针组成,数组中存储实际值,add包含长度和偏移量。所以键值被紧密地压缩到一些字节数组中。使用keyvalueskiplistset(旧版本)或cellskiplistset(新版本)对它们进行索引。这两个类都构建在跳过列表的concurrentskiplistmap java实现之上。

相关问题