1

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

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

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

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

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

4

2 回答 2

4

与其将数据放在单独的数据库中,不如将所有内容放在一个数据库中,然后使用模式访问权限将它们分开。

具体来说:

  • 公共站点和管理站点应使用不同的“登录角色”(用户)进行连接。
  • 仅由管理站点使用的表可能位于admin模式中,并且公共用户不会USAGE授予该模式。
  • 数据的其他部分可以放入命名模式中,其中一些可以由两个站点完全访问,其中一些可以混合使用。(如果你很好地划分你的模式,你可以使用GRANT ... ON ALL TABLES IN SCHEMA和。)ALTER DEFAULT PRIVILEGES
  • 正如您所说,公共应该具有某些只读访问权限的表可以在视图中引用。公共用户可以GRANT访问这些视图而不是基础表。视图可以引用另一个模式中的表,甚至可以跨多个模式引用,如果这有助于您管理事物的话。
  • INSERT或者,可以通过简单地不授予该表的公共用户和UPDATE权限来授予对整个表的只读访问权限。

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

于 2013-04-10T12:33:18.747 回答
0

让公共admin直接访问数据库并使用角色控制权限。

数据库角色

于 2013-04-10T12:34:02.500 回答