Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 具有事件源的CQRS模式具有用于读/写的单个数据库_Sql Server_Apache Kafka_Rabbitmq_Cqrs_Event Sourcing - Fatal编程技术网

Sql server 具有事件源的CQRS模式具有用于读/写的单个数据库

Sql server 具有事件源的CQRS模式具有用于读/写的单个数据库,sql-server,apache-kafka,rabbitmq,cqrs,event-sourcing,Sql Server,Apache Kafka,Rabbitmq,Cqrs,Event Sourcing,我有一个用于读写操作的SQL Server数据库,我正在实施CQRS模式以实现代码分离和可维护性,这样我就可以将读操作分配给团队中的少数资源,并将写操作分配给其他资源,我认为使用CQRS似乎是一种干净的方法 现在,每当在我的数据库中的表上发生插入/更新/删除时,我都需要向需要了解我的系统中的更改的其他系统发送消息,因为我的数据库是主数据,所以这里发生的任何更改都需要投影到下游系统,以便它们获得最新的数据并在系统中维护它。为此,我可以使用MQ或Kafka,因此每当发生更改时,我都可以生成关键消息并

我有一个用于读写操作的SQL Server数据库,我正在实施CQRS模式以实现代码分离和可维护性,这样我就可以将读操作分配给团队中的少数资源,并将写操作分配给其他资源,我认为使用CQRS似乎是一种干净的方法

现在,每当在我的数据库中的表上发生插入/更新/删除时,我都需要向需要了解我的系统中的更改的其他系统发送消息,因为我的数据库是主数据,所以这里发生的任何更改都需要投影到下游系统,以便它们获得最新的数据并在系统中维护它。为此,我可以使用MQ或Kafka,因此每当发生更改时,我都可以生成关键消息并将其放入MQ或使用Kafka进行消息传递

直到现在,我还没有像我想的那样使用事件源,因为我没有多个用于读/写的数据库,所以我可能不需要事件源,我的假设是否正确,如果我们有单个数据库,我们就不需要事件源?或者,事件源可以在使用MQ或Kafka时发挥任何作用,我的意思是,如果我使用事件源模式,我可以先将数据保存在主数据库中,然后使用事件源模式将更改写入MQ或使用Kafka写入消息,如果我们可以对MQ或Kafka使用事件源模式,我在这里不知道

将消息写入MQ或使用Kafka是否需要事件源?或者在我的情况下根本不需要它,因为我只有一个数据库,我不需要知道记录系统发生的一系列更新,我所关心的是主数据库中记录的最终状态,然后使用MQ或Kafka将更改发送到下游系统,如果存在CRUD操作,那么它们将有最新的变化

如果我们只有一个数据库,就不需要事件源,我的假设正确吗

不,这个假设是错误的

在CQRS“传统”中,事件源是指在持久数据结构中维护信息;当新信息到达时,我们将这些信息附加到我们已经知道的信息中。换句话说,它描述了我们用来记忆信息的模式。看

当您开始谈论诸如Kafka或Rabbit之类的消息传递解决方案时,您遇到了一个不同的问题空间:如何在系统之间共享信息?好的,我们将信息放入消息中,并将消息从生产者传递给消费者。出于历史原因,该信息被称为事件(见Hohpe等人)

两种不同的想法,容易混淆。当CQR人谈论事件来源时,他们的意思与卡夫卡人谈论事件来源的意思不同

将消息写入MQ或使用Kafka是否需要事件源

不-即使您选择了事件来源以外的其他记忆策略,消息仍然有效

完全合理的做法是“就地”修改您的模型,然后发布一条消息,宣布情况发生了变化

当我只有一个数据库,我不关心记录的一系列更改,只关心数据的最终状态时,为什么我需要事件源

你没有

事件源的两个最常见的动机是:(a)事件历史与您正在工作的领域自然一致(例如:会计),或者(b)需要支持时态查询

如果你没有这些问题,那么你就不需要它

如果我们只有一个数据库,就不需要事件源,我的假设正确吗

不,这个假设是错误的

在CQRS“传统”中,事件源是指在持久数据结构中维护信息;当新信息到达时,我们将这些信息附加到我们已经知道的信息中。换句话说,它描述了我们用来记忆信息的模式。看

当您开始谈论诸如Kafka或Rabbit之类的消息传递解决方案时,您遇到了一个不同的问题空间:如何在系统之间共享信息?好的,我们将信息放入消息中,并将消息从生产者传递给消费者。出于历史原因,该信息被称为事件(见Hohpe等人)

两种不同的想法,容易混淆。当CQR人谈论事件来源时,他们的意思与卡夫卡人谈论事件来源的意思不同

将消息写入MQ或使用Kafka是否需要事件源

不-即使您选择了事件来源以外的其他记忆策略,消息仍然有效

完全合理的做法是“就地”修改您的模型,然后发布一条消息,宣布情况发生了变化

当我只有一个数据库,我不关心记录的一系列更改,只关心数据的最终状态时,为什么我需要事件源

你没有

事件源的两个最常见的动机是:(a)事件历史与您正在工作的领域自然一致(例如:会计),或者(b)需要支持时态查询


如果您没有这些问题,那么您就不需要它。

谢谢,但我只有一个数据库,我不关心记录的一系列更改,只关心数据的最终状态,为什么我需要事件源呢,但是,是的,我可能需要在数据更改发生时通过使用MQ或Kafka将更改流化,以便其他下游系统捕获更改并更新其数据库,现在事件源在这里扮演什么角色,我真的需要事件源吗?谢谢,但是,当我只有一个数据库,我不关心记录的一系列更改,而只关心数据的最终状态,但是的,我可能需要流式传输chan时,为什么我需要事件源呢