【问题标题】:Saving precalculated and calculated data VS precalculated data and calculating them upon retrieval保存预先计算和计算的数据 VS 预先计算的数据并在检索时计算它们
【发布时间】:2014-05-26 07:58:53
【问题描述】:

我是设计数据库的新手,我的表格包含大量计算数据。

劳动表

table columns | formula

labor_code
job_desc
hourly_wage
daily_wage = hourly_wage * 8
monthly_wage = hourly_wage * 208
benefit_1 = daily * ( 5/12)
benefit_2 = monthly_wage / 12
benefit_3 = there is a range of monthly_wage for a specific value to this
benefit_4 = value given by the user
benefit_5 = value given by the user
total_hourly_rate = hourly_wage + benefit_(1-5)
total_daily_rate = total_hourly_rate * 8
total_monthly_rate = total_hourly_rate * 208

材料表

table columns | formula

material_code
material_desc
brand
unit
base_price = user input
hauling_cost = user input
labor_code
labor_type = its either ful or basic
labor_rate = if labor type == ful ? labor_rate = labor.hourly_wage : labor.total_hourly_rate 
total_price = base_price + hauling_cost + labor_rate

鉴于上面的表格,应用程序的未来规格也将包含表格,计算数据将基于上面的值。

我想知道将所有数据(包括计算数据)保存到数据库中的更好方法,还是我应该在检索数据后以编程方式保存预先计算的数据和计算数据(即 total_hourly_rate )?

如果我的问题不清楚,请发表评论,以便我解决。

【问题讨论】:

    标签: mysql database-design


    【解决方案1】:

    我们在这里真正谈论的是缓存计算结果。因为,您看,您在帖子中没有提到的权衡之一是,例如,每次您必须更新 hourly_wage 时,您还必须更新 daily_wagemonthly_wage,因为它们是导数。

    所以这真正归结为可能是您必须自己回答的问题:

    • 我是否希望数据库写入成本更高?

    -- 或--

    • 我是否希望应用程序运行时更昂贵?

    (我说“应用程序运行时”是因为从您的问题中不清楚您的应用程序层是什么样的,即最终将使用这些计算的结果。)

    当应用程序运行时是关键任务时,您希望数据库写入成本更高,例如大部分数据库操作都是读取的高负载网络服务器。

    当不需要极度优化或数据库空间非常宝贵时,您希望应用程序运行时成本更高。您的特定用例中的计算不需要太多时间(毕竟只是简单的乘法和除法),但如果这是一个 web 应用程序,肯定会增加页面加载时间。

    再一次,如果它是一个 web 应用程序,可能有比你必须自己维护的更好的缓存选项可供你使用。

    【讨论】:

    • 抱歉,有一个菜鸟问题,但详细缓存计算的是什么?
    • 缓存在这种情况下只是“节省”的一个花哨的词,特别是为了交易空间(存储结果)换取时间(计算结果)。
    【解决方案2】:

    由于计算成本非常低,因此缓存其结果所需的增加存储不太可能值得。

    是的,现在存储很便宜,但 这不是重点 - “更胖”的数据意味着更慢的 I/O,而 I/O 往往是数据库性能的主要瓶颈.

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2023-03-08
      • 1970-01-01
      • 2018-03-03
      • 2016-04-11
      • 1970-01-01
      相关资源
      最近更新 更多