Postgres - 在应用程序之间共享数据集

时间:2013-04-10 12:17:45

标签: database postgresql

我有两个Web应用程序,一个是admin,另一个是公共应用程序。虽然两者都有相当数量的单独数据,但在两者中都使用了某个部分,我们称之为项目。更确切地说,在管理应用程序中创建和编辑项目,然后在公共应用程序中显示。

由于两者都使用PostgreSQL作为数据库后端,我认为它们可以在数据库级别加入 - 我将在公共数据库中创建视图,通过dblink将数据传输到管理数据库。

考虑到以下限制条件,这是一个很好的解决方案吗?

  • 有很多项目,
  • 公共应用程序将对数据集进行广泛搜索,
  • 数据在公共方面有点陈旧是可以的,
  • 目前,应用程序使用相同的物理数据库服务器,但将来可能会拆分;

如果没有,你会建议什么?

2 个答案:

答案 0 :(得分:4)

不是将数据放在单独的数据库中,而是将所有内容放入单个数据库中,然后使用schemasaccess permissions将内容分开。

具体做法是:

  • 公共和管理站点应使用不同的“登录角色”(用户)进行连接。
  • 管理网站仅使用的表格可能位于admin架构中,公共用户不会为该架构授予USAGE
  • 其他数据部分可以放入命名模式中,其中一些可以被两个站点完全访问,其中一些可以混合使用。 (如果您将模式划分得很好,可以使用GRANT ... ON ALL TABLES IN SCHEMAALTER DEFAULT PRIVILEGES。)
  • 公众应该拥有一些只读访问权限的表可以在视图中引用。公共用户可以GRANT访问这些视图而不是基础表。视图可以引用另一个模式中的表,甚至可以引用多个模式,如果这有助于您管理事物。
  • 或者,只需不在该表上授予公共用户INSERTUPDATE权限,即可授予对整个表的只读权限。

您甚至可能认为将public和admin视为单独的应用程序是有用的,但作为同一应用程序的不同前端接口 - 可能存在应该在它们之间共享而不是复制和粘贴的代码,例如。

答案 1 :(得分:0)

让public直接访问admin db并控制角色权限。

Database Roles