使用事件溯源的复式记帐系统



如何使用事件源设计复式记帐系统?我读到这是一个适用事件溯源的领域,对我来说这似乎很直观,存储影响分类帐的所有事件,并根据这些事件在内存中构建分类帐。关于如何构建这样一个系统,有什么建议吗?

在事件溯源中,关于一个实体在给定时间点的最终真相来源是其严格有序的事件序列。

事件溯源的关键部分是决定是否持久化另一个事件。通常你需要当前的状态来做这样的决定。实体不应该在检索当前状态和持久化另一个事件之间改变。这意味着,你锁定了它。

从物理的前计算机事件源系统中寻找灵感。公制账簿,银行系统,医疗记录在这些情况下,一些实体书是执行锁的令牌:没有两个人可以同时写这样的书。

在考虑设计一个事件源系统时,您应该问自己:系统中的实体可能是什么?锁定什么?什么事件顺序是有意义的?

对于事件来源的银行系统,一个选项是给定银行分支中所有帐户事务的严格顺序。从这个事件序列中,您可以推导(计算)任何帐户的状态。

与物理系统一样,您可以在每个财务季度开始一个新的序列。最有可能的是,您将在派生模型中单独存储单个帐户的交易。您还可以单独存储每个帐户的当前余额。所有这些衍生的模型最终都将与交易的最终顺序一致。如果您需要确切的当前状态,那么您可以使用最新事件更新派生模型…

所以,你明白了。从物理事件源系统中可以学到很多经验。只要深入挖掘这个领域。

但是复式记账呢?给你:每笔交易(事件)的金额都要记两次。在交易的借方和贷方。

最新更新