- 主题:求问如何从10亿个字符串里快速取数据
value进行压缩,全load到内存里面,用hashmap查试试,可能一个hashmap不够,量大就慢,那就分片,多线程查
【 在 chemphy123 的大作中提到: 】
: 我有10亿个字符串,每个大概100个字符。
: 这些数据存磁盘上,gzip压缩后大概有18G。
: 需求是,一次按id号从中取20000个字符串出来。
: ...................
--
FROM 218.30.113.*
hashmap不好用的话,就用二分查找,前面一个哥们说的,把所有的key排序(如果不是数值型的,转为数值型),可以多线程二分查找,应该也挺快
【 在 ewenqing 的大作中提到: 】
: value进行压缩,全load到内存里面,用hashmap查试试,可能一个hashmap不够,量大就慢,那就分片,多线程查
--
FROM 218.30.113.*
自己写个小程序很容易,他有128G内存,字符串压缩一下大概60%的效率,加上key的占用,总共7,8十G的空间就够了。你说的这个也行,在内存不够用的时候用文件存储也完全没问题。现在磁盘也挺快的,还有一些针对磁盘加速的开发包。
【 在 chunhui 的大作中提到: 】
: 如果不用现成的kv数据库自己弄,其实不用把字符串加载到内存,只把key加载到内存即可。key指向数据文件的便宜位置。
: 这样内存不需要很多,查找速度飞快,找到key之后根据偏移位置再读字符串。
--
FROM 218.30.113.*