存储计算值是一种好习惯吗?

时间:2014-01-28 09:55:54

标签: database caching

我正在开发一个结算系统,计算数据库上发票的总金额需要相当多的SQL。例如:

  • 有些项目是应纳税的,有些则不是;
  • 有些物品有折扣;
  • 一些是按价格除以间隔(例如每月30,00欧元)计算的;
  • 发票可能有逾期费用;
  • 发票有不同的税率。

由于我添加的每个功能执行查询变得越来越复杂,我正在考虑存储一些计算(发票项目和发票的净金额和总金额)。我已经看到了一些发票框架,所以我认为这本身并不是一个糟糕的做法。

但是,我对数据完整性有点担心。

我的应用程序中的缓存失效不应该太难:每当发票以某种方式更改时,我会重新运行计算并保存新值。但是,如果某人有人直接在数据库上运行脚本或某些SQL代码呢?

我知道有关于这个主题的一些问题,但我想进一步讨论。

1 个答案:

答案 0 :(得分:1)

是的,只要您不必忘记在必要时使缓存无效(这是CS中最难解决的两个问题之一),缓存就可以了。

  

但是,如果某人有人直接在数据库上运行脚本或某些SQL代码呢?

嗯,强大的力量带来了巨大的责任。如果您不想要责任,请取消电源(禁止直接访问sql)。你在这里真的没什么可做的。