Postgres模式最佳实践

6
我对Postgres相对较新,在过去几乎完全使用MySQL后,我希望转向Postgres,因为它具有更多的企业级功能和SQL兼容性。但是,Postgres的结构与MySQL截然不同,因为您拥有一个数据库,然后在其下有一个或多个模式,而在MySQL中,数据库和模式在某种程度上是相同的。在最佳实践方面,我的Postgres应用程序是否应该是一个数据库和一个模式?或者将表分成逻辑组作为模式是否可以接受。例如,user_management模式将包括用户,角色,角色映射表等。
我知道这个问题高度主观,但我只是寻找最佳实践。目前,我的数据库仅有40个表,因此我有些担心将多个模式用于逻辑分组,因为有些表只有少量表。我只是不确定人们在实际情况下如何使用Postgres。
1个回答

9
通常最好将它们放在单个模式中,并将其作为用户/数据库的第一个模式放在search_path上。许多人只使用public,这很好。将模式命名为您的应用程序并在其中保存表也是相当合理的。
有些工具不支持模式,或使使用模式更加困难。因此,如果您不需要模式提供的命名空间,则可以合理选择不使用它。
对于可重用组件,您可能希望将其打包为仅包含SQL的扩展(请参见编写扩展),在这种情况下,没有必要将其隔离在模式中。
我主要认为模式在需要命名空间隔离时非常有用-例如,允许具有冲突表名称的不同应用共享一个数据库,或作为多租户应用程序实例的几种方法之一。

感谢您深入的解释,现在更有意义了。 - greyfox

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