由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 我说老 bug,给个数据库模型大家学习学习
相关主题
分布式分票算法古德霸啊古德霸,不打你脸是不行了
古德八你也别废话了postgres 值得学吗?
魏老师的方案ES怎么玩?
好多人害怕锁12306仍然一塌糊涂
transaction衡量都要有标准哈哈 adp用芒果了。这下eventual consistency好玩了。求奖金多发一个0.
用 golang build 一个 HA 的 distributed system一般怎么搞?请教系统架构的实现(给最靠谱的设计10个包子)
春运之争打酱油谁能推荐剖析SQL/NoSQL本质区别的文章?
乱砍两句火车订票菜鸟也玩数据库
相关话题的讨论汇总
话题: 数据库话题: 车次话题: 模型话题: 站点话题: 优化
进入Programming版参与讨论
1 (共1页)
q*c
发帖数: 9453
1
老魏给了模型了,好歹大家能看看咋工作的。你也给个数据库车票模型,大家看看?
说这个是因为昨晚我想上个高端机器看看数据库能到啥程度,结果发现这个不好弄!下
次面试阿三题就这个了:
如何设计一个火车车票数据库模型,支持查询任意给定两站有没有票,有票的话优化座
号多少? 沿途旅客任意上下车,火车任意增减车厢(所以各点运力不同,,不能换座)
对于数据库锁定交易什么的都是容易, 但是昨晚我想了一会,竟然没法设计出高效的
表来支持这种交易。这个问题很有意思!
这个面试题有意思,有兴趣的都来贡献一下?
n*****t
发帖数: 22014
2
LOL

【在 q*c 的大作中提到】
: 老魏给了模型了,好歹大家能看看咋工作的。你也给个数据库车票模型,大家看看?
: 说这个是因为昨晚我想上个高端机器看看数据库能到啥程度,结果发现这个不好弄!下
: 次面试阿三题就这个了:
: 如何设计一个火车车票数据库模型,支持查询任意给定两站有没有票,有票的话优化座
: 号多少? 沿途旅客任意上下车,火车任意增减车厢(所以各点运力不同,,不能换座)
: 对于数据库锁定交易什么的都是容易, 但是昨晚我想了一会,竟然没法设计出高效的
: 表来支持这种交易。这个问题很有意思!
: 这个面试题有意思,有兴趣的都来贡献一下?

q*c
发帖数: 9453
3
笑啥?给个数据库模型是正经!

【在 n*****t 的大作中提到】
: LOL
L*****e
发帖数: 8347
4
一个table放车次本身信息,有以下column
车次(primary key),站点,站点顺序,车厢号,车厢种类(硬座,硬卧,软卧),
车厢容量(座位数,卧铺数)
一个辅助table给车厢座位分座号
车次(secondary key),车厢号,座位/卧铺号
另一个table处理和售票有关的信息
车次(secondary key),座位号,20列bool表示该座位在该车次站点的售出情况(假
设20是所有车次最多可有的站点)

★ 发自iPhone App: ChineseWeb 8.2.2

【在 q*c 的大作中提到】
: 老魏给了模型了,好歹大家能看看咋工作的。你也给个数据库车票模型,大家看看?
: 说这个是因为昨晚我想上个高端机器看看数据库能到啥程度,结果发现这个不好弄!下
: 次面试阿三题就这个了:
: 如何设计一个火车车票数据库模型,支持查询任意给定两站有没有票,有票的话优化座
: 号多少? 沿途旅客任意上下车,火车任意增减车厢(所以各点运力不同,,不能换座)
: 对于数据库锁定交易什么的都是容易, 但是昨晚我想了一会,竟然没法设计出高效的
: 表来支持这种交易。这个问题很有意思!
: 这个面试题有意思,有兴趣的都来贡献一下?

n*****t
发帖数: 22014
5
你这是强人所难啊,数据库干这活没法高效

【在 q*c 的大作中提到】
: 笑啥?给个数据库模型是正经!
w**z
发帖数: 8232
6
懂不懂什么叫Shard啊?

【在 n*****t 的大作中提到】
: 你这是强人所难啊,数据库干这活没法高效
n*****t
发帖数: 22014
7
要快速检索,第三个表不行,必须改成 。。。先不告诉古德八

