美文网首页我爱编程
大数据存储引擎笔记

大数据存储引擎笔记

作者: Josen_Qu | 来源:发表于2018-01-14 11:39 被阅读152次

大数据存储引擎之哈希

  • 数据结构就是键值对
  • 优点:检索快
  • 缺点:不支持范围扫描
  • 如果数据都在内存中,那就很快的,比如常用redis 作为缓存组件(数据转到硬盘就另说了)
  • 如果要放到硬盘中存储,以bitcask为例,每次操作都是追加文件,在内存中维护一张哈希表,记录主键对应的文件号和value 在文件中的起始位置和长度,还有时间戳(版本号),
  • 由于是追加文件的方式写数据,当前只有一个活跃文件可以追加,老文件只可读不可写,文件中的每一条记录,包含了真正的数据内存,时间戳,校验值。
  • 每次写的话包括两步:第一步:将数据追加到活跃文件,这一步是顺序写入硬盘是很快的,第二部:更新内存中的索引结构,当然也很快的。
  • 每次读的时候也包括两步:第一步:读取内存中的索引找到主键对应的文件号以及value在文件中的位置,第二步就是读文件了


    图片.png

大数据存储引擎之B树

  • B树是基于二叉树演变,每个节点有多个子节点,节点都是按照顺序组织的。
    因此能够很好支持范围扫描和查询,但是维护B树,子树的合并分裂是个消耗高的操作。
  • 大多数关系型数据库采用这种B+的存储引擎
  • 比如mysql 的innodb, 是一种聚集索引,因为叶子节点就是存的真实的数据,非叶子节点是索引信息。


    图片.png

大数据存储引擎之LSM

  • lsm全称(log structured merge tree),bigtable hbase等分布式表格采用。
    mongodb的默认存储引擎wiredTiger(3.2版本以后)也是采用的lsm,详细见http://www.mongoing.com/archives/2540
  • 主要文件包括内存中可变的mutable memtable,不可变的immutable memtable.硬盘中的多个sstable,多个清单文件,和当前文件,还有操作日志。
  • sstable全称sorted string table,是有序,不可写的
  • 清单文件维护着sstable信息,包括最小值,最大值等
  • sstable 需要定期合并,变化等操作,因此会产生多个清单文件,而当前文件就是指向哪个清单文件是当前有效的。
  • 当执行写的时候,采用WAL(write ahead log),将操作顺序写入log(便于容错的恢复数据等),将数据写到内存中的mutable memtable,当可变的memtable达到一定阈值的时候,就变成了不可变memtable,再有写入会放到一个新的memtable,
  • 这些memtable也是有序的,当内存中的memtable足够多的时候会合并生成一个新的sstable储存到硬盘.
  • 当然也有后台进程会合并这些sstable,回生成新的文件,老的文件就会废弃,清单文件就记录这些变化。


    图片.png

相关文章

  • MySql存储引擎简介-基础篇

    MySql数据库存储引擎 存储引擎就是如何存取数据,建立索引,更新和查询数据的实现方法. 存储引擎是针对表而言的,...

  • Mysql数据引擎

    InnoDB数据存储引擎(Mysql5.5+ 默认数据存储引擎)主要特性: InnoDB引擎提供了对数据库ACID...

  • mysql进阶篇一

    一、存储引擎 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的...

  • 存储引擎

    数据库架构 连接-服务-引擎-存储 主流存储引擎对比

  • 大数据存储引擎笔记

    大数据存储引擎之哈希 数据结构就是键值对 优点:检索快 缺点:不支持范围扫描 如果数据都在内存中,那就很快的,比如...

  • MongoDB 引擎

    存储引擎 该存储引擎是负责管理数据的存储,无论是在内存和磁盘数据库的组成部分。MongoDB支持多个存储引擎,因为...

  • Mysql数据库索引

    1.1. 存储引擎 1.1.1. 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎...

  • 浅谈InnoDB存储引擎中的锁

    InnoDB存储引擎是MySQL数据库默认的事务型存储引擎,也是使用比较多的存储引擎。InnoDB存储引擎不紧支持...

  • MySQL数据库常用存储引擎

    Mysql数据库常用存储引擎 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建...

  • 数据库存储类型和数据类型

    什么是存储引擎? 存储引擎其实就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为...

网友评论

    本文标题:大数据存储引擎笔记

    本文链接:https://www.haomeiwen.com/subject/okrkoxtx.html