Python 50 万个 KV 数据, 用什么过滤/搜索方案搜索? (目前用 Whoosh)

2020-04-09 08:04:02 +08:00
 wzw

数据

p1 = {
  "brand": "Ford",
  "model": "Mustang",
  "tag": ['A','BB', 'xxx'],
  "year": 1964
}

需求

现状

请大家说说有什么比较好的方案, (数据放内存, 会不会更快)

1739 次点击
所在节点    问与答
14 条回复
RHxW
2020-04-09 08:08:53 +08:00
es ?
wzw
2020-04-09 08:13:42 +08:00
@RHxW #1 es 和 Whoosh 算是类似了吧
lzxz1234
2020-04-09 08:49:53 +08:00
es 支持集群是搜索的完整方案了
SjwNo1
2020-04-09 08:51:56 +08:00
持续关注
lhx2008
2020-04-09 08:54:56 +08:00
mysql 硬顶也没事。。区分度那么大
swulling
2020-04-09 08:58:21 +08:00
从给的示例看,传统的关系数据库没啥不行的。
wzw
2020-04-09 09:08:34 +08:00
@swulling #6
@lhx2008 #5

我用的是 NoSql 数据库呀
rrfeng
2020-04-09 09:53:42 +08:00
50w 随便搞吧…

tag 这种字段可以单独拆出来,如果以后会变大。当然现在这点 MongoDB 里无所谓。建好索引就行
Vegetable
2020-04-09 09:57:11 +08:00
50w 真随便搞,mongodb 能给你这 50w 全缓存到内存里,获得近似 redis 的体验.
关系数据库其实也一样.
cabing
2020-04-09 09:59:56 +08:00
计算下数据占用的内存空间,假设一条数据 128 个字节。128*500k = 64000k = 54M

假设一个 k-v 是 1.28k ,也才 540M,都是毛毛雨。

考虑下以后的增长量有限的话,真可以随便玩了。


自己建个字典树都没问题。。
qlhai
2020-04-09 10:18:10 +08:00
如果就这几个字段,50 万扔 MySQL 里没问题啊
marcushbs
2020-04-09 10:34:39 +08:00
50w 放内存
wzw
2020-04-09 10:45:36 +08:00
@marcushbs #12 @cabing #10 @Vegetable #9

内存肯定是够用的, 关键用什么方案呀? 有时候单个商品更新, 也需要去更新这些缓存呀.
cabing
2020-04-09 16:43:44 +08:00
@wzw 更新写队列,更新下缓存就行。

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

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

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

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

© 2021 V2EX