【在 L*****e 的大作中提到】
: 一个table放车次本身信息,有以下column
: 车次(primary key),站点,站点顺序,车厢号,车厢种类(硬座,硬卧,软卧),
: 车厢容量(座位数,卧铺数)
: 一个辅助table给车厢座位分座号
: 车次(secondary key),车厢号,座位/卧铺号
: 另一个table处理和售票有关的信息
: 车次(secondary key),座位号,20列bool表示该座位在该车次站点的售出情况(假
: 设20是所有车次最多可有的站点)
:
: ★ 发自iPhone App: ChineseWeb 8.2.2

L*****e
发帖数: 8347
8
然后看看满足你要求不。
1。给出车次,起点,终点,给出是否有票
第一个table里query,拿到起点,终点的站点顺序
然后车票table里,query有没有一个座位起点号列到终点好列全是true,有这样的row
存在,就有票。
2。座位优化
满足上述条件的rows按座位生存多少排序(true最少的排前面),并检查要求起点站前
一站或者要求终点站后一站是否售出,如果是,优先选择。
3。不同站车厢增减。
更新三个table信息
根据实际运用情况,可以对每个车次生成一个view,方便编程
还有什么其它的,大家补充。。。

★ 发自iPhone App: ChineseWeb 8.2.2

【在 L*****e 的大作中提到】
: 一个table放车次本身信息,有以下column
: 车次(primary key),站点,站点顺序,车厢号,车厢种类(硬座,硬卧,软卧),
: 车厢容量(座位数,卧铺数)
: 一个辅助table给车厢座位分座号
: 车次(secondary key),车厢号,座位/卧铺号
: 另一个table处理和售票有关的信息
: 车次(secondary key),座位号,20列bool表示该座位在该车次站点的售出情况(假
: 设20是所有车次最多可有的站点)
:
: ★ 发自iPhone App: ChineseWeb 8.2.2

n*****t
发帖数: 22014
9
咱俩打个赌,你用 whatever DB,我用草地 C,你的速度能超过我的一半算我输,这个
简单吧
我的算法贴过几次,随便用,不算你抄袭

【在 w**z 的大作中提到】
: 懂不懂什么叫Shard啊?
i**i
发帖数: 1500
10
RDBMS = no way = Oracle does not have more advantage over TW
If you don't like any sb, use it as the interview question.

座)

【在 q*c 的大作中提到】
: 老魏给了模型了,好歹大家能看看咋工作的。你也给个数据库车票模型,大家看看?
: 说这个是因为昨晚我想上个高端机器看看数据库能到啥程度,结果发现这个不好弄!下
: 次面试阿三题就这个了:
: 如何设计一个火车车票数据库模型,支持查询任意给定两站有没有票,有票的话优化座
: 号多少? 沿途旅客任意上下车,火车任意增减车厢(所以各点运力不同,,不能换座)
: 对于数据库锁定交易什么的都是容易, 但是昨晚我想了一会,竟然没法设计出高效的
: 表来支持这种交易。这个问题很有意思!
: 这个面试题有意思,有兴趣的都来贡献一下?

相关主题
用 golang build 一个 HA 的 distributed system一般怎么搞?古德霸啊古德霸,不打你脸是不行了
春运之争打酱油postgres 值得学吗?
乱砍两句火车订票ES怎么玩?
进入Programming版参与讨论
L*****e
发帖数: 8347
11
当然,真正做系统时,检索这部分恐怕要放到内存数据库中去做,就照你提的算法,然
后把结果更新到硬盘数据库。。。
从另一方面讲,因为检索是可以有延迟的,而且没有写,可以distribute到N个sever上
去做以对付高并发检索。。。
而古德八的出票是异步处理,所以应该也不是大问题,当然,能不能达到他的目标我就
不知道了。应该是还有不小的优化余地。。。我这不是暖暖身,我去面试老q他们组做
做准备么,表太苛求。。。

★ 发自iPhone App: ChineseWeb 8.2.2

【在 n*****t 的大作中提到】
: 要快速检索,第三个表不行,必须改成 。。。先不告诉古德八
t**********1
发帖数: 550
12
你太保守了。
可以给wwzz打99折。
他要是持续每秒1万张就算我输。

【在 n*****t 的大作中提到】
: 咱俩打个赌,你用 whatever DB,我用草地 C,你的速度能超过我的一半算我输,这个
: 简单吧
: 我的算法贴过几次,随便用,不算你抄袭

n*****t
发帖数: 22014
13
不单是这个问题,效率首先不说了,算法首先不对,数据库实现的化,这种结构的表
。。。
我先学习古德八和赵策,晚上给出我的表设计

