首页 新闻 搜索 专区 学院

客房预定的预定功能,应该怎么样设计实现?在线等你回

0
悬赏园豆:40 [已解决问题] 解决于 2014-04-20 09:14

我要实现一个在线客房预定功能,这儿有个问题,某旅馆有n种类型房间,分别为a[1],a[2],...a[n]间,现在未来的m天对外开放预定。怎么实现?注意这只是一家旅馆,我想实现规模为10^6家旅馆模型。所以在内存中为每家开个vector不现实吧。。有没有更好的点子?怎么从数据库下手?在线等。。。。

P.C ++的主页 P.C ++ | 初学一级 | 园豆:97
提问于:2014-04-19 10:11
< >
分享
最佳答案
0

我觉得没有必要做缓存,就是把所有数据拿到内存中来。

(1)主要在于客户端在一个页面上会不会同时需要10^6家旅馆的房间信息呢?应该是不可能的吧。

(2)那么你可能需要一个查询系统,以及分页显示的功能。每一页显示10家旅馆的信息。

(3)还有就是每一家的旅馆信息可能完全不一样,包括房间类型,房间数量,房间价格,地理位置,促销活动,历史记录,评价情况,星级情况。可能还有一堆属性(字段),导致的问题就是你不仅仅需要把房间数量信息拿到内存中来,所有的信息都要难道内存中来。

(4)最后一点就是并发访问,事务处理还是在数据库层做比较好,难道你想在内存中手动处理事务?

结论就是一次请求需要哪些数据,就从数据库中查询必要的数据。内存中应该存放客户的信息。

收获园豆:40
ThreeTree | 小虾三级 |园豆:1490 | 2014-04-19 12:36

数据库当然是必不可少的,但数据库里存放的都是静态的房间属性信息。我的问题是动态的预定信息的存放,因为在未来的m天中,一个顾客可以选择某类房型预定,那么这类房型在那一天的可用数目减一,然后某些原因顾客取消了预定,那一天此类房型可用数加一。这个问题中,时间和房型定位了一个资源数,这个资源数是动态的,数据库不能表示这类二维变量表示的信息吧,看来只能放内存中了。

P.C ++ | 园豆:97 (初学一级) | 2014-04-19 15:36

@P.C ++: 额,不太懂了,数目减一,那就将数据库中的那个字段减一呗,数目加一,就将数据库中的那个字段加一啊。如果要查看当前数目,也就是查询数据库而已。数据库和内存的区别也就是存取速度的区别吧,当然还有访问数据的方式的区别。所以你最后所说的资源数是动态的,数据库不能表示这类二维变量。。。表示不能理解???

我的意思就是把需要做运算的数据从数据库中拿到内存中来,而不需要做运算的就不需要从数据库中取了,假如你i的某一次运算需要所有10^6家旅馆的信息,那么如果一次性都拿到内存中来,可能内存不够,可以考虑分批次查询数据。

还有一点,假设每一家旅馆的信息是1KB,那么10^6家旅馆的信息就是1GB,似乎也不是很夸张啊。

ThreeTree | 园豆:1490 (小虾三级) | 2014-04-19 23:10

@ThreeTree: 自己解决了,还是挺感谢的

P.C ++ | 园豆:97 (初学一级) | 2014-04-20 09:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册