如何一对多设计微服务数据库?

时间:2019-03-21 06:39:01

标签: database foreign-keys microservices

我对微服务和数据库设计有疑问。情况:我有一个Service AircraftsService,可以处理有关飞机,飞机类型等的所有数据。我有一个Service FlightsService,可以处理有关航班的所有数据。我必须把飞机和飞机联系起来。通常,我会在链接飞机的飞行表中创建一个外键。但是在微服务架构中,我了解到我拥有域和独立的数据库。所以我的问题是我怎么能代表这个问题。

我首先想到的是,我有一个用于所有飞机的数据库和一个用于所有航班的数据库。飞行表成为飞机的“间接”外键。当我致电航班服务时,航班服务会使用航班表中的ID致电飞机服务,然后建立响应。那保证了我不会直接从飞行服务中调用飞机数据库。

我的解决方案正确吗?此用例的最佳做法是什么?

考虑到问题之后,删除飞机是什么意思,我必须告诉飞行服务人员指定的飞机不再存在,并且飞行服务人员必须更新“间接”外键。

有人可以帮我吗?

谢谢

1 个答案:

答案 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

确定将要提供的每个服务的负载。可以通过两种方式计算负载。

  • 数据加载(将检索多少数据)
  • 服务命中计数(服务将被调用多少次)

然后您可以决定方案。