首页
学习
活动
专区
工具
TVP
发布

用户5744311的专栏

专栏作者
7
文章
5815
阅读量
7
订阅数
leveldb源码分析--读数据
原理 回想一下LSM数据存储的机制: 1. 热数据保存在内存中MemTable中; 2. 受限于内存存储空间大小的限制,当热数据超过一定大小时,需刷写到磁盘文件中;为了避免刷新过程中与写入操作的互斥锁操作,引入Immutable MemTable来保存待刷盘的、且不可修改的内存热数据; 3. 数据刷写到磁盘中,保存到SSTable文件中; 从数据存储的机制中,我们可以推演出数据读取的流程: 1. 从内存中的MemTable中查找数据,如查找成功则立即返回,如查找不到则到下一层中去查找数据; - M
小林帮
2021-03-22
5720
leveldb源码分析--写数据
由于WAL日志文件和MemTable内存结构是全局共享资源,在多线程同时写入数据时,需加互斥锁来保证操作的隔离性。考虑到写WAL涉及磁盘的写入操作,耗时较久,会影响数据写入的并发性能。
小林帮
2021-03-21
8240
leveldb源码分析--日志文件格式
使用场景 WAL日志文件; MANIFEST版本信息文件; 日志文件格式 [log-format.jpg] 特点: log文件由连续的block组成,每个block的大小固定为32K; 每个block由连续的record组成; 由于用户data的大小可能超过32K,一个block保存不下,故通过type字段来表示日志的类型; 如: [log-format-example.jpg] 日志操作 读日志 bool Reader::ReadRecord(Slice* record, std::string* scr
小林帮
2021-03-21
7810
leveldb源码解析--版本管理
原理 数据结构 VersionSet版本管理 Version版本信息 VersionEdit 版本变更信息 VersionEdit的序列化编码: [version.jpg] void VersionEdit::EncodeTo(std::string* dst) const { if (has_comparator_) { PutVarint32(dst, kComparator); PutLengthPrefixedSlice(dst, comparator_); } if (
小林帮
2021-03-21
5440
leveldb源码解析--打开数据库
原理 在分析打开leveldb数据库之前,我们先来讨论一下几个类似的子问题: 如何恢复一个进程的运行状态? 如何解决数据索引慢的问题? 主要完成的事项: 构建存储中的MemTable数据结构; 加载SSTable文件查找相关的索引信息; 重放未执行完成的WAL日志; 打开数据库 Status DB::Open(const Options& options, const std::string& dbname, DB** dbptr) { *dbptr = nullptr; DBImpl* impl
小林帮
2021-03-21
1.8K0
2、leveldb设计原理--LSM
概念 LSM(Log-Structured Merge Tree) 原理 特点 把随机写转化成顺序写,写入速度快; 读数据可能需多次磁盘IO; 数据操作流程 写数据 追加写WAL日志; 更新内存中的MemTable结构; 读数据 尝试从MemTable中查询数据,如找到即返回;未找到则到下一层中去查找; 尝试从InmemTable中查找数据; 尝试从level0层的SSTable文件中查找数据; 使用二分法从levelN层的SSTable文件中查询数据; 如都未查找到数据,则返回数据不存在; 数据合并(c
小林帮
2021-03-21
4990
1、leveldb入门体验
简介 leveldb是google开源的一个高性能kv数据存储库。 特点 基于LSM机制存储数据,读写性能高; key、value支持任意的byte类型数组,不单单支持字符串; 一个持久化存储的KV系统,将大部分数据存储到磁盘上; 按照key值顺序存储数据; 操作接口简单,主要接口为Put、Get、Delete; 支持数据snapshot快照功能,读操作不受写操作影响,在读操作过程中始终看到一致的数据; 支持数据压缩(snappy压缩)操作,有效减小存储空间、并增快IO效率; 使用场景 单机kv存储引擎;
小林帮
2021-03-21
7860
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档