数据规模在 10 亿条,表如何设计,什么合适的方案

2018-02-16 20:29:07 +08:00
 thomaswang

比如: 电影资源有 10 亿级别,电影标签有 1000 个( eg:武侠,言情,剧情,悬疑, 90 年代...), 每个电影有不确定个标签

用户检索的时候,可能会点选不确定个标签,这样的场景在实际生产中如何处理

5673 次点击
所在节点    问与答
34 条回复
murmur
2018-02-16 20:35:28 +08:00
有十亿部电影那么多么
Event
2018-02-16 20:36:11 +08:00
@murmur 比如...
murmur
2018-02-16 20:36:41 +08:00
@Event 没有比如 当需求太离谱的时候先反省需求
有的时候从业务上可以把需求优化上去
l30n
2018-02-16 20:43:34 +08:00
有类似如何进行取样,模糊处理后在小规模数据上进行操作的论文。
gouchaoer
2018-02-16 20:46:21 +08:00
电影本身真有 10 亿可以分表,后期流量太大上 tidb,检索上 es 吧,用数据库不现实。。。因为一个标签对应很多电影,你肯定要按照某一规则排序
thomaswang
2018-02-16 20:46:29 +08:00
@murmur 你这么较真,那我把电影改成文章吧
murmur
2018-02-16 20:49:39 +08:00
@thomaswang 不 这种大数据肯定要具体分析的
比如你没提到的:
1、精确度如何,可以漏数据么
2、并发,不谈并发谈大数据都是耍流氓
3、数据更新速度如何,要求某些数据实时刷新么
4、每条数据的数据量如何

就你那个电影的例子,热 tag 缓存 新 tag 人工审核(放你大天朝带审核才是合理业务设计) 再加上电影爱好者的维护 tag 能命中老高的缓存了
wqzjk393
2018-02-16 20:52:25 +08:00
加大服务器集群配置…我千万级别的数据,查询时候只要带个 where 就要几分钟了,加一点运算就要几个小时了。觉得表再怎么设计,对付大数据量都是没啥用
thomaswang
2018-02-16 20:59:45 +08:00
各位老铁,我想表达的是,数据量大一点的,不定个标签搜索,表怎么设计,外加什么软件(es)来提高搜索速度, 这是多年以前的一个面试题目,当时面的是 web 开发,那家公司给了 15k,没有去,我不知道这个题目好一点的答案
guoer
2018-02-16 21:02:17 +08:00
10 亿也不多呀。es 多个节点即可。说到底还是得看具体需求。
murmur
2018-02-16 21:04:17 +08:00
@thomaswang 这还真不好回答
刚才我去时光网看了一下
时光网 2017 年电影的主键才到 2x xxxx 导演多一点 到 100 多 w 了 虽然不知道是不是乱编或者漏了多少数据
但是用电影做例子显然还不够大数据的考点
所以才要求你具体的场景
另外很聪明的时光网貌似没自定义 tag 音乐的量大一点但是网易云也没 tag 所以似乎大家都很聪明的回避了这个问题
nandaye
2018-02-16 21:13:44 +08:00
以 oracle 为例,先对标签分类放不同列很有必要,大多数数据库做模糊搜索效率都比较差,比如年代 tag1,类型 tag2,国家 tag3 等等,然后 tag 加位图索引,必选的 tag 可以直接 partition 分区,问题不大应该。我 3 亿多数据加唯一索引查询零点几秒出结果
ebony0319
2018-02-16 21:21:48 +08:00
电影信息主表,便签主表,另外一个表记录便签与电影信息的关系。分表加索引,查询肯定是分页的。一页二十条应该也很快的。
terranboy
2018-02-16 21:27:13 +08:00
@ebony0319 另一个表存关系 那这个表得多大
sagaxu
2018-02-16 21:30:20 +08:00
@thomaswang 才 15K ?这个问题解决好了,至少值 50K 以上。
izhangzhihao
2018-02-16 21:40:55 +08:00
图数据库
3a3Mp112
2018-02-16 21:44:51 +08:00
其实这不是单纯的表设计问题了, 是大数据的问题。
doubleflower
2018-02-16 21:56:31 +08:00
@wqzjk393 你没做索引而已
feverzsj
2018-02-16 21:59:43 +08:00
10 亿单表还是能处理的,用 clustered index,或者升级下硬件吧
alcarl
2018-02-16 22:17:18 +08:00
应该需要 elastic 了,传统 sql 数据库玩不转

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

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

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

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

© 2021 V2EX