我有两个Web应用程序,一个是管理员,一个是公用的。虽然两者都有相当数量的单独数据,但某个部分,我们称之为物品,都用于两者。更确切地说,项目是在管理应用程序中创建和编辑的,然后显示在公共应用程序中。Postgres - 在应用程序之间共享数据集
因为两者都使用PostgreSQL作为数据库后端,我想他们可以在数据库级别加入 - 我会在公共数据库中创建视图,通过dblink将数据传输到管理数据库。
这是一个很好的解决方案,给出以下约束?
- 有相当多的项目,
- 公共应用程序会做大量的搜索对数据集,
- 这是确定的数据是公共侧有点陈旧,
- 目前的应用程序使用相同的物理数据库服务器,但未来可能会拆分;
如果不是,您会有什么建议?
相同的数据库和不同的模式可能是一个解决办法 - 我会考虑它。然而,就拆分应用程序而言,这是我的一个有意识的决定,允许稍微不同的“业务规则”以及它们的独立开发和扩展。代码重用可以通过共享库:) – 2013-04-10 12:53:13
@TomsMikoss啊,我知道,共享库是有道理的。分离数据库的主要考虑因素是写入:使用复制(将管理站点连接到单个主副本)可以轻松地(相当)轻松地缩放只读操作,但公共站点需要写入的内容(例如日志)可能是值得分离出来。 – IMSoP 2013-04-10 13:46:16
@TomsMikoss另一件需要考虑的问题是使用单独的数据库,您不能跨多个数据库提交原子事务,而无需通过两阶段提交(准备事务)跳过大量的环节。这意味着您可能需要更多的应用程序逻辑来同步某些更改,并确保事物不会比使用具有多个模式的单个数据库时所用的应用程序的一半少。 – 2013-04-10 23:51:25