我是Postgres的新手,过去几乎完全使用MySQL,因此我希望迁移到Postgres以获取更多的企业功能(如功能和SQL遵从性)。但是Postgres的结构与MySQL的结构大不相同,因为您拥有一个数据库,然后在数据库下建立一个或多个模式,而在MySQL中,数据库和模式属于同一类。就最佳实践而言,我的应用程序应该是Postgres是一个数据库还是一个架构?还是可以将表分为多个逻辑组作为架构吗?例如,user_management模式将包括用户,角色,role_map表等。
我意识到这个问题是非常主观的,但是我只是在寻找最佳实践。我的数据库目前只有40个表,因此我对使用多个模式对表进行逻辑分组有些警惕,因为有些表只有几个表。我只是不确定人们在现实世界中如何使用Postgres。
将它们保留在单个模式中并将其作为search_path
用户/数据库的第一个模式几乎总是比较好的。许多人只是使用public
,这很好。以应用程序命名架构并将表格保留在其中也是很合理的。
有些工具不支持架构,或者使架构的使用更加困难。因此,如果不需要命名空间提供的方案,则可以合理选择不使用它。
对于可重用的组件,您可能希望将它们打包为琐碎的纯SQL扩展(请参阅编写扩展,在这种情况下,无需将它们隔离在架构中。
我主要认为架构在需要名称空间隔离时很有用-例如,允许可能具有冲突表名的不同应用共享一个数据库,或者作为多租户应用实例化的几种方法之一。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句