我有两个Web应用程序,一个是admin,另一个是公共应用程序。虽然两者都有相当数量的单独数据,但在两者中都使用了某个部分,我们称之为项目。更确切地说,在管理应用程序中创建和编辑项目,然后在公共应用程序中显示。
由于两者都使用PostgreSQL作为数据库后端,我认为它们可以在数据库级别加入 - 我将在公共数据库中创建视图,通过dblink将数据传输到管理数据库。
考虑到以下限制条件,这是一个很好的解决方案吗?
如果没有,你会建议什么?
答案 0 :(得分:4)
不是将数据放在单独的数据库中,而是将所有内容放入单个数据库中,然后使用schemas和access permissions将内容分开。
具体做法是:
admin
架构中,公共用户不会为该架构授予USAGE
。GRANT ... ON ALL TABLES IN SCHEMA
和ALTER DEFAULT PRIVILEGES
。)GRANT
访问这些视图而不是基础表。视图可以引用另一个模式中的表,甚至可以引用多个模式,如果这有助于您管理事物。INSERT
和UPDATE
权限,即可授予对整个表的只读权限。您甚至可能认为将public和admin视为单独的应用程序是有用的,但作为同一应用程序的不同前端接口 - 可能存在应该在它们之间共享而不是复制和粘贴的代码,例如。
答案 1 :(得分:0)
让public直接访问admin
db并控制角色权限。