我应该创建新数据库还是使用现有数据库?

时间:2018-03-26 21:18:58

标签: sql database-design

我有多个数据库,有时互相交互,但大部分都是独立的。我现在需要构建一个新的应用程序,允许用户搜索应用程序其余部分的数据(搜索其他应用程序的历史记录)。

因此,我将需要十几个存储过程/视图来访问各种数据库中的数据。

我是否应该在正在查询的数据库上有每个存储过程/视图?或者,我是否为应用程序的这一部分提供了一个全新的数据库,该数据库从视图/ SP中的所有其他数据库收集数据并只查询该数据库?

我认为它应该是第一个选项,但是我在哪里将用于登录用户登录的Login表放入这个新的报表应用程序中?它不属于任何其他数据库。 (每个数据库都有自己的登录表,就像它的设置方式一样)。

1 个答案:

答案 0 :(得分:2)

你在这里要求的是商业智能的广泛范围。

您将很快遇到的问题...报告查询往往是查询数量较少且资源相对较多(从硬件角度来看)。如果你愿意,低音量高强度。

您正在访问的数据库很可能是高事务数据库。他们正在处理大量较小的查询,无论是大量单个(或多个)插入还是快速选择。如果你愿意的话,高容量低强度查询。

当然,这两个模型在尝试优化时会产生很大的冲突。运行连接多个表并运行几分钟的报告查询通常会锁定表或消耗阻止(或严重抑制)数据库执行其日常工作的资源。如果系统配置为大量小型交易,那么您的报告查询根本不会获得所需的资源,报告结果的时间线将非常长。

这里的答案是集中式数据仓库,它从多个来源收集数据并将其汇总在一起,以便进行报告。它通常是3个组件,一个集中式数据模型,一个从多个数据源加载该数据模型的etl平台,以及一个与该数据交互的报告平台。有几个第三方潜力(在评论中列出)有点模仿所有三个的功能,或者您可以单独创建这些。

有一些场景(通常是由于资源丰富或流量不足)直接从多个数据源的生产数据进行报告,但这些场景相差甚远(通常从未实际存在)生产环境)。