缓存每个用户的计算结果 - 是否有一个专用于每个用户的表是有意义的?

时间:2012-01-06 04:56:32

标签: python mysql database-design

我们正在草拟系统如何运作。问题是有一组具有每个项目的计算值的项目。比方说,你喜欢nba中的玩家,并且有一些你已经表现出偏好的玩家。

示例可能是:

  1. 比赛次数
  2. 篮板
  3. 得分
  4. 协助
  5. 每场比赛
  6. 分钟
  7. 其他朋友喜欢的玩家
  8. 被交易的可能性 - 你经常想要将被交易的玩家
  9. nba中约有500名玩家。从性能pov来看,查询是成本过高的 - 抛弃其他人的偏好等......我们一直在考虑采取其他方法。一种方法是NoSQL,每个用户都可以编写每个玩家的文档。说实话,这似乎有太多不公平,因为我没有经验。另一种方法是系统中的每个人都会获得专用于他们的表格。也许每晚通过cron写出表定义,当用户登录时,执行create table语句,然后对其进行专门的查询。这对我来说听起来也很难看(虽然可行)。我们当然也可以有一个表,每个用户每个玩家都有一行。我宁愿不把整个系统放在自我连接的前提下。它似乎需要离线查询,我们可以根据这些不同的参数测量1000名玩家。

    我还缺少其他想法吗?我不想要任何太深奥的东西 - 最好只是MySQL和Python。将使用InnoDB而不是那么担心每个主机问题按每个数据库拆分表。

    任何其他想法或实用词体验都会受到赞赏吗?我确信之前已经解决了很多次。

    THX

1 个答案:

答案 0 :(得分:0)

我现在第一次使用mongodb,我发现它非常棒,它让你表示一个非常像面向对象的类结构的文档。您可以轻松地为每个用户提供存储任意数量嵌入文档的文档。您的播放器可以位于嵌套字典或列表中,您可以在播放器名称上编制索引。然后,当您请求用户时,没有连接。你拥有所有数据。此外,还有一个灵活的架构,因此您可以随时添加更多字段。

对于每个用户的mysql表,我同意它非常混乱并且可能失控。

另一个替代方案是你可以查看像Redis这样的键值存储,因为它在内存中的缓存目的,它也会很快。