面向服务的体系结构:跨不同数据库的外键

时间:2019-06-13 17:57:09

标签: database .net-core architecture microservices soa

我们正在实现面向服务的体系结构(SOA)。我们为客户管理,订单,运输,退款分别提供不同的服务数据库。在不同数据库中的表之间维护外键关系的策略是什么(因为在SQL Server中不允许跨数据库外键)?外键是否应使用业务API规则替换?

这不是微服务;在每个领域(但SOA)复制数据库信息的位置。我们不希望将所有内容都放在一个数据库中,因为不同的备份维护时间,不希望通过死锁/失控查询来关闭所有服务。面向服务的体系结构并不决定我们应该拥有1个数据库还是多个数据库。

1 个答案:

答案 0 :(得分:0)

您可以使用Guid(UUID)作为创建者生成的实体的键,然后可以在整个数据库和表中使用该Guid来引用相关实体。

例如,当您创建一个新订单时,用户界面将生成订单的ID,向创建该订单的组件发送一条消息,然后该组件将使用该orderId发布事件,以便其他组件可以执行相关工作无需访问数据库即可获取该ID。

有道理吗?