我有一个保存大量数据的系统。使用的数据库是SQL Server。其中一张表大约有 300000 行,而且这种大小的表数量相当多。该表会定期更新 - 我们将其称为发生事务的“事务数据库”。
现在,我们需要实现报告功能。一些架构师提出了一个不同的数据库,它是该数据库的副本+一些用于报告的附加表。他们提出这一点是因为他们不想破坏事务数据库功能。为此,必须经常将数据移至报告数据库。我的问题是,是否真的需要为此目的拥有第二个数据库?我们可以使用事务数据库本身来进行报告吗?由于数据必须移动到不同的数据库,因此会涉及延迟,但如果使用事务数据库本身进行报告则不会出现这种情况。
期待一些专家的建议。
您需要对 ETL、数据仓库和报告数据库进行一些研究,因为我认为您的架构师可能会以一种很好的方式解决这个问题。由于您没有提供实际报告的详细信息,我将尝试回答一般情况。
(免责声明:我在这个领域工作,我们有适合这个领域的产品)
事务数据库针对读取/更新/插入之间的良好平衡进行了优化,并且索引和表规范化旨在实现这一效果。
报告数据库的设计目标是非常非常适合读取访问,而不是其他所有事情。这意味着应用于事务数据库的“正常”规范化规则将不适用。事实上,高度的非规范化可以使报告查询更高效、更易于管理。
在事务数据库上运行复杂的(尤其是扩展数据范围(例如历史时间范围)的聚合)查询可能会影响性能,从而导致数据库的关键用户(事务生成器)可能受到负面影响。
尽管您的情况可能不需要报告数据库,但您可能会发现将两个用例分开会更简单。
您对数据延迟的担忧是真实存在的。这只能由使用报告的业务用户来回答。人们经常说“我们想要实时信息”,而事实上,他们的很多(如果不是全部)需求都包含在非实时信息中。数据陈旧的可接受程度只能由他们来回答
事实上,我建议您进一步进行研究,并针对您的报告问题考虑多维立方体,而不仅仅是报告数据库。我们的设计将您的报告问题抽象到全新的水平。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)