存储和处理使用情况“分析”信息的最佳方法是什么?

时间:2010-06-22 13:44:38

标签: django database-design

我确信这里有一个简单的答案,我只是过于复杂的事情,但我正在编写一个Django模块,负责存储和跟踪用户使用情况统计信息,然后可以在某些情况下向用户显示页。

最简单的例子可能是跟踪用户购买和查看的产品,以便当其他人查看产品时,我们可以显示“其他人购买的产品也购买了此产品”......等等

我的不确定性与最佳数据模型方法有关。我认为每次有人看产品时写入表可能效率不高,但我确实需要以某种形式向用户显示这些数据。我正在寻找一种易于管理且从下到上有效的策略。有什么建议吗?

编辑: 通过'从下到上有效' - 我基本上只是在谈论采用一种既有效又能存储和检索的解决方案 - 可能应该只是说:)

另外,为了添加另一个复杂功能,假设我想跟踪产品之间的查看关系,而不是简单地记录单个产品的查看情况。因此,例如,我可能希望在产品A的页面上显示,查看产品A的人也查看了产品b c和d。在下面的一些评论的背面,我正在考虑创建一个包含2个简单字段(product_name和last_viewed_date)的table / django模型,这样我就可以运行一个工作来将单个产品的所有视图合并为一行(使用last_viewed_date取最近记录的日期)...但如果我还想存储每个视图的历史记录,如上所述,我该怎么做?

2 个答案:

答案 0 :(得分:0)

数据库表设计是最好的选择。这样,您可以推荐人们浏览的类似项目。

有时人们可能会登录该网站,有时只是浏览,因此您需要一个按会话ID的表格,另一个按用户ID来跟踪浏览的项目。

此外,您还需要对项目进行分类,并仅显示相关项目。这样,如果一个客户看到园艺工具和iPhone,你就不会建议下一个寻找iPhone购买Rake的人。

为评论编辑的答案

您可以使用日志文件更快地从数据库中检索数据。借助适当的索引和结构的良好规范化/非规范化,您将能够为大量行执行此操作。数据库比文本文件更好地扩展。

如果您创建INSERT样式模型而不是更新模型,那么您也将处理较少的争用。您必须建立一个归档机制,以确保在受到空间限制时表格不会大幅增长。

对于这种情况,我个人会在任何一天使用RDBMS而不是文本文件。

答案 1 :(得分:0)

RDBMS可以处理比大多数人似乎意识到的更多的写入。除非您要替换已经处理大量流量的现有实现,否则最好现在编写清晰的代码,如果无法跟上,请稍后更改实现。理想情况下,你是以一种设计干净的方式(你想跟踪的视图函数的装饰器,也许?)这样做的,这样以后你可以交换不同的实现,而不会影响你的所有代码。