我是Postgres的新成员,因为我在过去几乎完全使用了MySQL,所以我希望转移到Postgres,因为它更像特性和符合SQL的企业级特性。但是,Postgres的结构与MySQL有很大不同,因为您有一个数据库,然后在它下面有一个或多个模式,而在MySQL中,数据库和模式是相同的。就最佳实践而言,我的应用程序是否应该是一个数据库和一个模式?还是可以将表分成逻辑组作为模式。例如,user_management模式将包括用户、角色、role_map表等。
我意识到这个问题非常主观,但我只是在寻找最佳实践。我的数据库目前只有40个表,所以我对使用多个模式对表进行逻辑分组有点谨慎,因为有些表可能只有几个表。我只是不知道人们在现实世界里用Postgres做什么。
发布于 2014-08-30 13:20:05
最好将它们保存在一个模式中,并将其作为用户/数据库的search_path
上的第一个模式。很多人只使用public
,这很好。用应用程序命名模式并将表保存在应用程序中也是非常合理的。
有些工具不知道模式,或者使使用模式更加困难。因此,如果您不需要提供名称空间模式,您可以合理地选择不使用它。
对于可重用的组件,您可能希望将它们打包为仅使用SQL的扩展(请参阅写入扩展,在这种情况下,不需要将它们隔离在模式中。
当您需要名称空间隔离时,我主要认为模式是有用的--例如,允许可能具有冲突的表名的不同应用程序共享一个数据库,或者作为多租户应用程序实例的几种方法之一。
https://stackoverflow.com/questions/25586259
复制相似问题