今天去面试了,问到关于每天入库百万订单的问题,其中关于存储来说,暂时分析如下:
面试官说他们目前一年有几百亿的订单量,当然这个是怎么统计的先不管;
如果使用mysql无疑对数据库性能是一个挑战,可能用到的技术就是各种分库分表一类的,但是面对这么海量的数据,我想还是存放在分布式数据库比较合适,例如使用hbase来存储订单;
那么当前的解决方案是这样:
1)mysql只负责充当一个支持强事务的中转数据库;负责下单到完成订单整个流程的参与者,依靠事务特性保证数据的一致性;
2)将历史订单或者是已经不需要强一致性流转的订单,统一转移到hbase;
3)用户查询已完成或过期的订单,通过hbase查询展示;待付款未完成的可以依然查询mysql.这样既满足场景业务,也支持了海量数据;
如有不妥及不成熟的地方,请指正;