用于报告和日常交易的数据库

 宋紫紫云__ 发布于 2023-02-09 07:48

我有一个包含大量数据的系统.使用的数据库是SQL Server.其中一个表有大约300000行,并且有相当多的这种大小的表.在这个表上发生了定期更新 - 我们将其称为事务正在发生的"事务数据库".

现在,我们需要实现报告功能.一些架构师提议使用不同的数据库,该数据库是此数据库的副本+一些用于报告的附加表.他们提出这个建议是因为他们不想破坏事务数据库功能.为此,必须经常将数据移动到报告数据库.我的问题是,是否真的需要为此目的建立第二个数据库?我们可以将事务数据库本身用于报告目的吗?由于必须将数据移动到不同的数据库,因此将涉及延迟,如果事务数据库本身用于报告则不是这种情况.期待一些专家建议.

1 个回答
  • 您需要对ETL,数据仓库和报告数据库进行一些研究,因为我认为您的架构师可能会以一种好的方式解决这个问题.由于您没有提供实际报告的详细信息,我将尝试回答一般情况.

    (免责声明:我在这个领域工作,我们有适合这个的产品)

    事务数据库经过优化,可在读取/更新/插入之间实现良好平衡,并且索引和表规范化可以适应这种效果.

    报告数据库适用于除了所有其他事物之外的读取访问非常优化.这意味着将应用于事务数据库的"正常"规范化规则将不适用.实际上,可能存在高度的非规范化以使报告查询更有效且更易于管理.

    在事务数据库上运行复杂(特别是对扩展数据范围的聚合,例如历史时间帧)查询可能会影响性能,使得数据库的关键用户 - 事务生成器可能会受到负面影响.

    虽然在您的情况下可能不需要报告数据库,但您可能会发现将两个用例分开是更简单的.

    您对数据延迟的关注是真实的.这只能由将使用报告的业务用户来回答.通常人们说"我们想要实时信息",实际上很多,如果不是所有的要求都包含非实时信息.可接受的数据陈旧程度只能由他们来回答

    事实上,我建议您稍微进一步研究,并查看报表问题的多维立方体,而不仅仅是报告数据库.将您的报告问题设计抽象到全新的水平.

    2023-02-09 08:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有