【在 L*****e 的大作中提到】
: 当然,真正做系统时,检索这部分恐怕要放到内存数据库中去做,就照你提的算法,然
: 后把结果更新到硬盘数据库。。。
: 从另一方面讲,因为检索是可以有延迟的,而且没有写,可以distribute到N个sever上
: 去做以对付高并发检索。。。
: 而古德八的出票是异步处理,所以应该也不是大问题,当然,能不能达到他的目标我就
: 不知道了。应该是还有不小的优化余地。。。我这不是暖暖身,我去面试老q他们组做
: 做准备么,表太苛求。。。
:
: ★ 发自iPhone App: ChineseWeb 8.2.2

n*****t
发帖数: 22014
14
俺们这种买卖人都是周扒皮,能不打折尽量不打折,五折其实我已经狠心痛了

【在 t**********1 的大作中提到】
: 你太保守了。
: 可以给wwzz打99折。
: 他要是持续每秒1万张就算我输。

t**********1
发帖数: 550
15
老姜,你时间好多。

【在 n*****t 的大作中提到】
: 不单是这个问题,效率首先不说了,算法首先不对,数据库实现的化,这种结构的表
: 。。。
: 我先学习古德八和赵策,晚上给出我的表设计

w**z
发帖数: 8232
16
怎么优化车次? 上海到北京有很多车,怎么排序? 需要有个算法。

row

【在 L*****e 的大作中提到】
: 然后看看满足你要求不。
: 1。给出车次,起点,终点,给出是否有票
: 第一个table里query,拿到起点,终点的站点顺序
: 然后车票table里,query有没有一个座位起点号列到终点好列全是true,有这样的row
: 存在,就有票。
: 2。座位优化
: 满足上述条件的rows按座位生存多少排序(true最少的排前面),并检查要求起点站前
: 一站或者要求终点站后一站是否售出,如果是,优先选择。
: 3。不同站车厢增减。
: 更新三个table信息

n*****t
发帖数: 22014
17
下岗了,穷得只剩时间了

【在 t**********1 的大作中提到】
: 老姜,你时间好多。
q*c
发帖数: 9453
18
查询给定时间站有没有余票咋整,怎么出优化座位。

【在 L*****e 的大作中提到】
: 一个table放车次本身信息,有以下column
: 车次(primary key),站点,站点顺序,车厢号,车厢种类(硬座,硬卧,软卧),
: 车厢容量(座位数,卧铺数)
: 一个辅助table给车厢座位分座号
: 车次(secondary key),车厢号,座位/卧铺号
: 另一个table处理和售票有关的信息
: 车次(secondary key),座位号,20列bool表示该座位在该车次站点的售出情况(假
: 设20是所有车次最多可有的站点)
:
: ★ 发自iPhone App: ChineseWeb 8.2.2

w**z
发帖数: 8232
19
没人和你比单机性能。单机比不过你的计数器,这我承认。只要找到合理的办法和算法
sharding,加机器就行了。

【在 t**********1 的大作中提到】
: 你太保守了。
: 可以给wwzz打99折。
: 他要是持续每秒1万张就算我输。

t**********1
发帖数: 550
20
咱们这种高端货,打99折wwzz都不敢接。不信你问丫敢接么?
所以zhaoce早就打定主意出来卖一辈子了。啥都不用会,只要抱定卖一辈子的决心就好
了。

【在 n*****t 的大作中提到】
: 俺们这种买卖人都是周扒皮,能不打折尽量不打折,五折其实我已经狠心痛了
相关主题
12306仍然一塌糊涂谁能推荐剖析SQL/NoSQL本质区别的文章?
哈哈 adp用芒果了。这下eventual consistency好玩了。求奖金多发一个0.菜鸟也玩数据库
请教系统架构的实现(给最靠谱的设计10个包子)奉劝一句那些动不动就谈架构的傻逼,谨言慎行
进入Programming版参与讨论
w**z
发帖数: 8232
21
看,这是问题的关键,怎么shard.

【在 q*c 的大作中提到】
: 查询给定时间站有没有余票咋整,怎么出优化座位。
q*c
发帖数: 9453
22
你这个查询和座位优化的 sql 还是相当麻烦的, 看下周要出差,可以搞一搞看看能上
多少次。

row

【在 L*****e 的大作中提到】
: 然后看看满足你要求不。
: 1。给出车次,起点,终点,给出是否有票
: 第一个table里query,拿到起点,终点的站点顺序
: 然后车票table里,query有没有一个座位起点号列到终点好列全是true,有这样的row
: 存在,就有票。
: 2。座位优化
: 满足上述条件的rows按座位生存多少排序(true最少的排前面),并检查要求起点站前
: 一站或者要求终点站后一站是否售出,如果是,优先选择。
: 3。不同站车厢增减。
: 更新三个table信息

