我觉得没有必要做缓存,就是把所有数据拿到内存中来。
(1)主要在于客户端在一个页面上会不会同时需要10^6家旅馆的房间信息呢?应该是不可能的吧。
(2)那么你可能需要一个查询系统,以及分页显示的功能。每一页显示10家旅馆的信息。
(3)还有就是每一家的旅馆信息可能完全不一样,包括房间类型,房间数量,房间价格,地理位置,促销活动,历史记录,评价情况,星级情况。可能还有一堆属性(字段),导致的问题就是你不仅仅需要把房间数量信息拿到内存中来,所有的信息都要难道内存中来。
(4)最后一点就是并发访问,事务处理还是在数据库层做比较好,难道你想在内存中手动处理事务?
结论就是一次请求需要哪些数据,就从数据库中查询必要的数据。内存中应该存放客户的信息。
数据库当然是必不可少的,但数据库里存放的都是静态的房间属性信息。我的问题是动态的预定信息的存放,因为在未来的m天中,一个顾客可以选择某类房型预定,那么这类房型在那一天的可用数目减一,然后某些原因顾客取消了预定,那一天此类房型可用数加一。这个问题中,时间和房型定位了一个资源数,这个资源数是动态的,数据库不能表示这类二维变量表示的信息吧,看来只能放内存中了。
@P.C ++: 额,不太懂了,数目减一,那就将数据库中的那个字段减一呗,数目加一,就将数据库中的那个字段加一啊。如果要查看当前数目,也就是查询数据库而已。数据库和内存的区别也就是存取速度的区别吧,当然还有访问数据的方式的区别。所以你最后所说的资源数是动态的,数据库不能表示这类二维变量。。。表示不能理解???
我的意思就是把需要做运算的数据从数据库中拿到内存中来,而不需要做运算的就不需要从数据库中取了,假如你i的某一次运算需要所有10^6家旅馆的信息,那么如果一次性都拿到内存中来,可能内存不够,可以考虑分批次查询数据。
还有一点,假设每一家旅馆的信息是1KB,那么10^6家旅馆的信息就是1GB,似乎也不是很夸张啊。
@ThreeTree: 自己解决了,还是挺感谢的