【问题标题】:Proper way to track progress or levels in a web application database在 Web 应用程序数据库中跟踪进度或级别的正确方法
【发布时间】:2012-03-02 08:07:30
【问题描述】:

我正在根据成就创建一个网站,并将成就分为 50 多个组。每组有500个成就。完成一项成就后,我会在数据库中记录他们完成它的日期。我总是单独和整体跟踪每个组的进度。例如:

Group 1: 5/500
Group 2: 89/500
Group 3: 21/654
Overall: 115/1654

我的问题是,一直从头开始计算这些进度报告是一种不好的做法,还是我应该有另一个表来存储这些进度并且我不时更新它?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    创建一个活动表来跟踪个人成就并始终计算它们。这样做的好处是,如果你改变计算成就的方式,那么你根本不需要接触你的原始数据

    如果这变得太慢,那么您可以创建一个成就跟踪表来计算成就并定期存储它们以供查询之用。

    【讨论】:

    • 意思是一直在现场计算?
    • 最初你可以一直在现场计算它。但是,如果这变慢了,那么您可以每天计算它,并将计算结果保存在一个单独的表中,您可以使用该表来显示进度报告
    【解决方案2】:

    我相信你想知道你是否应该Cache你的输出。这实际上取决于您的应用程序。

    • 它是一个要“按原样”多次部署的产品吗?实现缓存。
    • 否则,您的报告是否存在性能问题?
      • 没有?不要缓存。
      • 是的?实现缓存。

    对于您的应用程序,有多种缓存策略(我在这里假设您有一个可以获得这些成就的多个“对象”的集合)我更喜欢在某些事件上无效的缓存。就像每当对象 x 获得成就时,这个“事件”都会使缓存失效。

    输出代码首先查询缓存,并且只有在无效时才会执行重建它的代码。这可确保输出始终有效,而不是每 x 小时重建所有缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2011-10-01
      • 2011-03-20
      • 2017-03-07
      • 2011-05-06
      • 2013-04-10
      • 2015-02-20
      相关资源
      最近更新 更多