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