选择和聚合来自多个数据库的数据

时间:2015-03-29 20:05:06

标签: sql-server database database-design cloud sql-server-2014

我正在寻找一些建议,如果这是错误的部分,请道歉(如果更合适,我会删除并在数据库管理员中发帖)。

我有一个管理法律案件的应用程序。每个律师事务所都有自己的数据库来管理自己的案例和其他业务流程。因此,总共可能有数百个数据库。

公民可能有许多律师事务所的案件。其中一些案例处于其生命的各个“阶段”(例如见下文)

我希望我的应用程序按阶段和状态向用户显示总计所有个案例的汇总。所以对于用户来说,它看起来像是来自电子邮件客户端的东西:

Cases (15)
  Open (10)
   Under Examination (4)
   Escalated (6)
  Closed (5)

要获得这些数字,我必须从每个数据库中为每个律师事务所选择所有案例。在伪代码中,我将不得不:

SELECT 
 c1.Title, c1.Stage
FROM 
 [@DatabaseName].dbo.Cases c1 
WHERE 
 c1.CustomerID = @CustomerUserID

必须为EACH数据库(可能超过50个)执行此操作,然后将所有结果联合起来以获得该公民拥有的OpenStage个案例的总数。

我能想到的唯一另一种方法就是不要使用多租户架构。也就是说,1个数据库中的案例只有1个表,其中有一列用于标识它所属的律师事务所。问题是,如果应用程序发展到其他领域,如人力资源或财务等,这个解决方案将无法很好地扩展。这意味着我必须将每个律师事务所的全部数据存储在1个数据库中,这将导致我的服务器和资源。

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

检查Azure Elastic Scale Api

这提供了使用分片管理数据库处理多个分片的API。

您可以为每家律师事务所创建一个分片。