回看完了电影订票的视频之后有以下的疑问,希望老师有空的时候可以解答一下。
- 在设计图的右侧我们画了5个不同的DB,但是在讲到存储的时候却是用的Table。这里想和老师确认一下,设计图中的5个DB其实应该是一个DB中的5个Table吗?还是确实是5个DB,但是一个DB只含有一个Table?这道题选用了SQL数据库,所以感觉5个Table放在一个DB也是一种选择?不知道老师在面试的时候是倾向于看到哪种方式。
- 在末段讨论到搜索流程的时候老师给出了以下的步骤:
2.1 根据地理位置搜索电影院(Super Venue)
2.2 每个电影院列出有票的电影(Movie)
2.3 3. 每个电影里显示有票的场次(Event)
我对这个流程不是很理解。
2.1我的理解是用户一般是根据地理位置搜电影院的,所以我们从Super Venue Table中以geohash找到相关的电影院。
2.2 不是很能理解。这里的Movie指的是Movie Table吗?在PPT里面讲到Movie Table只存了关于一个电影的metadata,不太能理解为什么有了电影院之后就能从Movie Table里面知道一个电影院有哪些有票的电影了
2.3 可以理解,感觉是有了电影院和电影之后找到该电影在一个电影院有哪些场次
另外想问一下,如果搜索流程是用Super Venue Table里的geohash的话,那么为什么我们还要在Events Table里面加geohash?
我对于搜票的流程是这样理解的,不知道是否正确。直接根据Events Table里面的geohash先搜到相关的events,再对这些events过滤。比如用户想搜神奇女侠,那么就只拿movie id是神奇女侠的events。 - 利用geohash做sharding的话会有热点问题吗?比如订演唱会的票。因为一场演唱会只在一个地方进行,所以query全部都是指到一台机器上的,我们需要担心这个问题吗?
- 对于秒杀系统的优化。想问一下如果是秒杀一场演唱会,有上万张的票,那么这里应该怎么优化呢?课上说到缓存只用做读,不用做写,避免数据不一致的问题。那么当秒杀演唱会开始的时候感觉会有非常多的写写到数据库中,会不会直接打挂数据库?还是说对于这种数量很大的秒杀活动就是一开始直接引入消息队列,大量的写全部写到队列里面,然后数据库再根据自己的情况慢慢读?
问题有点多,谢谢老师!