表对服务和模式对服务有什么区别?

4

我的问题应该是不言自明的,但我正在学习微服务以及与其配合使用的三种数据库配置方式:

  1. 一个服务对应一个数据库
  2. 一个服务对应一个模式
  3. 一个服务对应一张表

为每个服务分配一个专用数据库很容易理解,但我无法理解2和3之间的区别。我在Google上搜索得到的解释也很模糊——一个私有表集与一个私有模式,这不是基本上相同的吗?

1个回答

1
在PostgreSQL中,模式是一组表。
您可以使用每个服务一个表的方式,您需要在每个服务的表前缀中加上服务的名称,以了解哪个表属于哪个服务(服务foo => 表foo_A,foo_B,...)。您也可以使用每个服务一个模式的方式,模式的名称与服务的名称相同,您可以根据需要为表命名(服务foo => 模式foo,其中包含表foo.A,foo.B,...当您在'foo'模式中时,只需调用A,B,...)。
关于安全性,一个好的做法是为每个服务创建一个用户,并将用户限制在该服务的表上。在模式上分配这些限制比在每个表上更容易和更安全。当您添加一个表时,您有可能忘记设置限制。如果您将表添加到模式中,则模式的限制将应用。
因此,我建议使用每个服务一个模式而不是每个服务一个表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接