上亿调数据检索,用什么可以提高效率

2016-07-07 12:39:22 +08:00
 yangyaofei

需求是这样的,有现在有千万条数据,以后会增加到上亿调,使用一些字段是文本。 检索的时候是所有字段的组合,而且会用大量的模糊检索。

找了个外包做这个,用 sphinx 做索引,在 50w 不到的数据中查询,复杂一些的查询会用到 40s ……,问一下这个是 sphinx 的极限了,还是外包不会优化………

出现的检索有可能是好几个字段都是模糊的,还有各种 and or 什么的……

6537 次点击
所在节点    程序员
29 条回复
qcloud
2016-07-07 17:35:22 +08:00
elasticsearch
strahe
2016-07-07 17:37:49 +08:00
蒙你的
yangyaofei
2016-07-07 20:41:03 +08:00
@laoyuan 有标题也有内容,很多都是长文本

@br00k
@coolloves
@windfarer
@notgod 好的,我去谷歌去了~
@qcloud
@xiasix 那个外包比较水,他们根本不懂。。。。。
@linoder 好的,去谷歌了。。。话说这个和 es 区别是啥?

@3dwelcome 哦~~关键是需求是前台可以利用基本上所有的类似 sql 的语句进行检索,所以很难去针对检索去优化
@slixurd 其实索引难可以忍受的,关键是建立完索引之后慢。。。还有就是外包更是不懂。我问他们这个问题(瓶颈在哪儿),他们表示不知道。。。。

@lecher 貌似他们用的是 sphinx for chinese 那个项目。。。我确实能确定是 sphinx 的,他们的查询基本上都是用 sphinx 查到 ID 再用 ID 从数据库中拿数据。。。
@SlipStupig 是么。。。。我准备明年有时间了自己重新做系统了已经。。。。

@realpg 这个可以

@strahe 啊?怎么讲?
kn007
2016-07-07 20:52:22 +08:00
关注
Suclogger
2016-07-07 23:25:46 +08:00
虽然目前量级很小,还是要推荐 elasticsearch
lecher
2016-07-07 23:38:27 +08:00
要处理中文词组建索引,基本上都是 sphinx for Chinese 这个项目做的。
sphinx 查到 ID ,再根据 ID 去数据库取数据这个思路并没有大问题,上个内存缓存,按 ID 作为 key 存一下,可以节省一些重复查询的性能。

那你们的业务支持一次 sphinx 查询就取出这个分页的所有数据 ID 了吗?

再深入一点的调优,词库多大,查询的词在不在词库里面,你这次 40 秒的查询,对应的是 sphinx 的什么查询,这个查询出结果耗时多久。
最终根据 ID 去数据库取数据又耗时多久。

外包的团队能不能把执行时间和性能消耗量化出来。如果他们就知道搭个环境直接跑,不知道如何检测分析性能消耗在哪个阶段,那根本没法调优了。
yangyaofei
2016-07-08 01:17:47 +08:00
@lecher 外包团队不幸是最后一种…………明年准备自己重做了………
yaodong
2016-07-08 10:11:56 +08:00
根据实际经验回答, sphinx 完全可以支持这个数据量,并且可以做到很快。
schoolers
2016-07-11 21:21:57 +08:00
elasticsearch 集群,可以交流一下

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

https://www.v2ex.com/t/290843

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

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

© 2021 V2EX