滴滴面试题:滴滴打车数据库如何拆分
前端时间去滴滴面试,有一道题目是这样的,滴滴每天有100万的订单,如果让你去设计数据库,你会怎么去设计?
当时我的想法是根据用户id的最后一位对某个特殊的值取%操作,然后根据余数定义表的名字为order_0,order_1,orerder_2......等等,但是这样设计有个问题,滴滴的用户是分成司机和乘客的,现在司机和乘客都有app,,他们在自己的app上看自己的订单的时候那怎么查询呢?这样设计数据只有一方可以便捷的取到数据,对于另一方来说取数据会很麻烦,因此这个方案肯定是不行的。
昨天和在滴滴的一个同事聊这个问题,他和我大致的聊了下他们现在的解决方案,答案就是:搜索引擎,他们目前的解决方案是这样的:订单表按照城市拆分,每个城市的订单只保留最近一个月的订单,一个月之前的订单切换到备库,然后后台通过建立任务将订单的信息都通过索引的方式创建到Elastic Search中,后台的订单列表及app的订单列表展示都是通过搜索引擎来获取的,直接通过接口来获取数据,这样就不需要读表了,大大提高了读取的速度,听完他讲之后,我有种醍醐灌顶的感觉,这样设计不失为一种比较好的解决方案。
优秀技术博客汇总:
http://www.cnblogs.com/wendingding/
美团点评技术博客:
http://tech.meituan.com/
iOS入门实例:弄个目录,前后顺序排版一下,为了方便查看。
1、iOS学习之动态添加Button和监听UIAlertView按钮
3、iOS学习之第二个View使用UITabBarViewController
7、iOS学习之分段Table View的使用(Grouped样式表格)
10、iOS学习之iOS沙盒(sandbox)机制和文件操作(一)
11、iOS学习之iOS沙盒(sandbox)机制和文件操作(二)
12、iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
14、iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
15、iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
16、iOS学习之UINavigationController详解与使用(三)ToolBar
20、iOS开发之iOS程序偏好设置(Settings Bundle)的使用
22、iOS学习之sqlite的创建数据库,表,插入查看数据
24、iOS学习之iOS 使用NINetworkImageView下载图片,google地图图片的获取。
26、iOS学习之自定义弹出UIPickerView或UIDatePicker(动画效果)
汇总各大公司高质量的面试题:
http://ifeve.com/questions/