

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Shared-database-per-service 图案
<a name="shared-database"></a>

在这种 shared-database-per-service模式中，同一个数据库由多个微服务共享。在采用此模式之前，您需要仔细评测应用程序架构，并确保避免使用热表（多个微服务共同写入的单个表）。所有数据库更改也必须向后兼容；例如，只有当所有微服务的当前和传统版本均未引用对象时，开发人员才可以删除列或表。

在下图中，保险数据库由所有微服务共享，并且 IAM policy 提供对数据库的访问权限。这会导致开发时间耦合；例如，“销售”微服务的更改需要与“客户”微服务协调架构变更。这种模式不会缓解开发团队之间的依赖关系，并且会引入运行时耦合，因为所有微服务共享同一个数据库。例如，长期运行的“销售”事务可能会锁定“客户”表，从而阻止“客户”事务。

![Shared-database-per-service 图案](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-data-persistence/images/enabling-diagram7.png)


若为以下情况，您应该考虑使用这种模式：
+ 您不希望对现有代码库进行过多的重构。
+ 您可以通过使用提供原子性、一致性、隔离性和持久性 (ACID) 的事务来强制执行数据一致性。
+ 您只想维护和运行一个数据库。
+ 由于现有微服务之间存在相互依赖关系，因此实现该 database-per-service模式很困难。
+ 您不想完全重新设计现有的数据层。