重构远离共享数据库模式

Bra*_*ell 6 architecture

在工作中,我们在集中式SQL服务器中有几个数据库应用程序.每当一个应用程序需要处理来自另一个应用程序的数据时,它只是查询它或通过数据库更新它.我相信这是"企业集成模式"一书(Hohpe&Woolf)中描述的"共享数据库"模式.

这些跨数据库依赖性正在给我们带来许多令人头疼的问题.现在最大的问题是我们在SQL服务器上遇到性能问题,并且由于跨数据库依赖性而无法扩展.我认为我们应该做的是从共享数据库模式转向EIP手册中描述的消息传递系统.每个应用程序都将负责所有自己的数据,而其他想要访问该数据的应用程序将通过服务(在消息传递总线上?)获取它.

  • 我们从哪里开始重构消息传递模式?
  • 我们首先重构其中一个应用程序来管理自己的应用程序数据库吗?
  • 那么其他应用程序目前通过数据库与那个应用程序集成了什么?
  • 这是解耦数据库依赖关系的最佳方法,还是应该从其他地方开始?

chi*_*s42 7

我建议进行3阶段过渡.

  1. 为每个应用程序添加消息传递层.
  2. 更改所有跨应用程序数据访问权限以使用新创建的消息传递层.
  3. 根据需要扩展(现在独立的)数据库.

另外,假设您有3个申请; A,B和C.

您还可以将其视为3个单独的过渡:

  • 申请A.

    • 将消息添加到A.
    • 在B&C中将呼叫更改为A.
  • 申请B.

    • 将消息添加到B
    • 在A&C中将呼叫更改为B.
  • 申请C.

    • 将消息添加到C
    • 在A&B中将呼叫更改为C.

在此过程中,结果与阶段2结束时的结果相同,并且阶段3可以继续.不同之处在于,专注于一种重构还是专注于应用程序是否更有效率.