请问一个需求的高性能实现
请教一个需求的高性能实现
大家好,有这样的一个需求,使用我的手机客户端软件的人很多,我在后台记录下了很多人的浏览日志,并维护在一张表中,表的记录数大约有1000万,现在某个手机客户端用户有N个好友(例如300个),我需要查询这N个好友的浏览日志,并进行分页。如何才能高效实现,多谢!
------解决方案--------------------
这个命题难度其实不小,相当于微博(所关注对象的转发信息)的需求了。
我不清楚微博的数据模型是怎么设计的,所以只能提点我自己的想法了:
1、无限时间范围的查询是不合理的,而且支持难度很高;
2、预处理是必需的,否则每次检索和排序的开销比较高,尤其是排序要设法避免,因为如果要进行排序(按时间)就意味着所有数据都必须检索出来后才能开始排序;
大致设计如下:
◎ 设计一张当期浏览日志表,字段:浏览时间、浏览者ID、浏览ID、其它浏览信息;
主键:浏览时间、浏览者ID、浏览ID,簇集索引。
◎ 该表信息应该以特定时间周期(比如一个月)来保持一定规模,不能无限制扩大;
超过该时间范围的浏览信息,可以移入另一张表:“近期浏览日志表”
◎ 检索时先把朋友Select出来,然后再使用In来进行检索;因为簇集索引第一字段是时间,所以不需要再使用OrderBy关键字;注意限制返回记录数,不要一次性返回所有。
以上是初步想法,如果是类似微博的要求,这个肯定是不够的,还需要更多的空间(内存、磁盘)和预处理来换取时间。
大家好,有这样的一个需求,使用我的手机客户端软件的人很多,我在后台记录下了很多人的浏览日志,并维护在一张表中,表的记录数大约有1000万,现在某个手机客户端用户有N个好友(例如300个),我需要查询这N个好友的浏览日志,并进行分页。如何才能高效实现,多谢!
------解决方案--------------------
这个命题难度其实不小,相当于微博(所关注对象的转发信息)的需求了。
我不清楚微博的数据模型是怎么设计的,所以只能提点我自己的想法了:
1、无限时间范围的查询是不合理的,而且支持难度很高;
2、预处理是必需的,否则每次检索和排序的开销比较高,尤其是排序要设法避免,因为如果要进行排序(按时间)就意味着所有数据都必须检索出来后才能开始排序;
大致设计如下:
◎ 设计一张当期浏览日志表,字段:浏览时间、浏览者ID、浏览ID、其它浏览信息;
主键:浏览时间、浏览者ID、浏览ID,簇集索引。
◎ 该表信息应该以特定时间周期(比如一个月)来保持一定规模,不能无限制扩大;
超过该时间范围的浏览信息,可以移入另一张表:“近期浏览日志表”
◎ 检索时先把朋友Select出来,然后再使用In来进行检索;因为簇集索引第一字段是时间,所以不需要再使用OrderBy关键字;注意限制返回记录数,不要一次性返回所有。
以上是初步想法,如果是类似微博的要求,这个肯定是不够的,还需要更多的空间(内存、磁盘)和预处理来换取时间。