阿里面试题——天猫部

设计12306售票系统的数据库

订票系统分解,得到位池、余票池、订票池、取票池四个票务处理系统,以及独立的前台伺服系统、支付系统和通知系统,其中的精华就是位池、余票池系统。售票窗和电话取票内部原理与网上订票一样,只是多了一个人工客服或电话客服。将订票系统分解,目的是使订票事件异步处理,独立系统处理专业事件,实现简单,效率更高。子系统对应的数据结构也更符合实际需求,数据处理更快。每个子系统的处理任务不同,对服务器的要求也不同,从而实现服务器的灵活配置。分解系统的依据是使票务信息数据库结构更简单、查询链更短、“静态化”。如此以来,我们查询票务信息时面对的仿佛就是一张简单的表格,根据我们提供的列车车次或者出发站/目的站直接就可以定位到相应列车的余票信息。而且这个余票信息还是实时更新的——后台驱动在默默地为您服务。

位池系统

 位池系统是余票查询与订票的基础。位池数据库记录所有列车每一个票位在沿途各站点的使用情况
{ /** 位池文档结构,订票系统的根基,发生订票时,向余票池请求减去或增加相应票位,向待支付票池请求生成订单。
一个文档对应列车中的一个位,如座位或者卧铺位,甚至站位。
文档的集合形成一个特定车次的列车。
一般一趟车次有不到2000车位,即集合里面文档树不到2000个,如开放站票可能会多点。
一天内所有列车集合形成当日所有列车位池数据库,当日列车位池形成当日位池数据库。
全国有不到5000次列车,即表示每日的数据库中约有不到5000个集合,每日一个数据库*/
    "_id" : 列车位唯一ID,    //由‘日期+列车ID+列车位ID’编码而成。
    "seat_type" : 位

你可能感兴趣的:(Java研究者)