database - Postgres 架构最佳实践

标签 database postgresql

<分区>

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

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

最佳答案

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

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

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

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

关于database - Postgres 架构最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25586259/

相关文章:

database - 通用数据库表

ruby-on-rails - rake 数据库 :migrate not working on my postgres db

sql - 推进 ORM : How to use own brackets in where clause

sql - 使用 PostgreSQL 在 Django 中寻找读写锁,例如,SELECT FOR SHARE

postgresql - GORM 不创建 ForeignKey 列

javascript - 是什么导致我的 Access 数据库如此缓慢?

java - 如何实现 String 变量而不是 'Landschaft' ?

ruby-on-rails - 如何将我现有的 Rails 应用程序移动到 heroku? (sqlite 到 postgres)

python - hstore或json数据的Django数字比较?

oracle - PostgreSQL 与 Oracle : "compile-time" checking of PL/pgSQL