面向服务的架构:跨不同数据库的外键
Service Oriented Architecture: Foreign Key Across Different Databases
我们正在实施面向服务的体系结构 (SOA)。我们每个都有不同的服务数据库,客户管理、订单、运输、退款。在不同数据库中跨表维护外键关系的策略是什么(因为 SQL 服务器中不允许跨数据库外键)?是否应该用业务 API 规则代替外键?
这不是微服务;在每个领域复制数据库信息,但 SOA。我们不希望将所有内容都放在 1 个数据库中,因为不同的备份维护时间,不希望 deadlock/runaway 查询导致所有服务中断。面向服务的架构并没有规定我们应该拥有 1 个数据库还是多个数据库。
您可以使用 Guid(UUID) 作为实体的键,由创建者生成,然后您可以在数据库和表中使用该 Guid 来引用有问题的实体。
例如,当您创建一个新订单时,ui会生成订单的Id,向创建订单的组件发送消息,然后该组件会使用该orderId发布一个事件,以便其他组件可以执行与该订单相关的工作,而无需访问数据库以获取该 ID。
有道理吗?
我们正在实施面向服务的体系结构 (SOA)。我们每个都有不同的服务数据库,客户管理、订单、运输、退款。在不同数据库中跨表维护外键关系的策略是什么(因为 SQL 服务器中不允许跨数据库外键)?是否应该用业务 API 规则代替外键?
这不是微服务;在每个领域复制数据库信息,但 SOA。我们不希望将所有内容都放在 1 个数据库中,因为不同的备份维护时间,不希望 deadlock/runaway 查询导致所有服务中断。面向服务的架构并没有规定我们应该拥有 1 个数据库还是多个数据库。
您可以使用 Guid(UUID) 作为实体的键,由创建者生成,然后您可以在数据库和表中使用该 Guid 来引用有问题的实体。
例如,当您创建一个新订单时,ui会生成订单的Id,向创建订单的组件发送消息,然后该组件会使用该orderId发布一个事件,以便其他组件可以执行与该订单相关的工作,而无需访问数据库以获取该 ID。
有道理吗?