腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
工具
TVP
腾讯云架构师技术同盟
返回腾讯云官网
用户5744311的专栏
专栏成员
举报
7
文章
6246
阅读量
7
订阅数
订阅专栏
申请加入专栏
全部文章(7)
python(1)
数据库(1)
sql(1)
打包(1)
存储(1)
数据结构(1)
count(1)
io(1)
key(1)
leveldb(1)
merge(1)
record(1)
tree(1)
version(1)
版本管理(1)
磁盘(1)
队列(1)
序列化(1)
原理(1)
搜索文章
搜索
搜索
关闭
leveldb源码分析--读数据
存储
原理 回想一下LSM数据存储的机制: 1. 热数据保存在内存中MemTable中; 2. 受限于内存存储空间大小的限制,当热数据超过一定大小时,需刷写到磁盘文件中;为了避免刷新过程中与写入操作的互斥锁操作,引入Immutable MemTable来保存待刷盘的、且不可修改的内存热数据; 3. 数据刷写到磁盘中,保存到SSTable文件中; 从数据存储的机制中,我们可以推演出数据读取的流程: 1. 从内存中的MemTable中查找数据,如查找成功则立即返回,如查找不到则到下一层中去查找数据; - M
小林帮
2021-03-22
629
0
leveldb源码分析--写数据
count
key
leveldb
record
队列
由于WAL日志文件和MemTable内存结构是全局共享资源,在多线程同时写入数据时,需加互斥锁来保证操作的隔离性。考虑到写WAL涉及磁盘的写入操作,耗时较久,会影响数据写入的并发性能。
小林帮
2021-03-21
906
0
leveldb源码分析--日志文件格式
python
使用场景 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
842
0
leveldb源码解析--版本管理
数据结构
version
版本管理
序列化
原理
原理 数据结构 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
585
0
leveldb源码解析--打开数据库
数据库
sql
原理 在分析打开leveldb数据库之前,我们先来讨论一下几个类似的子问题: 如何恢复一个进程的运行状态? 如何解决数据索引慢的问题? 主要完成的事项: 构建存储中的MemTable数据结构; 加载SSTable文件查找相关的索引信息; 重放未执行完成的WAL日志; 打开数据库 Status DB::Open(const Options& options, const std::string& dbname, DB** dbptr) { *dbptr = nullptr; DBImpl* impl
小林帮
2021-03-21
1.9K
0
2、leveldb设计原理--LSM
io
merge
tree
磁盘
概念 LSM(Log-Structured Merge Tree) 原理 特点 把随机写转化成顺序写,写入速度快; 读数据可能需多次磁盘IO; 数据操作流程 写数据 追加写WAL日志; 更新内存中的MemTable结构; 读数据 尝试从MemTable中查询数据,如找到即返回;未找到则到下一层中去查找; 尝试从InmemTable中查找数据; 尝试从level0层的SSTable文件中查找数据; 使用二分法从levelN层的SSTable文件中查询数据; 如都未查找到数据,则返回数据不存在; 数据合并(c
小林帮
2021-03-21
530
0
1、leveldb入门体验
打包
简介 leveldb是google开源的一个高性能kv数据存储库。 特点 基于LSM机制存储数据,读写性能高; key、value支持任意的byte类型数组,不单单支持字符串; 一个持久化存储的KV系统,将大部分数据存储到磁盘上; 按照key值顺序存储数据; 操作接口简单,主要接口为Put、Get、Delete; 支持数据snapshot快照功能,读操作不受写操作影响,在读操作过程中始终看到一致的数据; 支持数据压缩(snappy压缩)操作,有效减小存储空间、并增快IO效率; 使用场景 单机kv存储引擎;
小林帮
2021-03-21
869
0
没有更多了
社区活动
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档