大数据查询

122 天前
 BuGoooo

需求:有 10 亿左右的数据需要做查询,想在毫秒内返回匹配结果

存入的内容如下

id cardno name short createtime
1 Dkmy48k7afjsG9T75BtTHOdssqCIyKtt Jack Ma DKyKtt nowtime

数据库存入的是这些数据,但是我匹配的话是通过 short 来匹配的,有什么好用的软件或方法吗?

付费求指导

2384 次点击
所在节点    数据库
47 条回复
guanhui07
121 天前
建议上 ES 吧 。
RandomJoke
121 天前
@BuGoooo 毫秒内还是毫秒级别啊- -,你说的 1s 以内的话,单表 1000w ,走索引应该都行,关键在于你怎么尽量保证他均匀分布,常见的列式存储和倒排查询比如 ES CH 1s 以内还是比较轻松的
BuGoooo
121 天前
@RandomJoke 1s 不是 1ms 哈哈 1 秒内
hashakei
121 天前
字节 redis 不行么? key 是 short, value 是一个这一行值的 json
BuGoooo
121 天前
@hashakei 但是还要返回 cardno name 这些值 如果光靠 redis 查 会慢吗
COKETSANG
121 天前
@BuGoooo 简单用我本地笔记本生成 1 亿数据测试了下,ck 一天几千次请求轻轻松松
![测试]( https://postimg.cc/dL1Y84vD)
xinyewdz
121 天前
如果一天只有几千的查询,clickhouse 可以的。ES 查询估计够呛
hashakei
121 天前
@BuGoooo #25 可以用 redis 的 hash ,或者 redis 的 string ,存的是 json 格式,不会慢的,redis 的 kv 查询跟数据量没啥关系,就是比较费内存。
hashakei
121 天前
BuGoooo
121 天前
@hashakei 哇哦 这个可以,redis 的 kv 支持模糊吗? 比如我的查 DKyKtt 的时候,如果没有符合的 我就再查 yKtt (降低条件)这样来寻找匹配的数据
BuGoooo
121 天前
@COKETSANG 这个牛 笔记本都能这个响应速度吗 那放服务器不得起飞咯 HAHA
hashakei
121 天前
@BuGoooo #30 不支持,你这种估计得要用 es 了,且性能应该不会太好
superchijinpeng
121 天前
starrocks
crysislinux
121 天前
@BuGoooo redis 有全文搜索插件,就是要算算这么多数据放得下不。
yufeng0681
121 天前
10 亿级别的数据查询,要想办法分开,增加维度让查询的数量级降到千万条数据,这样才能体现出来你的价值(做过设计)。
自己作为消费者,老吐槽 app 越来越大,越来越慢,内存大都被 app 吃掉了。app 开发者就是偷懒,不做设计,业务功能堆堆堆上去,反正手机不停硬件升级
zhangshenglong52
121 天前
@BuGoooo redis key 支持模糊检索 keys *yKtt 可以模糊匹配( keys 不推荐用,会阻塞线程导致 redis 不可用),或者用 SCAN 也支持模糊匹配。
djangovcps
121 天前
elasticsearch 可以做到 15ms ,但是内存至少 32G 起步,机器配置不够查询不太行。
sagaxu
121 天前
10 亿条,索引也就 4 层,short 区分度高的话,内存搞个 32G ,索引全装内存里,随便哪个数据库完整匹配或者后四位都不会超过 1 秒
BuGoooo
121 天前
@djangovcps 单机单节点吗 机器配置可以高点 能带的动不
djangovcps
121 天前
能带动,16 核 64G ,单机没问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1112693

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX