在《LSM存储组织结构介绍》一文中,我们了解了LSM存储结构,同时提到针对不同的业务场景,可能需要选择不同的数据库实现。假如需要存储语音、视频或图片,你会选择怎样的实现方式?不需要对类数据进行修改,也不需要排序与范围查找,下面我们来看一种日志型数据库实现方式,因其用于存储语音、图片,我们称其为media数据库。
存储格式
media数据库以数字命名数据文件,每个数据文件大小上限为FileSize左右,fileinfo文件存储当前正在被写入的文件的文件名,数据存储格式如下:
1. 每个数据文件,开头均填充1024个0
2. MMMediaItemHeader表示一条media数据的头部,其由以下字段组成:
iMagic:写入media数据时被统一置为0xffffffff,读取时进行校验
iBufLen:除用于1K对齐的一段外的长度,即len(MMMediaItemHeader)+len(MMAttribute_t)+len(Buf)+len(CheckSum)
hattrLen:MMAttribute_t的长度,即len(MMAttribute_t)
3. MMAttribute_t表示一条media数据的相关属性,由调用方填写,有以下字段组成:
iUinCount&#