如何获得像stackoverflow视图计数器这样的帖子的视图计数?

时间:2012-03-29 20:21:11

标签: php database-design relational-database database-schema

对于stackoverflow.com,有一个问题的观看次数统计数据。

如何跟踪?已注册和未注册的用户可以查看任何问题。

该计数的数据库关系模式是什么?

我应该只增加数据库表中特定问题的列值吗?

或者我应该在用户查看该问题时添加新记录/行,然后显示计数回显该表的sum(thatcolumn)的结果?

2 个答案:

答案 0 :(得分:0)

如果您感兴趣的是查看问题的次数,我会在特定问题记录中添加一个计数器。在每个问题视图的另一个表中都有一个条目可能很容易失控。

总结这些记录只是为了每次都能获得一次视图计数,这也可能导致繁忙系统出现性能问题。

因此,为了进一步解释,我建议您在问题表中添加一个整数列。每次查看问题时,您只需递增计数器即可。把事情简单化。保持快速。

答案 1 :(得分:0)

有很多方法可以解决这个问题。有你提到的两个,但还有其他一些将根据你的情况更适合你。

如果你的网站有很多点击量就像stackoverflow一样,当一个人查看问题时,在数据库表上递增计数器可能非常昂贵(取决于他们的数据库设置我不确定)。 / p>

我之前使用的另一种方法是将视图存储在缓存引擎中,例如memcache / xcache / eaccelerator(每个都有自己的优点)并且有一个每小时/每晚运行的cron等。这将清理视图并插入数据库表,该数据库表由SO.com的唯一ID引用问题ID,并重置缓存中的计数器。

如果你想要完全可靠性,像mongoDB这样的noSQL引擎在快速有效的键值数据存储方面非常出色。