如何做大数据量的实时层叠筛选,使用什么技术,实现思路是什么?
前提:现有一个表近2亿条数据,例如表字段有“ID”,“姓名”,“年龄”,“所在省份”,“性别”等。
需求:将上述表2亿条数据,根据年龄、所在省份、性别这3个条件,对该表中数据进行筛选出符合条件的数据,要求响应速度快,实时查询。例如我们平时逛淘宝购搜索商品的时候,对商品按照不同的条件进行多项筛选,展示符合条件的商品列表。
还有淘宝和京东商品搜索中的筛选是怎么实现的
本人道行太浅,还请各位大牛帮忙解答,最好能给出实现思路,谢谢谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
一楼说的不完全错,说对了一半,
两点:1.修改表设计,把原来的用户表拆分至少三张表:
1).关键字表,把需要查询的字段的所有内容都做一次分词提取出关键字放入此表。
2). 主表文档化结构即只存两个字段,Hash和json将其它字段如名字,年纪,所在省份序列化成json存到这个字段。
3)主表关键字关系表即关键字表里与主表的主键关联。
打比方 :姓名:张国庆。那张国庆因为划词出来。存到关系表里形成记录id :1 keyword:张。id:2 keyword国庆。两条
这时 张国庆这条主表记录 hash值123,json内容{name:“张国庆”。。。},这时就需要在第三张表中加两条记录。
key_id:1 user_id :123
key_id:2 userid:123
2.查询的时候根据关键字找到其编号,然后在关系表里找到出现这个关键字的记录。
而不是去like 字段,这样别说2亿条,2百亿条一点问题都没有。
当然这个也有一个问题,就是生成关键字的会比较花时间,而且新增记录需要增量生成(这就需要算法)。
但是优点在于查询速度比一般查询要高10倍。这也就是索引的思想。所以我说1楼对了一半。
按照注册时间写入到时序数据库 查询速度应该在120ms左右
分裤分表
隐隐记得哈,记不太清了,希望没记错,别在帮了倒忙。
我记得好像看到有正则关键字匹配项,是做搜索时用的。
哥们,全文检索不合适吧,2亿条数据呢。