
Level DB
文章平均质量分 65
Level DB
Happy_Traveller
这个作者很懒,什么都没留下…
展开
-
Level DB --- MergingIterator
MergingIterator 是 Level DB中重要的类,在某一个level做多个file数据Compaction的时候,这多个file之间数据如何高效的组织和比较,这个时候用到了MergingIterator。原创 2025-05-05 18:16:28 · 357 阅读 · 0 评论 -
Level DB --- TableCache
TableCache 是Level DB 中重要的类,Level DB 中多层(multi level),且每一层(level)有多个 key-value file,TableCache正是用来缓存多层以及多层中的file数据,更快速地检索。原创 2025-03-30 21:02:31 · 207 阅读 · 0 评论 -
Level DB --- WriteLevel0Table
当memtable中的数据达到阈值,内存中的数据要序列化到文件中,WriteLevel0Table正是这个过程的模块。原创 2025-03-23 17:20:39 · 255 阅读 · 0 评论 -
Level DB --- Compaction后台架构
Level DB的小文件会在后台不断进行Compaction计算,在架构上既要保证数据的安全,同时要保证Compaction计算的效率。原创 2025-03-19 06:30:00 · 238 阅读 · 0 评论 -
Level DB --- 写流程计算
写流程架构已经介绍,写流程计算包括写日志,和将kv插入到memtable中。原创 2025-03-09 20:28:52 · 213 阅读 · 0 评论 -
Level DB --- 写流程架构
Level DB是高效的k-v数据库,接受多线程写,既要保证多线程写临界区安全,同时又要保证写流程的尽量高效性。原创 2025-03-02 14:49:40 · 328 阅读 · 0 评论 -
Level DB --- Table
class Table 是 Level DB核心的几个组件之一,Table里面序列化高效存储了key-value,table是不可变的(immutable),并且持久存储的(persistent)。原创 2025-02-23 21:26:01 · 492 阅读 · 0 评论 -
Level DB --- two_level_iterator
two_level_iterator 是 Level DB 中 table核心的迭代器。该迭代器定义了table对于block的读写操作。原创 2025-02-16 20:42:55 · 400 阅读 · 0 评论 -
Level DB --- Iterator
Iterator是Level DB中的一个基类,它定义了迭代器的基础的操作,同时对内存资源进行了维护。原创 2025-02-09 21:20:38 · 285 阅读 · 0 评论 -
Level DB --- table.format
table.format是Level DB中table序列化、反序列化重要的辅助类。它用来定义序列化、反序列化的核心结构体和操作实现。原创 2025-02-01 18:38:41 · 469 阅读 · 0 评论 -
Level DB --- TableBuilder
TableBuilder是Level DB里面重要的类和模块,它描述了数据如何序列化到文件中,以及数据里面的格式逻辑。它里面包含了之前介绍的多个模块和类。原创 2025-01-26 23:57:39 · 514 阅读 · 0 评论 -
Level DB --- env.File
env是LevelDB中重要的模块,它负责和操作系统交互,本单元主要介绍env中定义的几类文件的操作。原创 2025-01-19 18:57:22 · 215 阅读 · 0 评论 -
Level DB --- filter_block
filter_block里面包含FilterBlockBuilder和FilterBlockReader,他们是LevelDB中读、写Filter()重要的类,相当于是FIlter的一个Wrapper,将Filter有组织地写(序列化)和读(反序列化)。原创 2025-01-12 20:42:59 · 748 阅读 · 0 评论 -
Level DB --- BloomFilterPolicy
Level DB中实现的Bloom Filter计算代码不长,但是里面涉及到的bit计算还是很简洁的。一个Block会存储大量的key,所以一个Block的bit array占用内存的空间还是比较大的,但是Bloom Filter也大量减少了Block的检索的计算。当KeyMayMatch返回false,证明这个key不在Block里面,当返回true,可以继续再在Block里面检索。原创 2025-01-05 15:56:02 · 284 阅读 · 0 评论 -
Level DB --- BlockBuilder
BlockBuilder是Level DB 数据组织的重要类,它主要将一定数量的Key-Valbe以Block的方式存储到文件中。原创 2024-12-29 20:31:23 · 606 阅读 · 0 评论 -
Level DB --- MemTable
MemTable是Level DB中重要的组件,它主要处理Level DB内存级别的增删查改。原创 2024-12-26 20:07:12 · 400 阅读 · 0 评论 -
Level DB --- coding
可以看到Fixed形式,在序列化的时候固定占用4个字节,而Var形式占用的字节数目是不固定的,一个字节(byte),它有7位(bit)是有效存储数据,1位(bit)存储flag。对于都是比较小的数字,Var的方式更节省存储资源。原创 2024-12-15 19:57:31 · 339 阅读 · 0 评论 -
Level DB --- Cache
class Cache是Level DB中的重要的数据结构,它是一个LRU(Least Recently Used) Cache的实现。这里面的判断条件主要是内存大小(而不是存储entry的个数)。当内存达到上界,会释放不被使用的entry(存储到lru_中的entry)。原创 2024-12-08 18:33:17 · 665 阅读 · 0 评论 -
Level DB --- Arena
class Arena 是中的重要数据结构,它是一个简易的内存池管理类。原创 2024-12-01 18:25:13 · 512 阅读 · 0 评论 -
Level DB --- SkipList
class SkipList 是Level DB中的重要数据结构,存储在memtable中的数据通过SkipList来存储和检索数据,它有优秀的读写性能,且和红黑树相比,更适合多线程的操作。原创 2024-11-23 20:45:16 · 553 阅读 · 0 评论 -
Level DB --- Block
总结一下,Block是一个核心结构,代码逻辑清晰。这里面有几点好的设计可以借鉴:1.使用restart + diff key的形式,由于key都是有序的,所以一个key和他前一个key的序列重复度应该是很高的,这样做可以有效提高存储效率。2.使用restart,有益于检索效率,可以应用二分检索,否则只能使用顺序检索。3.Block Iterator Iterator的使用恰当好处。原创 2024-11-16 18:10:19 · 737 阅读 · 0 评论