文件名称:单机存储引擎-htrc110 用户手册
文件大小:1.33MB
文件格式:PDF
更新时间:2024-06-30 06:35:46
分布式
5.1 单机存储引擎 简单来说,单机存储引擎解决如下几个问题: 1, 插入一条数据; 2, 删除一条数据; 3, 更新一条已有的数据; 4, 随机读取一条数据;(Read) 5, 顺序扫描一段范围的数据;(Scan) 磁盘时顺序性设备,适合批量顺序写入,而内存是随机访问设备,适合通过各种数据结构组 织起来从而提供快速的插入、删除、查找性能。单机存储引擎需要解决的问题就是利用好磁 盘和内存的特性。 一般来说,互联网对单机存储引擎的需求有两种:一种应用只需要随机读取功能,没有顺序 读取需求,另一种应用需要兼顾随机读取和顺序扫描需求。另外,单机层面经常需要设计通 用的缓存子系统。 5.1.1 随机访问存储引擎 随机访问存储引擎不支持顺序扫描,因此,这种类型的存储引擎不需要将数据在存储引 擎中连续存放。由于磁盘是顺序读取设备,可以采用 Append-only 的方式:添加一条数据的 时候追加到文件的末尾,删除时索引做标记,修改数据时追加新数据到数据文件末尾并修改 索引指向新位置。修改或者删除的 data 的空间不实时回收,而是通过在系统比较空闲的时 候执行数据重写合并操作。索引存放在内存,可以通过 B+树或者 Hash 的方式组织。这里有 一个问题,如果机器宕机,需要将所有的数据都读取出来才能恢复内存中的全部索引,这个 数据量是很大的。 索引数据也可以先写磁盘在修改内存索引数据结构,由于索引文件远小于数据文件,当 机器出现故障时,只需要将全部的索引数据读取出来构造内存数据结构就可以了。 稍微麻烦点的是数据重写过程,数据重写过程相当于先对数据做一个 Snapshot,然后重 写这份 Snapshot,回收删除和修改操作造成的文件空洞,而且,重写过程中还需要能够接受 新的更新。当需要启动重写过程时,先等待以前的写操作结束,以后的写操作都写新文件(相