我有一个关于微服务和数据库设计的问题。情况:我有一个 Service AircraftsService,它处理有关飞机、飞机类型等的所有数据。我有一个 Service FlightsService 可以处理有关航类的所有数据。我必须将飞机与航类联系起来。通常我会在链接飞机的航类表中创建一个外键。但在微服务架构中,我知道我有域和独立的数据库。所以我的问题是如何表示这个问题。
我的第一个想法是我有一个所有飞机的数据库和一个所有航类的数据库。航类表成为飞机的“间接”外键。当我调用航类服务时,航类服务使用航类表中的 ID 调用飞机服务,然后构建响应。这 promise 我不会直接从航类服务调用飞机数据库。
我的解决方案是否正确?此用例中的最佳做法是什么?
在我思考这个问题之后,当我删除飞机时我必须告诉飞行服务指定的飞机不再存在并且飞行服务必须更新“间接”外键。
有人可以帮帮我吗?
谢谢
最佳答案
在处理微服务时,有多种最佳数据库实践方法,它可能因所使用实体的域以及您的应用程序使用范围而异。
微服务中数据库设计的最佳实践很少,首先列出其中的一些
1 - Private-tables-per-service – each service owns a set of tables that must only be accessed by that service
2 - Schema-per-service – each service has a database schema that’s private to that service
3 - Database-server-per-service – each service has it’s own database server.
您可以根据您的数据大小和数据数量混合搭配这些。
我希望您引用并浏览此页面以获得完美示例。
Microservices Database Best practices
确定您将拥有的每项服务的负载。负载可以通过两种方式计算。
- 数据负载(将检索多少数据)
- 服务点击次数(服务将被调用多少次)
然后你可以决定方法。
关于database - 如何设计一对多的微服务数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55275001/