我正在构建一个复杂的平台,我希望为它的每个“模块”都有一个专用的数据库。但我需要一个“主”数据库,它有一些像users表这样的公共表。我需要能够在多个数据库中的表之间使用外键。 (比如user_id)
我知道如果数据库与他们现在所在的服务器相同,我可以拥有跨数据库关系,但我不想受此限制,因为如果应用程序增长很多,我可能需要将数据库分成多个服务器
所以,在做出决定之前,我正在寻找所有选择。
你对此有何看法?
我正在使用mysql。
答案 0 :(得分:4)
您可以使用FEDERATED storage engine执行此操作。您所做的是使用FEDERATED引擎创建本地表,然后该引擎将连接到远程系统以解析查询。不过,我不知道这个的表现。
更好的方法可能是重新考虑应用程序数据模型。我可以理解为什么你想为复杂系统中的每个模块建立单独的数据库,但是当你想要共享一些表数据时它会变得很难。如果对一个模块中强制执行的数据进行一些限制而对另一个模块执行的数据不受限制,则维护起来会更加困难。
我认为解决方案是分离对数据的担忧。让每个模块都有自己的数据库,但不要让模块查询其他数据!如果模块需要有关用户的数据,请让它通过user
模块获取。