Google的BigTable架构在分布式结构化存储方面大名鼎鼎,其中的MergeDump模型在读写之间找到了一个较好的平衡点,很好的解决了web scale数据的读写问题. MergeDump的理论基础是LSM-Tree (Log-Structured Merge-Tree), 原文见:LSM Tree 下面先说一下LSM-Tree的基本思想,再记录下读文章的几点感受. LSM思想非常朴素,就是将对数据的更改hold在内存中,达到指定的threadhold后将该批更改批量写入到磁盘,在批量写入…
引言 众所周知传统磁盘I/O是比较耗性能的,优化系统性能往往需要和磁盘I/O打交道,而磁盘I/O产生的时延主要由下面3个因素决定: 寻道时间(将磁盘臂移动到适当的柱面上所需要的时间,寻道时移动到相邻柱面移动所需时间1ms,而随机移动所需时间位5~10ms) 旋转时间(等待适当的扇区旋转到磁头下所需要的时间) 实际数据传输时间(低端硬盘的传输速率为5MB/ms,而高速硬盘的速率是10MB/ms) 近20年平均寻道时间改进了7倍,传输速率改进了1300倍,而容量的改进则高达50000倍,这一格局主要…
最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等.之前还没有留意这么设计的原因,最近调研时间序列数据库的时候才发现这样设计的优势所在,所以重新又复习了一遍 LSM Tree 的原理. 特点 总的来说就是通过将大量的随机写转换为顺序写,从而极大地提升了数据写入的性能,虽然与此同时牺牲了部分读的性能. 只适合存储 key 值有序且写入大于读取的数据,或者读取操作通常是 key 值连续的…
LSM Tree(Log Structured Merge Trees)数据组织方式被应用于多种数据库,如LevelDB.HBase.Cassandra等,下面我们从为什么使用LSM tree.LSM tree的实现思路两方面介绍这种存储组织结构,完成对LSM tree的初步了解. 存储背景回顾 LSM tree相较B+树或其他索引存储实现方式,提供了更好的写性能.究其原因,我们先回顾磁盘相关的一点背景知识. 顺序操作磁盘的性能,较随机读写磁盘的性能高很多,我们实现数据库时,也是围绕磁盘的这点特…
The Sorted String Table (SSTable) is one of the most popular outputs for storing, processing, and exchanging datasets. An SSTable is a simple abstraction to efficiently store large numbers of key-value pairs while optimizing for high throughput, sequ…
一种树,适合于写多读少的场景.主要是利用了延迟更新.批量写.顺序写磁盘(磁盘sequence access比random access快). 背景 回顾数据存储的两个“极端”发展方向 加快读:加索引(B+树.二分查找树等) 目的是为了尽快查到目标数据,从而提高查询速度:但由于写入数据时同时要维护索引,故写效率较低. 加快写:纯日志型,不加索引,数据以append方式追加写入 append利用了“磁盘顺序写比任意写性能高”的特性,使得写入速度非常高(接近磁盘理论写入速度):因缺乏索引支持故需要扫描…
Coming from http://blog.sina.com.cn/s/blog_693f08470101njc7.html 今天来聊聊lsm tree,它的全称是log structured merge tree ,简单来说,lsm tree可以认为是针对传统b树在磁盘写入上低劣表现的一种优化,其核心思想的核心就是放弃部分读能力,换取写入的最大化能力.所以你可以看到几乎所有的nosql都在跟b树拼写入速度和延迟.这是为什么呢? 看了今天的文章大家就应该能够有个比较清晰的认识了:)   要了…
目录 设计思路 何为 LSM-Treee 参考资料 整体结构 内存表 WAL SSTable 的结构 SSTable 元素和索引的结构 SSTable Tree 内存中的 SSTable 数据查找过程 实现过程 Key/Value 的表示 内存表的实现 二叉排序树结构定义 插入操作 查找 删除 遍历算法 WAL WAL 文件恢复过程 SSTable 与 SSTable Tree SSTable 结构 SSTable 文件结构 SSTable Tree 结构和管理 SSTable 文件 插入 SS…
先看懂文献1和2 1. 先了解sstable.SSTable: Sorted String Table [2] [10] WiscKey:  类似myisam, key value分离, 根据ssd优化,降低io放大. 2. 再了解Compaction 三种 from 太阁技术秀:一起聊聊cassandra 1)SizeTieredCompactionStrategy (STCS):每四个数据块压一块,对于insert多的系统好. 2)LeveledCompactionStrategy(LCS)…
The New InfluxDB Storage Engine: Time Structured Merge Tree by Paul Dix | Oct 7, 2015 | InfluxDB | 0 comments For more than a year we’ve been talking about potentially making a storage engine purpose-built for our use case of time series data. Today…