Architecture 选择数据库连接 假想系统
考虑一个系统,它公开一个web UI,但使用同一数据库模式的多个实例。假设每个用户都属于某个较大的实体,称之为“组织”,并且每个组织都有自己的数据库实例。当用户登录时,系统应确定使用哪个数据库实例 这种系统表面上要求将连接字符串存储在一个集中的数据库中。乍一看,系统仍然需要一个中央数据库,这似乎违背了每个组织拥有自己数据库的目的。其次,我已经读到,首先在数据库中存储连接字符串是不可取的。最后一个观察结果是,将用户登录信息映射到连接字符串是系统确定使用哪个数据库实例的唯一方法,这对我来说似乎很幼稚,但我想不出替代方法 我的问题如下:Architecture 选择数据库连接 假想系统,architecture,database-connection,saas,Architecture,Database Connection,Saas,考虑一个系统,它公开一个web UI,但使用同一数据库模式的多个实例。假设每个用户都属于某个较大的实体,称之为“组织”,并且每个组织都有自己的数据库实例。当用户登录时,系统应确定使用哪个数据库实例 这种系统表面上要求将连接字符串存储在一个集中的数据库中。乍一看,系统仍然需要一个中央数据库,这似乎违背了每个组织拥有自己数据库的目的。其次,我已经读到,首先在数据库中存储连接字符串是不可取的。最后一个观察结果是,将用户登录信息映射到连接字符串是系统确定使用哪个数据库实例的唯一方法,这对我来说似乎很幼稚
作为您对我的第一个问题的回答的澄清点,是否需要通过检查目标URL来确定数据库?更具体地说,如果web UI是使用MVC用C语言编写的,那么登录代码是否会简单地检查
Request.Url
并根据子域选择DB连接?或者您指的是其他技术?建立数据库连接和使用数据库连接是有区别的。依我看,打开一个连接最好用。当您要连接多个数据库时,每个数据库可能需要一个池。您需要某种方法来确定要与哪个池(即哪个数据库)对话,在我的回答中,我假设您有一些映射“email domain:database name”——这可以存储在您的(中央)数据库中。然后,您将拥有另一个映射“databasename:connectionpool”(基本上是一个hashmap),您将在运行时构建该映射。