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

我需要计算字段还是更新每个事务?

  •  1
  • Pablo  · 技术社区  · 6 年前

    正在尝试设计数据库。我有 User 桌子,应该有 balance 字段。每次我需要余额时,可以根据以下4个表计算:

    enter image description here

    所以我需要做一些数学计算,比如所有存款的总和,减去取款的总和,减去下注金额+利润,再加上奖金金额。在每个相关表中,每个用户可以有数千条记录。

    或者我可以更新 平衡 每当相关表中的一个被更改时,应用程序代码中的字段。

    然而,随着数据库的增长,第一种方法往往越来越慢。第二种方法容易出错,以防我的应用程序无法更新字段,而实际balance将与balance字段异步。

    我想知道是否有任何设计模式或技术来处理这种情况?网上银行或类似服务如何计算余额?他们是否在每次要求结余时都要处理每笔银行交易?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Ken Chan    6 年前

    对于第一种方法,为了防止加载所有交易来计算账户余额,我们可以定期生成账户余额的快照值(例如,在日/月底或对于一定数量的已完成交易),以便在计算最新账户余额时,我们只需要加载最新快照帐户余额,并且只需要加载该最新快照时间之后的事务,而不需要加载所有事务记录。

    您还可以在

    推荐文章