3

我正在构建一个复杂的平台,我想为它的每个“模块”建立一个专用数据库。但我需要有一个“主”数据库,其中包含一些常见的表,如用户表。我需要能够在多个数据库中的表之间拥有外键。(如 user_id)

我知道如果数据库与它们现在在同一台服务器中,我可以有跨数据库关系,但我不想受此限制,因为如果应用程序增长很多,我可能需要将数据库分成多个服务器。

所以,在做出决定之前,我正在寻找所有的选择。

你对此有何难处?

我正在使用mysql。

4

1 回答 1

4

您可以使用FEDERATED 存储引擎来执行此操作。您所做的是使用 FEDERATED 引擎创建一个本地表,该引擎又将连接到远程系统以解决查询。不过,我不知道它的性能。


更好的方法可能是重新考虑应用程序数据模型。我可以理解您为什么要为复杂系统中的每个模块拥有单独的数据库,但是当您想要共享一些表数据时会变得很困难。如果您对一个模块中强制执行的数据而不是另一个模块中强制执行的数据引入一些限制,那么维护将更加困难。

我认为解决方案是分离对数据的关注。让每个模块都有自己的数据库,但不要让模块查询其他数据!如果一个模块需要关于用户的数据,让它通过user模块获取它。

于 2012-06-04T10:48:19.270 回答