Hbase学习笔记(二):索引数据的存储

本文详细介绍了Hbase中索引数据的存储方式,包括内存中的跳跃表和磁盘中的LSM结构。讨论了使用LSM而非B+树的原因,如避免大量写操作时的随机IO,并解释了LSM的内存、磁盘存储、文件合并及Bloom Filter在提高读性能中的作用。
摘要由CSDN通过智能技术生成

索引数据的存储

Hbase中索引数据主要分为两类:

  1. 一部分存储在内存中
  2. 一部分存储在磁盘中

存储在内存中的索引

常见的内存索引结构有红黑树和二叉树,Hbase使用了跳跃表
之所以使用跳跃表,一方面是因为跳跃表实现相对简单;另一方面是因为跳跃表在并发场景下加锁粒度更小,能够乘载更多的并发
在这里插入图片描述

存储在磁盘中的索引

存储在磁盘部分的索引使用的是LSM(Log Structure Merge),这里存储的不是数据,而是数据的操作记录,包括数据的内容和对数据的操作类型
我们都知道Mysql innodb存储引擎底层使用的索引结构就是B+树,那么为什么Hbase没有使用B+树作为自己的索引结构呢?

使用LSM的原因

主要是因为当只有少量写的时候,B+树的性能还好,但是当发生大量写的时候,就会导致写性能的下降。
这里可以回忆一下B+树的数据修改过程,使用待插入的key和当前树节点存储的几个索引值进行比较,确定属于下层哪个数据节点,然后使用待插入key来和其存储的几个索引值进行比较,重复上述过程,直到叶子节点。
如果有大量的并发写操作,那么就会在磁盘中发生大量的在磁盘块中查找数据的过程,如果这些大量的待插入的key不在同一个或者相邻的磁盘块中,那么会发生大量的随机io,而我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值