key-value存储引擎数据组织方式
1.slab方式存储
把文件划分多个等级的块大小(通常以2的次幂方式划分,如 256byte,512byte,1024byte...)。value数据选择存储在“最适合”的块中。这种数据组织方式在内存型服务中也经常使用,如memcached。
优点:块的回收利用较容易,不会产生文件碎片。读取效率比较高
缺点:数据大小不能超过最大块的大小。空间浪费比较严重(取决于实际数据大小分布情况)
何时选择这种存储方式:
1)value长度有上限
2)value数据长度分布有一定规律,可有效控制空间浪费
2.连续空间定长存储
优点:空间利用率比较高。数据大小不受限制。
缺点:高效的空间回收算法实现比较复杂。
这种存储方式在数据组织上较为灵活,是比较通用的存储方式,但回收算法的实现比较复杂。
3.连续空间变长存储。更新和删除操作不做物理删除,通过数据重写回收数据空洞。
优点:数据更新逻辑简单。通过重写来回收空洞,不会造成磁盘碎片。
缺点:需要在合适的时机进行数据重写,暂用额外的系统资源。
何时选择这种存储方式:
1)更新和删除操作不太频繁。读多写少。
2)在业务低峰期,可以接受数据重写操作带来的资源消耗