我对微服务和数据库设计有疑问。情况:我有一个Service AircraftsService,可以处理有关飞机,飞机类型等的所有数据。我有一个Service FlightsService,可以处理有关航班的所有数据。我必须把飞机和飞机联系起来。通常,我会在链接飞机的飞行表中创建一个外键。但是在微服务架构中,我了解到我拥有域和独立的数据库。所以我的问题是我怎么能代表这个问题。
我首先想到的是,我有一个用于所有飞机的数据库和一个用于所有航班的数据库。飞行表成为飞机的“间接”外键。当我致电航班服务时,航班服务会使用航班表中的ID致电飞机服务,然后建立响应。那保证了我不会直接从飞行服务中调用飞机数据库。
我的解决方案正确吗?此用例的最佳做法是什么?
考虑到问题之后,删除飞机是什么意思,我必须告诉飞行服务人员指定的飞机不再存在,并且飞行服务人员必须更新“间接”外键。
有人可以帮我吗?
谢谢
答案 0 :(得分:1)
在处理微服务时,有多种最佳数据库实践方法,就所使用实体的域以及应用程序使用范围而言,可能有所不同。
micor服务中数据库设计的最佳实践很少,首先列出其中的一些
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
确定将要提供的每个服务的负载。可以通过两种方式计算负载。
然后您可以决定方案。