- 主题:求问如何从10亿个字符串里快速取数据
我有10亿个字符串,每个大概100个字符。
这些数据存磁盘上,gzip压缩后大概有18G。
需求是,一次按id号从中取20000个字符串出来。
这20000个id号是分散的,不集中。
我尝试了用h5py按hdf5格式存储和读取,试了多种途径,速度都比较慢,大概在3分钟左右。
hdf5取连续的20000数据比较快,但是从10亿个数据里取分散的20000个数据就比较慢。
求问有没有好方法,快速取数据。
我隐隐约约觉得这是大数据查询里面常碰到的场景,求大神赐教
--
修改:chemphy123 FROM 180.168.176.*
FROM 180.168.176.*
随便找个大数据的引擎把你的数据导进去就可以了。
如果你想要自己开发这部分的话,参考野猪书的存储和索引部分
【 在 chemphy123 的大作中提到: 】
: 我有10亿个字符串,每个大概100个字符。
: 这些数据存磁盘上,gzip压缩后大概有18G。
: 需求是,一次按id号从中取20000个字符串出来。
: ...................
--
FROM 180.158.1.*
有小巧一些的查询引擎推荐么
…本地能起的
谢谢
- 来自 水木社区APP v3.5.7
【 在 zeus2615 的大作中提到: 】
: 随便找个大数据的引擎把你的数据导进去就可以了。
: 如果你想要自己开发这部分的话,参考野猪书的存储和索引部分
--
FROM 117.136.38.*
我搜了一下,貌似一种叫key-value的数据库适合我这应用场景
redis我可以用吗?
网上说是把数据都载入内存,我没搞懂redis到底把啥载入内存。
我这数据解压出来大概有100G,redis会都load到内存里吗?
如果都载入,内存肯定不够用的。
【 在 zeus2615 的大作中提到: 】
: 随便找个大数据的引擎把你的数据导进去就可以了。
: 如果你想要自己开发这部分的话,参考野猪书的存储和索引部分
--
修改:chemphy123 FROM 180.168.176.*
FROM 180.168.176.*
redis确实是干这个活的,如果经常用,直接用云服务的呗
【 在 chemphy123 的大作中提到: 】
: 我搜了一下,貌似一种叫key-value的数据库适合我这应用场景
: redis我可以用吗?
: 网上说是把数据都载入内存,我没搞懂redis到底把啥载入内存。
: ...................
--
FROM 14.145.214.*
具体实现你其实不用管的
想快就要进内存, 内存不够就要分批整, 自然就快不起来
随机查询快, 本地小内存运行, 通用软件
以上三点是个不可能三角
你自己做好取舍
要么自己找到数据和查询的特性, 有针对性的编算法查询
要么加SSD加内存上服务器
要么就要忍一下速度慢
【 在 chemphy123 的大作中提到: 】
: 我搜了一下,貌似一种叫key-value的数据库适合我这应用场景
: redis我可以用吗?
: 网上说是把数据都载入内存,我没搞懂redis到底把啥载入内存。
: ...................
--
FROM 123.123.200.*
可以用,取决于你想付出什么代价来达到你想要的效果。
redis把数据全部加载到内存,如果内存不够,就是使用LRU淘汰掉旧数据(还有其他策略,防杠)
一台机器不够,可以搞个redis集群,让内存足够大。
但是如果你没有那么大的内存,可以考虑hbase,row对应你的key。
如果你连搭hbase的机器都不够,考虑下多台mongodb
如果你连mongodb都装不了,你可以使用普通关系数据库,分库分表或者集群化方案。
【 在 chemphy123 的大作中提到: 】
: 我搜了一下,貌似一种叫key-value的数据库适合我这应用场景
: redis我可以用吗?
: 网上说是把数据都载入内存,我没搞懂redis到底把啥载入内存。
: ...................
--
修改:lokta FROM 223.104.97.*
FROM 223.104.97.*
你本地的redis肯定不行啊
找个云上的redis应该可以
【 在 chemphy123 的大作中提到: 】
: 我搜了一下,貌似一种叫key-value的数据库适合我这应用场景
: redis我可以用吗?
: 网上说是把数据都载入内存,我没搞懂redis到底把啥载入内存。
: ...................
--
FROM 210.30.193.*
多谢大神指点。
我是想本地用redis的,机器内存有128G ,redis能够完成我的需求场景吗?
请问redis载入内存是啥意思,是整个库的key和value全部进内存吗?
【 在 xuanqing 的大作中提到: 】
: 具体实现你其实不用管的
: 想快就要进内存, 内存不够就要分批整, 自然就快不起来
: 随机查询快, 本地小内存运行, 通用软件
: ...................
--
FROM 180.168.176.*
请问大神128G内存够吗?
Redis是把整库的key和value全部载入内存吗?
【 在 lokta 的大作中提到: 】
: 可以用,取决于你想付出什么代价来达到你想要的效果。
: redis把数据全部加载到内存,如果内存不够,就是使用LRU淘汰掉旧数据(还有其他策略,防杠)
: 一台机器不够,可以搞个redis集群,让内存足够大。
: ...................
--
FROM 180.168.176.*