b树

b树,又叫做平衡多路查找树。一个m阶的b树的特性如下:

  1. 树中的每个节点,最多有m个子节点。
  2. 除了根节点之外,其他的每个节点至少有ceil(m/2)个子节点,ceil函数为取上限函数。
  3. 所有的叶子节点都在同一层,叶子节点bubaohan任何关键信息。
  4. 每个非叶子节点都包含有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

  1. 每个节点最多有3个子节点
  2. 每个节点最少有ceil(m/2)=2个子节点
  3. 每个节点至少有1<=n<=2个关键字信息

对于一棵节点为N阶数为M的树,查找和插入需要的比较次数为logM-1N~logM/1

b+树

b+树是b树的一个变种,差别如下

  1. 所有的叶子节点中包含了全部的关键字信息,以及指向含有这些关键词信息记录的指针
  2. 叶子节点中的关键字信息是有序链接的
  3. 非叶子节点相当于是叶子节点的索引,叶子节点相当于是存储数据的数据层

lsm树

lsm树(log-Structured Merge-Trees)原理是将一棵大树拆分成了多棵小树,每棵小树其实是一个有序的b+树。数据写入首先写入到内存中,随着小树越来越大,小树flush到磁盘中。磁盘中的小树数量到达一定量后,对这些小树做merge操作,合并成了一棵大的b+树。lsm树牺牲了部分读性能(因为需要遍历多棵小树)来提高了写性能。

hbase——b树,b+树,lsm树的更多相关文章

  1. LSM树由来、设计思想以及应用到HBase的索引

    讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎  是哈希表的持久化实现,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储 ...

  2. LSM树由来、设计思想以及应用到HBase的索引(转)

    转自: http://www.cnblogs.com/yanghuahui/p/3483754.html 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎  是哈 ...

  3. LSM树以及在hbase中的应用

    转自:http://www.cnblogs.com/yanghuahui/p/3483754.html 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎  是哈希 ...

  4. 平衡二叉树、B树、B+树、B*树、LSM树简介

    平衡二叉树是基于分治思想采用二分法的策略提高数据查找速度的二叉树结构.非叶子结点最多只能有两个子结点,且左边子结点点小于当前结点值,右边子结点大于当前结点树,并且为保证查询性能增增删结点时要保证左右两 ...

  5. HBase LSM树存储引擎详解

    1.前提 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎. B树存储引擎. LSM树(Log-Structured Merge Tree)存储引擎. 2. 哈希 ...

  6. LSM树——放弃读能力换取写能力,将多次修改放在内存中形成有序树再统一写入磁盘

    LSM树(Log-Structured Merge Tree)存储引擎 代表数据库:nessDB.leveldb.hbase等 核心思想的核心就是放弃部分读能力,换取写入的最大化能力.LSM Tree ...

  7. 二叉树、B树、B+树、B*树、LSM树

      HBase 对于数据产品,底层存储架构直接决定了数据库的特性和使用场景.RDBMS(关系型数据库)使用 B树 及 B+树 作为数据存储结构. HBase 使用 LSM树. .     二叉树    ...

  8. 【转帖】LSM树 和 TSM存储引擎 简介

    LSM树 和 TSM存储引擎 简介 2019-03-08 11:45:23 长烟慢慢 阅读数 461  收藏 更多 分类专栏: 时序数据库   版权声明:本文为博主原创文章,遵循CC 4.0 BY-S ...

  9. LSM 树详解

    LSM树(Log Structured Merged Tree)的名字往往给人一个错误的印象, 实际上LSM树并没有严格的树状结构. LSM 树的思想是使用顺序写代替随机写来提高写性能,与此同时会略微 ...

随机推荐

  1. 最全面的DialogFragment的使用,实现DialogFragment全屏、背景透明;

    Android推荐使用DialogFragment代替Dialog,好处就说一点吧,DialogFragment就是个盖在界面上的Fragment,它拥有Fragment一样的功能和生命周期,解决普通 ...

  2. yidun验证码

    from PIL import Imagefrom selenium import webdriverfrom selenium.webdriver import ActionChainsfrom s ...

  3. 关于使用echarts走过的坑(同grid多图、多轴系列)

    相信大家在工作中,经常会用到echarts,今天我说下我在工作中浪费时间较长的坑 先来看看我的终极需要实现的图吧: 相信以上效果对于常用的小伙伴来说并不困难, 在此我只说option的配置,关于数据, ...

  4. layer.open参数;layer.open关闭事件;layer.open关闭刷新;layer.open获取子页的值;layer.open调用子页面的方法

    父页面 function layerOpen() { layer.open({ type: 2, shade: [0], title: "验收申请", area: ['1024px ...

  5. 【转】【测试用例设计】WEB通用测试用例

    易用性 1.便于使用.理解.并能减少用户发生错误选择的可能性 2.当数据字段过多时,使用便于用户迅速吸取信息的方式表现信息,突出重点信息,标红等方式 3.显示与当前操作相关的信息,给出操作提示. 4. ...

  6. js Base64 转化成图片格式

    function dataURLtoFile(dataurl, filename = 'file') { let arr = dataurl.split(',') let mime = arr[0]. ...

  7. Sharding-jdbc视频:当Sharding-jdbc遇到Spring Boot

    一.什么是Sharding-jdbc? 在介绍Sharding-JDBC之前,我们需要先说明下Sharding-Sphere. Sharding-Sphere是一套开源的分布式数据库中间件解决方案组成 ...

  8. C# 面试知识点网络文档整理

    一 C# .NET技术 1.ASP.NET MVC如何控制权限? 2.C#.NET中的CTS.CLS和CLR? 3.什么是多线程,如何创建和如何使用?请写一个多线程单例模式? 4.什么是单例模式? 5 ...

  9. chrome 如何开启网页另存为.mhtml 功能

    打开chrome浏览器,输入地址:chrome://flags/   找到将网页另存为MHTML,点击启用就可以了. 或者直接输入:chrome://flags/#save-page-as-mhtml

  10. orcal -对表的操作

    设计表 varchar2(n) number(n,m)整数:n-m,小数m DATE 日期 CLOB 大文本 BLOB二进制 创建表=============== create table membe ...