Log(*.log):即Write Ahead Log,是用来记录LevelDB变更的append-only的文件,在LevelDB重启时用来恢复内存中的数据。MemTable、Immutable MemTable:用来Buffer最近写入的内存结构,其通过SkipList实现。当MemTable达到一定大小时会转为只读的Immutable MemTable,并等待后台线程通过Minor Compaction将其转为level-0的SSTable。MemTable是LSM-Tree将随机写入转为顺序写入的关键。SSTable(新:.ldb、旧:.sst):通过Compaction生成的SSTable。level-0的SSTable由Immutable MemTable直接转储得到,因此level-0的SSTable的key间存在overlap;其它level的SSTable每层间没有overlap。另外,除了level-0外,每层SSTable的总大小比上一层大10倍。Manifest(MANIFEST-*):记录SSTable文件等的版本变更,其中Record的格式与Log相同,Le
打开LevelDB每一个数据库有一个name,对应一个目录,所有的数据库文件都在这个目录里。通过Open可以打开或者新建一个数据库,得到数据库的引用,通过这个引用来操作数据库。可以这样打开一个数据库:leveldb::DB* db; leveldb::Options options; options.create_if_missing = true; leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);name指定数据库目录,options指定了打开数据库的选项,db获取了数据库的引用。这里使用了create_if_missing选项,当数据库不存在时会创建数据库。关闭只需要delete数据库实例即可:delete db基础APILevelDB的基础API有三个,分别是Get、Put和Delete,表示查询一个键、插入一个键和删除一个键。LevelDB没有更新操作,因为更新就是简单地插入一个Kv,会覆盖之前的值。db->Put(leveldb::WriteOpt
CppGuide/articles at master · balloonwj/CppGuide深入理解什么是LSM-Tree - 腾讯云开发者社区-腾讯云leveldb 日常使用安装:linux下leveldb的安装与编译Kilig_yo的博客-CSDN博客linux编译leveldb记录一次leveldb安装失败经历\_inoobkk的博客-CSDN博客源码解析深入分析LevelDB实现 - 惊雷123的专栏 - 掘金【推荐】leveldb\_草上爬的博客-CSDN博客【推荐】深入浅出LevelDB - 分类 - 叉鸽 MrCroxx 的博客【推荐】LevelDB Archive - Ying's Blog【推荐】SF-Zhou's Blog【推荐】LevelDB中文文档 - KevinsBobo Blogleveldb-handbook — leveldb-handbook 文档LSM-Tree - LevelDb 源码解析 - 掘金LevelDB源码剖析 - 知乎LevelDB - 文集 - 简书标签: leveldb | Calvin's MarbleslevelDB掘金收藏
YJ-Ma的小屋🍉
勿在浮沙筑高台