我正试图创建一个解除数据库功能的deamon。
我使用ActiveMQ作为队列管理器,我有两个数据库:关系数据库(写+复制)和非规范化数据库(用于读取)。
我的问题是,对我的真实DB进行去denormalize的最佳实践是什么--我有一些想法:
发布于 2011-02-07 17:01:02
我不确定这是否是一个正式的“最佳”实践,但总的来说,我发现事件源和使用事件驱动写入和更新读模型是一个很好的实践。有了事件源,写模型就其本身而言并不是实体和关系,而是事件的历史(我知道这听起来很混乱)。
在事件源方面,您可以从Eventide如何在Ruby中实现事件源中学到更多。
我还在这里简要介绍了使用域事件的CQRS:http://lucisferre.net/2010/11/04/a-brief-introduction-to-cqrs/。
然而,这并不能真正回答你眼前的问题,而且最终的结果可能并不适合你。既然您已经将“写”模型的状态存储在关系数据库中,那么触发器是一种可能的方法,但是这样做可以使您的系统非常以数据为中心。如果您可以使用代码中的触发器来完成相同的任务,那么它将更干净,更易于测试。
为此,我仍将使用域事件模式,并使用事件总线将事件发布到负责更新读取模型的事件处理程序。
想想这些事件和处理程序,比如SQL触发器,但是基于域设计和它的行为。Udi Dahan有很多关于这种方法的好材料,其中使用域事件来更新读取模型,但不使用事件源。http://www.udidahan.com/?blog=true
https://stackoverflow.com/questions/3110434
复制相似问题