假设你有一个社交网站,在那里你可以有朋友,也可以查看他们的最新活动。问题是,什么是最有效的方式(避免性能问题)立即被告知他们的活动,例如在他们在线时改变个人资料以及你同时在线?
我有两种不同的方法来解决这个问题,但从数据库的角度以及Java内存的角度来看,我并不确定哪种方法是最有效的方法。以下是我的方法,如果您有更好的方法,请告诉我: 1-使用java HTTP会话侦听器获取每个用户的会话并遍历更新。 2-每隔几秒检查数据库以获取新更新,然后更新地图。
答案 0 :(得分:0)
首先:您只有在完成测量后才会知道。
话虽如此,总会有时空权衡。这意味着如果你在内存中存储了很多东西,它会很快,但是你的内存占用很大。如果你通过数据库,你将有一个小的(java)足迹,但会慢很多。
所以你需要决定做什么。内存很便宜,因此将内容放入内存缓存可以很好地工作。但另一方面,你真的需要亚秒更新吗?或者,在检测到配置文件之前,更新配置文件的时间是20秒?
关于NoSQL数据库的SE-Radio播客有一个很棒的插曲可以说明要做出的决定:http://www.se-radio.net/2010/05/episode-162-project-voldemort-with-jay-kreps/(我希望是这个)
关于记忆网格的这一集也非常好:http://www.se-radio.net/2010/11/episode-169-memory-grid-architecture-with-nati-shalom/