我有一个包含大量数据的系统.使用的数据库是SQL Server.其中一个表有大约300000行,并且有相当多的这种大小的表.在这个表上发生了定期更新 - 我们将其称为事务正在发生的"事务数据库".
现在,我们需要实现报告功能.一些架构师提议使用不同的数据库,该数据库是此数据库的副本+一些用于报告的附加表.他们提出这个建议是因为他们不想破坏事务数据库功能.为此,必须经常将数据移动到报告数据库.我的问题是,是否真的需要为此目的建立第二个数据库?我们可以将事务数据库本身用于报告目的吗?由于必须将数据移动到不同的数据库,因此将涉及延迟,如果事务数据库本身用于报告则不是这种情况.期待一些专家建议.
您需要对ETL,数据仓库和报告数据库进行一些研究,因为我认为您的架构师可能会以一种好的方式解决这个问题.由于您没有提供实际报告的详细信息,我将尝试回答一般情况.
(免责声明:我在这个领域工作,我们有适合这个的产品)
事务数据库经过优化,可在读取/更新/插入之间实现良好平衡,并且索引和表规范化可以适应这种效果.
报告数据库适用于除了所有其他事物之外的读取访问非常优化.这意味着将应用于事务数据库的"正常"规范化规则将不适用.实际上,可能存在高度的非规范化以使报告查询更有效且更易于管理.
在事务数据库上运行复杂(特别是对扩展数据范围的聚合,例如历史时间帧)查询可能会影响性能,使得数据库的关键用户 - 事务生成器可能会受到负面影响.
虽然在您的情况下可能不需要报告数据库,但您可能会发现将两个用例分开是更简单的.
您对数据延迟的关注是真实的.这只能由将使用报告的业务用户来回答.通常人们说"我们想要实时信息",实际上很多,如果不是所有的要求都包含非实时信息.可接受的数据陈旧程度只能由他们来回答
事实上,我建议您稍微进一步研究,并查看报表问题的多维立方体,而不仅仅是报告数据库.将您的报告问题设计抽象到全新的水平.