n*****t
发帖数: 22014
23
效为先啊,话说我的算法改改不就能建表了摸?

【在 q*c 的大作中提到】
: 你这个查询和座位优化的 sql 还是相当麻烦的, 看下周要出差,可以搞一搞看看能上
: 多少次。
:
: row

t**********1
发帖数: 550
24
行,用多少台机器随你便,目标10k票每秒。

【在 w**z 的大作中提到】
: 没人和你比单机性能。单机比不过你的计数器,这我承认。只要找到合理的办法和算法
: sharding,加机器就行了。

w**z
发帖数: 8232
25
说了不和你比无敌计数器。

【在 t**********1 的大作中提到】
: 咱们这种高端货,打99折wwzz都不敢接。不信你问丫敢接么?
: 所以zhaoce早就打定主意出来卖一辈子了。啥都不用会,只要抱定卖一辈子的决心就好
: 了。

q*c
发帖数: 9453
26
你这有问题。
车次不该包含站点性息。车次站点都是多对多,应该是车次一个表,站点一个表,
车次站点叉一个大表。
车次票另外一个表。
这事情比我想的要复杂。

【在 L*****e 的大作中提到】
: 一个table放车次本身信息,有以下column
: 车次(primary key),站点,站点顺序,车厢号,车厢种类(硬座,硬卧,软卧),
: 车厢容量(座位数,卧铺数)
: 一个辅助table给车厢座位分座号
: 车次(secondary key),车厢号,座位/卧铺号
: 另一个table处理和售票有关的信息
: 车次(secondary key),座位号,20列bool表示该座位在该车次站点的售出情况(假
: 设20是所有车次最多可有的站点)
:
: ★ 发自iPhone App: ChineseWeb 8.2.2

n*****t
发帖数: 22014
27
老魏你就是托大,像我这种金算盘随身带的,万年不赔,哈哈

【在 t**********1 的大作中提到】
: 咱们这种高端货,打99折wwzz都不敢接。不信你问丫敢接么?
: 所以zhaoce早就打定主意出来卖一辈子了。啥都不用会,只要抱定卖一辈子的决心就好
: 了。

L*****e
发帖数: 8347
28
啊?优化车次?又是一个新要求啊。。。车次优劣的比较参数是,出发时间?抵达时间
?经过站数?速度?票价?火车妹妹的漂亮程度?先明确一下嘛。。。

★ 发自iPhone App: ChineseWeb 8.2.2

【在 w**z 的大作中提到】
: 怎么优化车次? 上海到北京有很多车,怎么排序? 需要有个算法。
:
: row

q*c
发帖数: 9453
29
一半?数据库支持查询index, acid failover 各种操作,有你的c 20分之一就赢了。

【在 n*****t 的大作中提到】
: 咱俩打个赌,你用 whatever DB,我用草地 C,你的速度能超过我的一半算我输,这个
: 简单吧
: 我的算法贴过几次,随便用,不算你抄袭

L*****e
发帖数: 8347
30
嗯,翘首以待。。。

★ 发自iPhone App: ChineseWeb 8.2.2

【在 n*****t 的大作中提到】
: 不单是这个问题,效率首先不说了,算法首先不对,数据库实现的化,这种结构的表
: 。。。
: 我先学习古德八和赵策,晚上给出我的表设计

相关主题
说到底还是app 层 engineer 和 系统层engineer在斗法古德八你也别废话了
qxc,我接招了,你给的要求太弱的,给你加强了魏老师的方案
分布式分票算法好多人害怕锁
进入Programming版参与讨论
t**********1
发帖数: 550
31
wwzz敢接招么。
要支持联票和团体票。
我的单机也支持联票和团体票的transaction。
咱们公平,算的是票数,不是transaction数量。
给你的目标很低,是10k每秒。
我的单机目标很高1mm 每秒。

【在 t**********1 的大作中提到】
: 行,用多少台机器随你便,目标10k票每秒。
n*****t
发帖数: 22014
32
你们这些家伙,砸我买卖狠好玩吗!

【在 q*c 的大作中提到】
: 一半?数据库支持查询index, acid failover 各种操作,有你的c 20分之一就赢了。
q*c
发帖数: 9453
33
优化的定义是,出了一张票,导致剩下该列车的连续区间最少(座位碎片最少)
老 bug 给的定义,还是非常准确简单的。

