如何为微服务重构数据模型?

时间:2018-08-20 18:13:25

标签: database database-design architecture microservices data-modeling

如何为微服务重构数据模型?

例如,我有一个整体应用程序。 让我们将其命名为“用户和事件CRUD服务”。

用户和事件在物理数据库模型方面紧密耦合。让他们为他们建立数据模型:

Users table:
    name PK

Events table:
    title PK
    creator_user_name FK (points to Users:name)

现在我想将我的整体应用程序划分为两个微服务。让我们命名吧

  1. CRUD用户服务
  2. CRUD事件服务

我在想关于分离上述数据模型还是不分离。

第一种方法是:     继续使用上面的数据模型,因此两种服务都使用一个数据库。

第二种方法是:     重新构造我的数据模型,使其看起来像这样(每个服务都有自己的数据库):

DB 1: users
        Users table:
            name PK    

DB 2: events
    Event table:
        title PK
        creator_user_name (indexed)

考虑这种情况,哪种方法最好?在那种情况下,最佳做法是什么?

我想我可以简单地选择第一种方法,但是这没有错,但是 那么方法2呢?它可以用于int实践吗?那会在以后引起一些令人惊讶的后果吗? 我想方法2也完全可以,但是我不确定,因此需要帮助进行澄清。

1 个答案:

答案 0 :(得分:0)

这样想:随着时间的流逝,您向系统中添加了越来越多的服务。

如果您所有的服务都访问同一个数据库,那么最终您会将数据库作为所有服务的中央联系人。进行更改将非常困难,因为很难知道哪种服务使用哪些表。

如果您想正确执行操作,请选择方法2 。 每个服务都有其自己的数据库,微服务除了拥有自己的数据库之外,不应访问数据库。 必要时,服务可以调用另一个服务(精心设计的方法)

最好的问候 布林