事务日志作为事件存储
TransactionLog as EventsStore
我多次听说关系数据库的事务日志是 EventStore 的原始实现之一。理论上使用 TransactionLog 作为 EventStore 听起来是个不错的主意,因为我们可以免费获得快照(表数据代表快照)。
但我从未见过任何尝试使用 TransactionLog 作为 CQRS 的 EventStore。可能是我错过了。如果不是,还有什么其他潜在原因? TransactionLog 是一个低级的东西,不能暴露给手动操作吗?它是同步的并且表值(快照)不能延迟吗?或者出于任何其他原因这只是一个坏主意?
恕我直言,eventstore 不仅仅是交易列表。关键思想是它描述了为什么要进行更改,而不仅仅是进行了哪些更改。例如,您可能会在事务日志中看到地址已更新。但是在活动商店中,您会看到客户搬家了。
精心设计的事件是人类可读的。通过阅读事件存储中的事件名称,领域专家将能够让您清楚地了解系统中发生的事情。我在我的 post 6 Code Smell with Your CQRS Events (And How to Avoid Them)
中写了更多相关内容
但是,从纯技术的角度来看,也许可以做到。我只是不确定你为什么想要。
我希望这是有道理的。
我多次听说关系数据库的事务日志是 EventStore 的原始实现之一。理论上使用 TransactionLog 作为 EventStore 听起来是个不错的主意,因为我们可以免费获得快照(表数据代表快照)。
但我从未见过任何尝试使用 TransactionLog 作为 CQRS 的 EventStore。可能是我错过了。如果不是,还有什么其他潜在原因? TransactionLog 是一个低级的东西,不能暴露给手动操作吗?它是同步的并且表值(快照)不能延迟吗?或者出于任何其他原因这只是一个坏主意?
恕我直言,eventstore 不仅仅是交易列表。关键思想是它描述了为什么要进行更改,而不仅仅是进行了哪些更改。例如,您可能会在事务日志中看到地址已更新。但是在活动商店中,您会看到客户搬家了。
精心设计的事件是人类可读的。通过阅读事件存储中的事件名称,领域专家将能够让您清楚地了解系统中发生的事情。我在我的 post 6 Code Smell with Your CQRS Events (And How to Avoid Them)
中写了更多相关内容但是,从纯技术的角度来看,也许可以做到。我只是不确定你为什么想要。
我希望这是有道理的。