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

id
cardno
name
short
createtime

1
Dkmy48k7afjsG9T75BtTHOdssqCIyKtt
Jack Ma
DKyKtt
nowtime

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

short 没啥含义直接 kv 查询的? redis ?

单表大数据? clickhouse

10 亿上 ES 吧

不一定单表,可以多表 可以用 short 的 前后来分一两百个表

可以用分表,10 亿条,es 能干毫秒内吗 铁铁

short 是要查询的内容,要么查全部 要么查后面四位, 只有这两个查询要求
redis 10 亿级的数据 带不动吧?

是 short like 还是需要怎么查?单列查询感觉 clickhouse 的 prewehre 场景蛮合适的

like 应该不行吧,因为我的想法是 先查全部,如果不满足就只要后面 4 个
以我举例的为例,先查询 DKyKtt ,如果没查到则查询 yKtt 的数据 给返回

你可以用 ck 测下,short 一列,sub_short 后 4 位一列。理论上适合 clickhouse 单列 prewhere 应该很快,但是 ck 的 qps 支持不会特别高,qps 比较高的场景建议你试试看 doris

内存给够,有啥不行的

加一列 short_reversed 存数据 reverse(short), 分别给 short 和 short_reversed 加索引。10 亿数据洒洒水啦

不需要 qps 很高,一天可能就最多几千次请求

HAHA 是是是 内存够 啥都能干 ,哪像这种 10 亿级的数据,128g 的内存够不

用 mysql 吗

你要分表的话,如果能保证均匀分布,100 张表,单表不就 1kw 了,索引直出问题不大了吧。。如果你说 1ms 以内,感觉必须得内存了吧。。

#14 任意支持 btree 的数据库

mysql 分表,单表 1kw 的数据,100 张就够了 。但是你的意思是这种情况下最好就是数据能均匀分布到每个表里,如果想提高查询效率,我服务器的内存得拉起来吗

数据在硬盘里的话,怎么估计也不能 1ms 以内,你拉高内存加快本质上不就是从内存出。。

上云也可以,只要做到响应毫秒级内返回就行
铁铁方便 v X 吗 付费求指导 哈哈

我看看 pgsql

建议上 ES 吧 。

毫秒内还是毫秒级别啊- -,你说的 1s 以内的话,单表 1000w ,走索引应该都行,关键在于你怎么尽量保证他均匀分布,常见的列式存储和倒排查询比如 ES CH 1s 以内还是比较轻松的

1s 不是 1ms 哈哈 1 秒内