hbase——b树,b+树,lsm树
b树
b树,又叫做平衡多路查找树。一个m阶的b树的特性如下:
- 树中的每个节点,最多有m个子节点。
- 除了根节点之外,其他的每个节点至少有ceil(m/2)个子节点,ceil函数为取上限函数。
- 所有的叶子节点都在同一层,叶子节点bubaohan任何关键信息。
- 每个非叶子节点都包含有n个关键字信息:{n,a0,k1,a1,k2,……,kn,an},
- n的取值范围,[ceil(m/2)-1]<=n<=(m-1)
- Ki(i=1...n)为关键字,且关键字的信息按照顺序排序
- Ai(i=0...n)为指向子节点的指针,且Ai指向的子树节点的关键字信息必须大于ki,并且小于k(i+1)
上图为一个3阶的b树,即m=3
- 每个节点最多有3个子节点
- 每个节点最少有ceil(m/2)=2个子节点
- 每个节点至少有1<=n<=2个关键字信息
对于一棵节点为N阶数为M的树,查找和插入需要的比较次数为logM-1N~logM/1
b+树
b+树是b树的一个变种,差别如下
- 所有的叶子节点中包含了全部的关键字信息,以及指向含有这些关键词信息记录的指针
- 叶子节点中的关键字信息是有序链接的
- 非叶子节点相当于是叶子节点的索引,叶子节点相当于是存储数据的数据层
lsm树
lsm树(log-Structured Merge-Trees)原理是将一棵大树拆分成了多棵小树,每棵小树其实是一个有序的b+树。数据写入首先写入到内存中,随着小树越来越大,小树flush到磁盘中。磁盘中的小树数量到达一定量后,对这些小树做merge操作,合并成了一棵大的b+树。lsm树牺牲了部分读性能(因为需要遍历多棵小树)来提高了写性能。
hbase——b树,b+树,lsm树的更多相关文章
- LSM树由来、设计思想以及应用到HBase的索引
讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎 是哈希表的持久化实现,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储 ...
- LSM树由来、设计思想以及应用到HBase的索引(转)
转自: http://www.cnblogs.com/yanghuahui/p/3483754.html 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎 是哈 ...
- LSM树以及在hbase中的应用
转自:http://www.cnblogs.com/yanghuahui/p/3483754.html 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎 是哈希 ...
- 平衡二叉树、B树、B+树、B*树、LSM树简介
平衡二叉树是基于分治思想采用二分法的策略提高数据查找速度的二叉树结构.非叶子结点最多只能有两个子结点,且左边子结点点小于当前结点值,右边子结点大于当前结点树,并且为保证查询性能增增删结点时要保证左右两 ...
- HBase LSM树存储引擎详解
1.前提 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎. B树存储引擎. LSM树(Log-Structured Merge Tree)存储引擎. 2. 哈希 ...
- LSM树——放弃读能力换取写能力,将多次修改放在内存中形成有序树再统一写入磁盘
LSM树(Log-Structured Merge Tree)存储引擎 代表数据库:nessDB.leveldb.hbase等 核心思想的核心就是放弃部分读能力,换取写入的最大化能力.LSM Tree ...
- 二叉树、B树、B+树、B*树、LSM树
HBase 对于数据产品,底层存储架构直接决定了数据库的特性和使用场景.RDBMS(关系型数据库)使用 B树 及 B+树 作为数据存储结构. HBase 使用 LSM树. . 二叉树 ...
- 【转帖】LSM树 和 TSM存储引擎 简介
LSM树 和 TSM存储引擎 简介 2019-03-08 11:45:23 长烟慢慢 阅读数 461 收藏 更多 分类专栏: 时序数据库 版权声明:本文为博主原创文章,遵循CC 4.0 BY-S ...
- LSM 树详解
LSM树(Log Structured Merged Tree)的名字往往给人一个错误的印象, 实际上LSM树并没有严格的树状结构. LSM 树的思想是使用顺序写代替随机写来提高写性能,与此同时会略微 ...
随机推荐
- Maven 错误:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project appservice-common: Fatal error compiling: 无效的目标发行版: 1.8
通过IDEA 提供的面板 执行package 或者 install 没有错误,但是cmd terminal 窗口就不行!出现: Maven 错误:Failed to execute goal org. ...
- js生成uuid
前端不能像java一样有内置的uuid生成包,所以需要自己写一个function,每次调用这个函数都会生成一个不同的字符串,代码如下: getuuid() { var uid = []; var he ...
- hadoop的环境变量
# hadoop && yarn export HADOOP_PREFIX=/home/ochadoop/apps/hadoop export HADOOP_HOME=${HADOOP ...
- MAIL服务器搭建
一,邮件服务: 优 点 缺 点 应 用 sendmail 有点年代久远,稳定功能多 太过于臃肿,配置文件多且繁琐 6以前默认 postfix 优点更稳定,且交轻便 发布年限较短,市场占有率低 ...
- 自学web前端能不能找到一份前端的工作吗
关于自学web前端能不能通过社招找到一份互联网公司web前端开发的工作,有无数的人问出这样的问题,答案没有标准的,只能从概率去考虑.有的人可以,有的人不可以,有的人自学就业的概率就是高,有的概率就是低 ...
- 深度学习实战-强化学习-九宫格 当前奖励值 = max(及时奖励 + 下一个位置的奖励值 * 奖励衰减)
强化学习使用的是bellmen方程,即当前奖励值 = max(当前位置的及时奖励 + discout_factor * 下一个方向的奖励值) discount_factor表示奖励的衰减因子 使用 ...
- (转)IIS7无法读取配置文件解决办法
web.config 太大导致”出现无法读取配置文件,因为它超过了最大文件大小”错误问题的解决方法,如下:HKLM\SOFTWARE\Microsoft\InetStp\Configuration\M ...
- easyui的datagrid某个字段return一个a链接
实现方法用 formatter formatter: function(value, row, index) { return '<a href="javascript:void(0) ...
- kvm动态添加硬盘
1.创建硬盘. qemu-img create -f qcow2 /data/data_root/vm-images/xxxx.qcow2 20G 2.添加硬盘 方式1.动态添加: virsh att ...
- mapreduce 内存分配
稍微有点mapreduce使用经验的同学肯定对OOM不陌生,对的,我目前在mapReduce里面遇到的最多的报错也是内存分配出错,所以看到好多hadoop执行脚本里面有好多关于内存的参数,虽然是知道和 ...