【 在 CrTn 的大作中提到: 】
: 数据类似于std::map<int, std::vector<short>>,存储成单文件,只读,根据int key随机访问,读取一条记录的时候不把整个文件都读进内存,类似于memory map直接寻址只取需要的那条记录,另外需要节省硬盘所以希望用zstd压缩。
: 所以就是个基于memory map文件的std::map和std::vector,加上zstd压缩支持,有啥现成的库可用么?
我不太明白,你说的根据key随机访问是什么意思, 要保存哈希列表吗?
是不是O(1)的访问性能。
如果只是存储, 一对KV数据, 或者一个标签和对应数据。那么普通一个zip文件包就可以。
zip文件压缩包, 其中key值或者标签, 就是压缩包内的文件名, 对应的数据就是文件内容。
python数据分析的numpy库,数据处理使用的npz格式的文件, 差不多就是这样的方式,
可以轻松实现键值访问,也可以支持压缩存储(zip或其它bzip之类支持都行), 另外,内存映射
使用也很简单, 毕竟用于大数据训练。
另外, 键值数据库, berkeley DB支持键值存储方面,比较成熟, 好像也是sqllite的底层存储方式。
这个是个C开源库, 但是新版本被Oracle控制, 新版本用于商业使用受限, 不过早期版本功能也完全够用。
--
FROM 124.126.1.*