代码之家  ›  专栏  ›  技术社区  ›  kkesley

数据库:存储计算值vs计算每个请求

  •  0
  • kkesley  · 技术社区  · 8 年前

    您好,关于存储计算值还是只计算每个请求的值,我有一个两难的选择。

    该应用程序需要计算数百万行(这是一个基于股东的应用程序),但我遇到了DRY原则,其中规定我们不应保留任何副本。

    从业务角度来看,这两种方法都有利弊(保持低成本但确保数据完整性),我应该使用哪种方法,或者有其他方法吗?

    非常感谢。

    1 回复  |  直到 8 年前
        1
  •  0
  •   tonedblue    8 年前

    我认为DRY在源代码方面比数据库设计更重要。

    这是一种正常的模式,例如有一个表

    原始数据(全部)—>每小时聚合数据->每日汇总数据等

    您需要考虑您的数据适合何种逻辑格式。

    其他可能的解决方案包括:

    视图-创建一个计算值的视图表,并让您的客户端访问该视图(这样您就不必物理存储计算)。

    服务器/客户端缓存-计算客户端上的值,并根据计算的生存期设置相关的缓存时间。