【在 w**z 的大作中提到】
: 怎么优化车次? 上海到北京有很多车,怎么排序? 需要有个算法。
:
: row

L*****e
发帖数: 8347
34
是,这个query效率肯定不高,应该有很大优化余地。。。优化这东西,不具体动手做
个调试很难具体有效。。。

★ 发自iPhone App: ChineseWeb 8.2.2

【在 q*c 的大作中提到】
: 你这个查询和座位优化的 sql 还是相当麻烦的, 看下周要出差,可以搞一搞看看能上
: 多少次。
:
: row

q*c
发帖数: 9453
35
你们那几百文,你以为是个人都退休了?有那时间看。

【在 n*****t 的大作中提到】
: 效为先啊,话说我的算法改改不就能建表了摸?
w**z
发帖数: 8232
36
你的是全国一盘棋。和这不一样。别瞎掺和。我先接孩子。回来再说。

【在 t**********1 的大作中提到】
: wwzz敢接招么。
: 要支持联票和团体票。
: 我的单机也支持联票和团体票的transaction。
: 咱们公平,算的是票数,不是transaction数量。
: 给你的目标很低,是10k每秒。
: 我的单机目标很高1mm 每秒。

q*c
发帖数: 9453
37
好歹模型设计的时候就不能出发点是线性扫描吧。

【在 L*****e 的大作中提到】
: 是,这个query效率肯定不高,应该有很大优化余地。。。优化这东西,不具体动手做
: 个调试很难具体有效。。。
:
: ★ 发自iPhone App: ChineseWeb 8.2.2

i**i
发帖数: 1500
38
1mm is for 1 million ... dollars.
hoho
http://answers.yahoo.com/question/index?qid=20080323155213AAKnv

【在 t**********1 的大作中提到】
: wwzz敢接招么。
: 要支持联票和团体票。
: 我的单机也支持联票和团体票的transaction。
: 咱们公平,算的是票数,不是transaction数量。
: 给你的目标很低,是10k每秒。
: 我的单机目标很高1mm 每秒。

q*c
发帖数: 9453
39
我觉得 不能 shard. 一 shard 就掉进老魏那难以 transactional 的坑里面去了。
但是可以上多核单机,老 bug 本来也觉得只能单机交易的,问题就是我发现这个模型
不好建。

【在 w**z 的大作中提到】
: 看,这是问题的关键,怎么shard.
l*********s
发帖数: 5409
40
这个提议好,让俺们学习下
相关主题
好多人害怕锁春运之争打酱油
transaction衡量都要有标准乱砍两句火车订票
用 golang build 一个 HA 的 distributed system一般怎么搞?古德霸啊古德霸,不打你脸是不行了
进入Programming版参与讨论
L*****e
发帖数: 8347
41
哦,是有点问题。。。

★ 发自iPhone App: ChineseWeb 8.2.2

【在 q*c 的大作中提到】
: 你这有问题。
: 车次不该包含站点性息。车次站点都是多对多,应该是车次一个表,站点一个表,
: 车次站点叉一个大表。
: 车次票另外一个表。
: 这事情比我想的要复杂。

b*******g
发帖数: 603
42
你把问题粒度看得太细,想用数据库锁各段来保证不冲突,就比较麻烦。
外部分好,直接往数据库上写占用结果就很简单。
只要单线程分车次&类型,分票内存只会比数据库多占用,不会错票重票,用数据库向
内存的反向sync保证不丢票。其实是一个特殊情况下可行的分布式交易。
太监成天就要跨DC串糖葫芦,根本没有分析具体问题的能力。

【在 q*c 的大作中提到】
: 我觉得 不能 shard. 一 shard 就掉进老魏那难以 transactional 的坑里面去了。
: 但是可以上多核单机,老 bug 本来也觉得只能单机交易的,问题就是我发现这个模型
: 不好建。

1 (共1页)
进入Programming版参与讨论
相关主题
菜鸟也玩数据库transaction衡量都要有标准
奉劝一句那些动不动就谈架构的傻逼,谨言慎行用 golang build 一个 HA 的 distributed system一般怎么搞?
说到底还是app 层 engineer 和 系统层engineer在斗法春运之争打酱油
qxc,我接招了,你给的要求太弱的,给你加强了乱砍两句火车订票
分布式分票算法古德霸啊古德霸,不打你脸是不行了
古德八你也别废话了postgres 值得学吗?
魏老师的方案ES怎么玩?
好多人害怕锁12306仍然一塌糊涂
相关话题的讨论汇总
话题: 数据库话题: 车次话题: 模型话题: 站点话题: 优化