【发布时间】:2017-10-01 23:16:24
【问题描述】:
目前我们有一个系统可以处理信用的贷记和借记。
它将每个操作作为交易事件存储在数据库中,但总而言之,我们仍然更新了一个表示用户当前余额的“credit_bank”表。
Table "public.credit_bank"
Column | Type | Modifiers
----------------+------------------------+-----------
id | bigint | not null
user_id | bigint |
currency | character varying(255) |
amount | numeric(40,10) | not null
Table "public.transaction"
Column | Type | Modifiers
------------------+-----------------------------+-----------
id | bigint | not null
amount | numeric(40,10) | not null
credit_bank_id | bigint |
status | character varying(255) | not null
transaction_date | timestamp without time zone |
type | character varying(255) | not null
由于我们一次处理大量事务,我们不得不在每次更新信用表时锁定它以避免过时问题。
然后我遇到了事件溯源。这种模式适用于这种情况吗?
我真的很陌生,所以如果我有什么问题,请告诉我。
在我的理解中,如果我们使用事件溯源,我们就不需要存储“credit_bank”的状态,而是使用事件来得出状态,或者使用快照。但这如何确保当前余额仍然足够。
另外,如果我们每次都通过处理事件来获取状态,那会不会影响性能?
【问题讨论】:
标签: design-patterns event-sourcing