PgSQL · 案例分享 · 从春运抢火车票思考数据库设计
背景 马上春节了, 火车票又到了销售旺季, 一票难求依旧。 抢火车票是很有意思的一个课题,对IT人的智商以及IT系统的健壮性,尤其是数据库的功能和性能都是一种挑战。 为什么这么说呢,我们一起来缕一缕。 一、铁路售票系统的需求 铁路售票系统最基本的需求包括 查询余票、余票统计、购票、车次变化、退票、改签、中转乘车规划 等。 每个需求都有各自的特点,例如 1. 查询余票属于一个高并发的操作,同时需要一定的统计量在里面,需要很强的CPU来支撑实时的查询。 2. 购票则更新的操作居多,需要考虑锁冲突,尽量的让不同的人购买时可并行,或者可以合并多人的购票请求,来减少数据库的更新操作。 3. 中转乘车,当用户需要购买的起点和到达站无票时,需要计算中转的搭乘方案,这个涉及的是数据库的路径规划功能。 我们来逐一分析一下这些需求的特点。 1 查询余票 1. 普通
