今天小编要和大家分享的是存储技术相关信息,接下来我将从三种常见数据存储的优势和不足,兆易创新:中国唯一的存储芯片全平台龙头!这几个方面来介绍。
存储技术相关技术文章三种常见数据存储的优势和不足
数据存储在实际应用中,就是怎么用数据库把我们的业务数据保存起来。从宏观角度看,大致包含三大类技术:B-TREE,LSM&SSTable,列式存储。虽然主流的关系型数据库,如Oracle、MySQL(innodb)都是采用B-TREE,但是两者其实并没有绑定关系,比如TokuDB,作为MySQL的存储引擎之一也是使用LSM作为其核心思想;NewSQL中的TiDB虽然也是基于关系模型的,但是底层的存储引擎使用RocksDB,也是基于LSM&SSTable。底层技术处于互相学习和融合之中。
B-TREE
B-TREE和关系模型同步出现于70年代,到90年几乎占领了所有的数据库市场。B-TREE简单的理解就是多叶节点的树,每个叶节点并非是每行数据,而是数据库的的数据块。这么设计的原因是树的层次影响着搜索性能,而且磁盘的读写是基于块(BLOCK)的,使用块可以大大减少节点数量,进而减少树的层次。
B-TREE的特点在于读写性能比较稳定,响应时间和磁盘随机读写的时间成正比(10ms)。并且由于B-TREE对应到数据库的每条记录,可以很容易的实现事务、行锁和隔离级别。读性能略高于LSM算法。而且B-TREE基于块的存储方式,可以很容易的把内存中的块和磁盘上的块一一对应起来,很容易的实现缓存。在实际应用中,前2-3级节点内都可以在缓存中读取,由此大大提高了访问效率。
而不足在于真正面对海量数据时(如数据量进入到百亿级别时),由于树层数和缓存比率的减少,会导致性能逐步下降。此外由于B-TREE在写入时也需要通过搜索定位到叶节点,因此相对于LSM,其写入时开销较大。PS:其实现在已经出现了分布式的B-TREE,比如oracle的localeindex。
LSM&SSTable
目前主流的存储架构还是磁盘+内存,磁盘顺序读写的性能高于随机读写三个数量级,而在内存中进行随机读写的的性能也大于磁盘的三个数量级,可以得出用磁盘当做磁带一样只做顺序读写,而把内存当做磁盘,提供所有的随机读写访问的总体思想,这也就是出LSM-Tree的算法。
简单说就是在内存中维护一张MemTable,把所有最新的数据都写到其中,所有数据依据key值进行排序(随机读写)。当MemTable的大小到大阈值之后,把它写到磁盘上,形成一个个的SSTable(顺序写)。每个SSTable构造一个索引,由于SSTable中的数据都是排好序的,所以索引较小,可以保存在内存里面,所以所有的索引搜索动作都是在内存进行的(随机读)。