一道面试题给我整懵了,求指导

2020-05-19 15:32:22 +08:00
 yuk1no
某大厂二面,前面算法啊项目啊还比较正常,最后直接整了这样一道题。

要求设计一个这样的系统:
1. 能够支撑一百亿订单 id,一亿个用户 id,每天增量更新
2. 提供查询“用户 id-订单 id”pair 是否 valid 的服务
3. 一次查询最多一千万对数据,响应时间越低越好


我懵了,想了半天挤出来了一个 redis set 存数据,t+1 更新,接口接受 csv 文件,面试官不是很满意😂
现在大厂都是这种数据量级吗,动不动就百亿?
4325 次点击
所在节点    问与答
48 条回复
xy2020
2020-05-19 23:43:09 +08:00
用户和订单是一对多,但订单对用户可不是一对一:需要考虑新业务模式的需要,例如代付业务。
tolerance
2020-05-19 23:57:41 +08:00
只是确认有没有,上 bloom filter
MinQ
2020-05-20 00:21:49 +08:00
@yuk1no 根据订单生成时间做切分,其实 Hive SQL 在集群环境下速度不慢,大量数据返回来大概需要几分钟
MinQ
2020-05-20 00:23:28 +08:00
@yuk1no 冷热数据判断在更新的时候处理,新数据同步进 es 和 hive,es 再去除老数据
dingyaguang117
2021-01-17 04:59:26 +08:00
@woodensail 标记冲突不可行吧 对于任意一个新值,都有可能冲突 第一个布隆过滤器就失效了
woodensail
2021-01-18 08:52:55 +08:00
@dingyaguang117 为什么这么说?按我的设想凡是存在冲突的都已经标记在第一个布隆过滤器了,也就是如果发现当前数据能命中第一个布隆过滤器,则直接查库。
dingyaguang117
2021-01-18 12:35:49 +08:00
@woodensail 你说的存在冲突是 正确数据跟正确数据的冲突吧? 查询数据 跟正确数据冲突的情况呢
woodensail
2021-01-18 16:49:07 +08:00
@dingyaguang117 嗯,你是说考虑业务场景类似于 INSERT ON DUPLICATE KEY 吧。这种倒是更简单了,单层过滤器即可。只要命中了就去查库,以避免假阳性。

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

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

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

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

© 2021 V2EX