Postgres架构最佳实践

时间:2014-08-30 20:01:26

标签: database postgresql

我比Postgres更新,过去几乎完全使用过MySQL我希望转向Postgres,以获得更多类似企业的功能和SQL合规性。然而,Postgres的结构与MySQL的结构大不相同,因为你拥有一个数据库,然后是一个或多个模式,而在MySQL数据库和模式中则是同一个模式。在最佳实践方面,我的应用程序应该是Postgres是一个数据库还是一个模式?或者可以将表拆分为逻辑组作为模式。 user_management模式的示例包括用户,角色,role_map表等。

我意识到这个问题非常主观,但我只是在寻找最佳实践。我的数据库目前只有40个表,所以我有点担心使用多个模式逻辑地对表进行分组,因为有些表只有几个表。我不确定人们在现实世界中对Postgres做了什么。

1 个答案:

答案 0 :(得分:4)

将它们保存在单个模式中几乎总是更好,并将其作为用户/数据库的search_path的第一个模式。很多人只使用public,这很好。在你的应用程序之后命名一个架构并保持你的表格也是合理的。

某些工具不支持架构,或者更难以使用架构。因此,如果您不需要命名空间模式,则可以合理地选择不使用它。

对于可重用的组件,您可能希望将它们打包为简单的SQL扩展(请参阅writing extensions,在这种情况下,不需要在模式中将它们隔离。

当您需要名称空间隔离时,我主要看模式是有用的 - 例如,允许可能具有冲突表名的不同应用程序共享一个数据库,或者作为多租户应用程序实例化的几种方法之一。