【发布时间】:2019-08-11 23:41:53
【问题描述】:
我有一个关于微服务和数据库设计的问题。情况:我有一个 Service AircraftsService,它处理有关飞机、飞机类型等的所有数据。我有一个服务航班服务,它处理有关航班的所有数据。我必须将飞机与航班联系起来。通常我会在链接飞机的航班表中创建一个外键。但是在微服务架构中,我知道我有域和单独的数据库。所以我的问题是我该如何表示这个问题。
我的第一个想法是我有一个适用于所有飞机的数据库和一个适用于所有航班的数据库。航班表成为飞机的“间接”外键。当我调用飞行服务时,飞行服务使用飞行表中的 id 调用飞机服务,然后构建响应。那保证我不会直接从飞行服务中调用飞机数据库。
我的解决方案正确吗?这个用例的最佳实践是什么?
在我考虑问题之后,当我删除飞机时我必须告诉飞行服务指定的飞机不再存在并且飞行服务必须更新“间接”外键。
谁能帮帮我?
谢谢
【问题讨论】:
-
你考虑过“物化视图”模式吗?这有帮助吗:stackoverflow.com/a/54676222/1235935 ?
-
是的,这很清楚,但我如何表示外键?数据库中包含飞机ID和航班表中的简单字段吗?
标签: database foreign-keys microservices