会计系统如何更新记录,即标准做法是什么?你是否保存了所有的记录,并实时进行计算,还是每次从最后的金额中加减,比如"$current_balance“。
第一种方法是实时计算,即总结所有存款,减去所有费用,这是获得结果的肯定方法,但随着行数的增加,我可以看到一个明确的可伸缩性问题。
另一方面,积累在一个变量中,比如"$current_balance“,仅仅更新它也有它的缺点。
那么,解决这个问题的推荐做法是什么呢?
发布于 2018-11-07 23:56:59
一般来说,会计系统有一个大的总账表。表中的每一行都是一个事务,其功能更像是一个星型模式,而不是一个传统的3NF关系数据库。通过这种方式,它们通常是星片/雪花和关系的混合体,在可能的情况下将两个世界的最佳结合在一起。它们通常不是严格的3NF数据库,在GL表中有一些项目代码或业务单元代码的重复。例如,它们通常如下所示:

记录通常不会在会计系统中更新。相反,所发生的是添加了额外的事务行,这些行反映了以前输入的值中的修改。例如,如果您希望将以上BU代码A100的事务金额更改为50,而不是其当前值100,则需要添加一行:

如果您想要删除该行,那么您将添加一个类似于上面的行,但在事务数量中添加一个带有-100的行(然后将其标记为事务类型中的反转)。
通常,计算机在添加部分时速度相当快,您可以使用各种分区技巧来提高性能。所有供应商都非常专注于改进性能,所以通常没有问题。随着现代数据库索引,他们通常更新相当快,虽然往往有滞后。
为了实际的性能,会计系统数据通常被放入一个OLAP多维数据集中,这样可以获得更高的速度效率,并且可以回答更多的分析类型查询。
https://dba.stackexchange.com/questions/222045
复制相似问题