【发布时间】:2021-08-30 07:43:44
【问题描述】:
既然我们知道微服务和 Docker 的架构。您认为在两个微服务中使用相同的“posgres”但使用两个独立的数据库是错误的吗?
我将用一个例子来解释:
一项服务负责管理用户数据库,另一项服务负责管理帖子数据库(在博客上)。
我想使用“posgres”,但我怎样才能以最佳方式连接这个数据库? (“posgres”中有一个名为dblink的函数。使用它是否正确且最优?)
我使用队列来连接这两个服务,我不想为每个 micro 创建单独的 posgres。
docker containers:
- user (manage user info with rest api)
- post (manage user's post with rest api)
posgresql:
- database name: user
- table name: user
- columns: firstname, lastname, username, id
- database name: post
- table name: post
- columns: userId, title, content
注意:数据库可以是 postgres 或 mysql 之类的任何东西 ....
我希望我能够正确解释我想要什么:)
【问题讨论】:
-
有
Postgres和Postgresql,没有posgres或posgresql。 -
为什么不用一个数据库两张表呢?请记住,关系数据库是具有两个或多个表之间的关系的数据库。每个数据库一个表的策略与使用关系数据库的全部要点背道而驰。
-
不相关但 Postgresql 中的
dblink早已被远为优秀的外国数据包装器和 foreign tables 所取代。 -
微服务的主要目标是能够在不依赖其他服务的情况下对服务进行更改。只要每个服务不访问另一个数据库(并且这样做会在服务之间创建依赖关系),我认为将两个数据库都放在同一个 Postgres 实例中没有问题。
-
MySQL 所谓的“数据库”实际上是一种模式。因此,如果您确实在 MySQL 中使用了两个“数据库”,那么您将在 Postgres 的一个数据库中使用两个 模式。那么你确实可以在两个表之间有一个外键。
标签: postgresql docker microservices