SSD学习小结(三)FTL
FTL是SSD固件的核心组成。
leveldb学习记录-log文件
log文件在leveldb的主要作用是防止系统宕机的时候,数据丢失。所以在将键值对写入位于内存的memtable之前,会先写入Log文件中,保证数据的持久化。这样即使系统发生故障,memtable中的数据没有及时Dump到磁盘上,LevelDB仍然可以根据log文件恢复数据。
leveldb源码学习记录-整体架构
leveldb学习记录-编码
计算机硬件有两种数据存储的方式:大端字节序和小端字节序
举例来说,数值0x2211
使用两个字节储存:高位字节是0x22
,低位字节是0x11
。
- 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
- 小端字节序:低位字节在前,高位字节在后,即以
0x1122
形式储存。
编码分为变长的VarInt和固定大小的FixedInt两种,每种分32位和64位。
leveldb学习记录-文件
leveldb学习记录-YCSB测试
YCSB环境安装
昨天在服务器上安装YCSB的测试环境,用来测试leveldb的性能,跑一下实验。本篇博客主要做一个记录,方便日后查看。
ycsb英文全称为Yahoo! Cloud Serving Benchmark (YCSB) 。是Yahoo公司的一个用来对云服务进行基础测试的工具,leveldb的论文中实验测试评估这一章节,主要是采用提供的db_bench作为microbenchmark微基准测试工具,和YCSB作为macrobenchmarks宏基准测试工具,模仿实际的工作load。在运行YCSB的时候,可以配置不同的workload和DB,也可以指定线程数&并发数等其他参数。
主要参考博客:YCSB 测试 LevelDB 数据库
leveldb学习记录-Version
本篇博客主要讲解阅读leveldb源码的version版本管理相关内容,个人的一些笔记。
leveldb学习记录-skiplist
leveldb学习记录-memtable
上一篇博客文章介绍了skiplist,skiplist是leveldb中一个非常重要的数据结构,实现了高效的数据查找和插入,时间复杂度为O(log(n))