我有一个项目,由一个 web 应用程序、一个数据库和一个在后台运行的程序组成,该程序处理由 webapp 创建的行。这两个程序都使用数据库并存储它们所需的信息(两个应用程序都使用表)。
为了使情况更清楚,假设我有一个包含三个表 A、B 和 C 的数据库(由我的应用程序独家使用)。
- A 仅由我的 webapp 使用。
- C 仅由其他程序使用。
- B 包含只有 webapp 需要的列以及其他程序使用的列,当然还有两者都使用的列。
你可以这样想整个项目:
- 用户通过 webapp 下订单
- webapp将订单存储在数据库中
- 另一个程序访问数据库并处理订单
- 如果在处理过程中发生错误,这些错误也会存储在数据库中
这就提出了以下问题:
- 哪个程序应该负责管理数据库中的表?
- 每个程序都应该自己管理其唯一需要的表,还是应该一个人管理所有表,以便从一个中心点管理数据库?
- 谁应该管理两个应用程序都需要的表?
- 或者我应该自己管理数据库,因为数据库结构不应该经常改变
旁边的一些信息:DBMS 是postgres 9.3,webapp 使用playframework并通过anorm访问数据库(目前使用进化管理数据库),另一个程序是用 scala 编写的,并使用 slick 访问数据库。