关于python:具有历史记录的唯一视图计数

Unique view count with history

我正在寻找一种简单的方法来存储和检索一个计数,不管用户查看了多少次独特的文章/页面。事后/1事后/2。我对一篇文章的总浏览量也很感兴趣。

我认为我应该如何实现这一点:

  • 使用列(userid、postid、datecreated)创建userpostview表
  • 如果记录不存在,则每次使用userid、postid创建userpostview行
  • 检索userid==x的行总数
  • 检索postid==y的行总数
  • 对于一个有几行的小规模应用程序来说是可以的。但我预计每天阅读不同文章的不同用户比例很高。因此,userpostview表将比用户表或post表大得多。从长远来看,我相信这将是一个性能问题,对吗?例如,连续调用计数可能会减慢读取速度。我想知道在这种情况下缓存计数是否理想。还是应该有一个单独的表来存放递增计数器?

    我使用的是带有sqlachemy后端的flask,用于PostgreSQL。这足够吗?

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

    https://www.youtube.com/watch?V= G-LGCK4KKOK

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

    我应该假装柜台吗?有更好的方法吗?欢迎提出任何更好或改进的建议。

    事先谢谢。


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

    日志记录是这样存储数据的好方法。只需在flask应用程序中设置一个简单的日志记录器,它在用户每次加载一个日志页时创建一个日志。将用户标识、发布标识和时间戳保存到日志文件中。(注意:如果您担心日志文件太大,可以配置日志记录器每天启动一个新文件)。

    在设置日志记录之后,可以使用实用程序解析日志,并提供与所需的结果类似的聚合结果。或者您甚至可以使用python解析日志并运行定制的"查询"。

    我建议使用麋鹿堆。logstash、elasticsearch和kibana是免费的开源项目。一小时之内,你就可以在你的网站上看到用户活动的漂亮图表。