leveldb
varyall
这个作者很懒,什么都没留下…
展开
-
深入理解LevelDB
Compact过程:为了解决SSTable的读取速度问题。Bigtable提出了compact策略。Compact操作是将一个或多个SSTable作为输入,输出一个compact完成的SSTable。Compact操作完成这样几件事情:1.将重叠的行聚集到一张SSTable中,这样在读取一行的时候就不需要多次读取SSTable了。2. 删除过期数据(如果有设置TTL)。3. 删除标记为tombst...转载 2018-05-08 13:00:05 · 2667 阅读 · 0 评论 -
leveldb原理和使用
LevelDB是一个基于本地文件的存储引擎,非分布式存储引擎,原理基于BigTable(LSM文件树),无索引机制,存储条目为Key-value。适用于保存数据缓存、日志存储、高速缓存等应用,主要是避免RPC请求带来的延迟问题。在存取模型上,顺序读取性能极高,但是对于随机读取的情况延迟较大(但性能也不是特别低),比较适合顺序写入(key),随机的key写入也不会带来问题。数据存量通常为物理内存的3...转载 2018-05-08 13:17:36 · 1710 阅读 · 0 评论 -
levelDB的SSTable和LSM-tree
如果说protocol buffer是google事实上的individual data record 描述语言,那SSTable应该是google最流行的dataset存储、处理和交换方案之一。SSTable是高效存储大量KV数据集合的一个简单抽象,并针对高吞吐量、顺序读写负载等进行了优化。本文阐述SSTable的工作原理,以及levelDB中如何使用SSTable。 SSTable数据格式、索...转载 2018-05-24 17:47:37 · 744 阅读 · 0 评论 -
leveldb源码分析--SSTable之Compaction
对于compaction是leveldb中体量最大的一部分,也应该是最为复杂的部分,为了便于理解我们首先从一些基本的概念开始。下面是一些从doc/impl.html中翻译和整理的内容:Level 0当日志文件超过一定大小的阈值是 (默认为 1MB):建立一个新的memtable和日志文件,以后的操作都是用新的memtable和日志文件后台进行如下操作:将旧的 memtable写到SSTable中(...转载 2018-05-24 17:49:01 · 227 阅读 · 0 评论 -
leveldb之Mem Table
1. 所有KV数据都是存储在Memtable,Immutable Memtable和SSTable中的,Immutable Memtable从结构上讲和Memtable是完全一样的,区别仅仅在于其是只读的,不允许写入操作,而Memtable则是允许写入和读取的。当Memtable写入的数据占用内存到达指定数量,则自动转换为Immutable Memtable,等待Dump到磁盘中,系统会自动生成...转载 2018-05-24 17:49:38 · 294 阅读 · 0 评论 -
SSTable和日志结构化存储:LevelDB
如果说Protocol Buffer是谷歌独立数据记录的通用语言 ,那么有序字符串表(SSTable,Sorted String Table)则是用于存储,处理和数据集交换的最流行的数据输出格式。正如它的名字本身,SSTable是有效存储大量键-值对的简单抽象,对高吞吐量顺序读/写进行了优化。不幸的是,SSTable名称本身被业界重载,指代的内容远远超出有序表的概念,这可能与简单有效数据结构的...转载 2018-05-24 19:26:59 · 692 阅读 · 0 评论 -
预写式日志(Write-Ahead Logging (WAL))
预写式日志 (WAL) 是一种实现事务日志的标准方法。有关它的详细描述可以在大多数(如果不是全部的话)有关事务处理的书中找到。 简而言之,WAL 的中心思想是对数据文件的修改(它们是表和索引的载体)必须是只能发生在这些修改已经记录了日志之后, 也就是说,在描述这些变化的日志记录冲刷到永久存储器之后。 如果我们遵循这个过程,那么我们就不需要在每次事务提交的时候都把数据页冲刷到磁盘,因为我们知道在出现...转载 2018-05-24 19:44:07 · 9430 阅读 · 0 评论 -
leveldb memtable sstable log
LevelDB是google开源的key-value,单机,持久化存储引擎:写操作:写Log的顺序磁盘写和内存中对memtable的操作;读操作:设计一系列策略保证读的效率;整体的架构如下:在写入操作的时候,会先把要写入的操作顺序地写到日志文件中。这样,就算是在memtable的操作中失败了,重新启动的时候也是会从日志文件中还原,这样可靠性就得到了保障。又因为日志文件时顺序的IO,这样也提高了写的...转载 2018-05-25 00:01:46 · 360 阅读 · 0 评论 -
Log Structured Merge Trees(LSM) 原理(LSM 算法的原理是什么?)
十年前,谷歌发表了 “BigTable” 的论文,论文中很多很酷的方面之一就是它所使用的文件组织方式,这个方法更一般的名字叫 Log Structured-Merge Tree。LSM是当前被用在许多产品的文件结构策略:HBase, Cassandra, LevelDB, SQLite,甚至在mangodb3.0中也带了一个可选的LSM引擎(Wired Tiger 实现的)。LSM 有趣的地方是他...转载 2018-05-25 00:01:35 · 673 阅读 · 0 评论