独特的历史视图计数



我正在寻找一种简单的方法来存储和检索计数无论多少次用户查看一个唯一的帖子/页面。post/1 post/2。我还对一篇文章的总浏览量感兴趣。

我认为我应该如何实现这个:

    创建包含列(userid,postid, datecated)的userpostview表
  1. 每次用userid创建userpostview行,如果记录不存在
  2. 检索userid == X
  3. 的行总数
  4. 检索postid == Y
  5. 的行总数

对于只有几行的小规模应用来说是可以的。但我预计每天会有很高比例的不同用户阅读不同的帖子。因此,userpostview表将比user表或post表大得多。从长远来看,我相信这将是一个性能问题,对吗?例如,连续调用计数可能会减慢读取速度。我想知道缓存计数在这种情况下是否理想。或者应该有一个单独的表来保存增量计数器?

我使用flask与sqlalchemy后端到postgresql。这足够吗?

然而,在做了一些研究之后,我看到了这个:

https://www.youtube.com/watch?v=G-lGCC4KKok

http://hilicalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html

我应该"假装"柜台吗?有没有更好的方法?欢迎提出更好或更完善的建议。

是否记录用户与应用程序的交互?

日志记录是这样存储数据的好方法。只需在Flask应用程序中设置一个简单的日志记录器,每次用户加载帖子页面时都会创建一个日志。将user_id、post_id和时间戳保存到日志文件中。(注意:如果你担心日志文件变得太大,你可以配置记录器每天启动一个新文件)

设置日志记录后,您可以使用实用程序来解析日志,并给出您所要求的汇总结果。或者你甚至可以用Python解析日志并运行自定义的"查询"。

我建议使用ELK堆栈。Logstash、Elasticsearch和Kibana都是免费的开源项目。在一个小时内,你可以在你的网站上有漂亮的用户活动图表。

最新更新