- 主题:这个咋写,有什么现成的库可用么
数据类似于std::map<int, std::vector<short>>,存储成单文件,只读,根据int key随机访问,读取一条记录的时候不把整个文件都读进内存,类似于memory map直接寻址只取需要的那条记录,另外需要节省硬盘所以希望用zstd压缩。
所以就是个基于memory map文件的std::map和std::vector,加上zstd压缩支持,有啥现成的库可用么?
--
FROM 32.220.156.*
感觉kv数据库可以完成主要需求,需要适配下啥的,没仔细想。lz自己考虑下
--
FROM 223.104.42.*
用sqlite等本机数据库弄吧
【 在 CrTn 的大作中提到: 】
: 数据类似于std::map<int, std::vector<short>>,存储成单文件,只读,根据int key随机访问,读取一条记录的时候不把整个文件都读进内存,类似于memory map直接寻址只取需要的那条记录,另外需要节省硬盘所以希望用zstd压缩。
: 所以就是个基于memory map文件的std::map和std::vector,加上zstd压缩支持,有啥现成的库可用么?
--
FROM 221.219.211.*
这个需求看着自己撸一个也很快
--
FROM 221.218.160.*
它数据量大,估计还得仔细想想
【 在 z16166 的大作中提到: 】
: 这个需求看着自己撸一个也很快
: --
: 每天半小时节奏光剑,预防老年痴呆
:
--
FROM 223.104.42.*
那是因为需求复杂,楼主的需求描述,肯定还有不到位的地方
【 在 ylh0315 的大作中提到: 】
: 我的职业生涯就是从这里起步的,看似简单,背后是个复杂的链条。当解决了这个问题,马上会出新的问题,拔出萝卜带出泥。
: 眼下用个kV数据库就可以。
--
FROM 221.218.160.*
至少说说数据有多大吧
【 在 CrTn 的大作中提到: 】
: 数据类似于std::map<int, std::vector<short>>,存储成单文件,只读,根据int key随机访问,读取一条记录的时候不把整个文件都读进内存,类似于memory map直接寻址只取需要的那条记录,另外需要节省硬盘所以希望用zstd压缩。
: 所以就是个基于memory map文件的std::map和std::vector,加上zstd压缩支持,有啥现成的库可用么?
--
FROM 114.249.28.*
【 在 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.*
6TB
【 在 gfkid 的大作中提到: 】
: 至少说说数据有多大吧
--
FROM 32.220.156.*
就类似于lmdb,但是需要加上压缩
【 在 poggy 的大作中提到: 】
:
: 我不太明白,你说的根据key随机访问是什么意思, 要保存哈希列表吗?
: 是不是O(1)的访问性能。
: ...................
--
FROM 32.220.156.*