【问题标题】:Service Oriented Architecture: Foreign Key Across Different Databases面向服务的架构:跨不同数据库的外键
【发布时间】:2019-10-28 09:08:27
【问题描述】:

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

这不是微服务;数据库信息在每个领域都被复制,但 SOA。我们不希望将所有内容都放在 1 个数据库中,因为不同的备份维护时间,不希望死锁/失控查询导致所有服务中断。面向服务的架构并没有规定我们应该拥有 1 个数据库还是多个。

【问题讨论】:

  • 如果只有一个进程负责初始数据条目,也许分配一个 UUIS,然后仅将其用作参考?甚至可以用资源类型标识符补充 UUID?问题是当您处理外部引用时,检查它是否有效的唯一方法是调用原始系统以查看它是否知道它。

标签: database .net-core architecture microservices soa


【解决方案1】:

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

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

有意义吗?

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2015-06-10
    • 2021-06-20
    • 2019-03-03
    • 2018-08-13
    • 2021-04-13
    相关资源
    最近更新 更多