数据和数据库架构 - 从单体架构转向微服务

Data & Database Architecture - Moving from a monolithic architecture to microservices

我有一个关于数据架构和数据库的小问题。

我们有一个中央数据库。它连接到 API。此数据库已 link 编辑到一个单体应用程序,我们正试图将其拆分为多个服务。

我们有一个 API,我们将其称为“Api1”。这个API会管理不同的信息,包括省份。

我们还有另一个 API,我们称之为“Api2”,它将像应用程序一样管理数据。

这些申请被link输入到一个省的数据库中。到目前为止,这个 Api2 将直接连接到与 Api1 相同的数据库。我们想结束这种做事方式,这不是最优的。

那么,我们如何使用来自另一个数据库的外键保持这种连接和这种参照完整性?我们应该将信息从数据库 1 复制到数据库 2,还是应该破坏数据库 link,并包含一个 HTTP 调用以从 API 更新此信息,从而转换“province_id" FK 字段仅转为 INT?

我的问题有点复杂,但是主题对我来说似乎有点复杂,在此先感谢您的回答!

克里斯托夫

在这种情况下,没有直接的方法来保持这种参照完整性。有几个选项可用:-

  1. 只需删除参照完整性并仅将 id 保留为 INT。如果我们不直接在 App2 中使用 App1 数据,我们可以选择该选项。仅供参考
  2. 复制数据。这里我们需要确保App1数据是Source of Truth并且Replicate副本是只读的。
  3. 选项 1 和一项检查数据库是否包含有效数据的后端服务。

根据我的经验,大多数情况下会使用选项 1,然后是选项 2,然后是选项 3。此外,复杂程度也会按相同的顺序增加。