滴滴面试题:滴滴打车数据库如何拆分
前端时间去滴滴面试,有一道题目是这样的,滴滴每天有100万的订单,如果让你去设计数据库,你会怎么去设计?
当时我的想法是根据用户id的最后一位对某个特殊的值取%操作,然后根据余数定义表的名字为order_0,order_1,orerder_2......等等,但是这样设计有个问题,滴滴的用户是分成司机和乘客的,现在司机和乘客都有app,,他们在自己的app上看自己的订单的时候那怎么查询呢?这样设计数据只有一方可以便捷的取到数据,对于另一方来说取数据会很麻烦,因此这个方案肯定是不行的。 昨天和在滴滴的一个同事聊这个问题,他和我大致的聊了下他们现在的解决方案,答案就是:搜索引擎,他们目前的解决方案是这样的:订单表按照城市拆分,每个城市的订单只保留最近一个月的订单,一个月之前的订单切换到备库,然后后台通过建立任务将订单的信息都通过索引的方式创建到Elastic Search中,后台的订单列表及app的订单列表展示都是通过搜索引擎来获取的,直接通过接口来获取数据,这样就不需要读表了,大大提高了读取的速度,听完他讲之后,我有种醍醐灌顶的感觉,这样设计不失为一种比较好的解决方案。
优秀技术博客汇总:
http://www.cnblogs.com/wendingding/
美团点评技术博客:
http://tech.meituan.com/
iOS入门实例:弄个目录,前后顺序排版一下,为了方便查看。
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
11、
12、
13、
14、
15、
16、
17、
18、
19、
20、
21、
22、
23、
24、
25、
26、
汇总各大公司高质量的面试题:
http://ifeve.com/questions/