答案 0 :(得分:34)
答案 1 :(得分:27)
答案 2 :(得分:8)
这个问题需要经验而不是科学。
作为BI架构师,我为客户设计每个BI解决方案的方法非常不同。我没有查看清单。它需要对其系统,报告要求,预算和人力有一个大致的了解。
我个人更喜欢在数据库端尽可能多地保留报告流程(BI世界中的最佳实践)。报告工具仅用于显示目的(最小用于小型计算)。这种方法需要大量的数据预处理,这需要不同的登台表,触发器等。
当你说:
我处理具有数亿行的实时报告项目,同时还有数百名用户同时访问应用程序/数据库而没有问题。
你的陈述有一些问题。
数以亿计的行很多。即使在今天,像Cognos TM1或Qlikview这样的内存工具也难以获得这样的结果。 (查看SAP的SAP HANA,了解业内巨头如何处理它)。
如果数据库中有数亿行,则并不一定意味着报告需要遍历所有这些记录。也许报告的工作量不是数百万,而是千万。可能那就是你所看到的。
交易报告与仪表板非常不同。大多数仪表板工具都会预处理和缓存数据。
我的观点是,在决定何时:
时,所有这些都会得到体验答案 3 :(得分:1)
答案 4 :(得分:1)
答案 5 :(得分:0)
我还要补充说,事务数据库意味着保持当前状态,并且通常这样做是为了自我维护。您不希望事务数据库超出其必要的手段。当工作流或事务完成后,将数据移出并移入报告数据库,该数据库设计得更好,可以保存历史数据。
答案 6 :(得分:0)
我还会添加另一个可能使用报告数据库的原因,即:CQRS模式(命令查询责任分离)。
如果您有大量用户访问和写入一小组数据,您可以考虑使用此模式。基本上,它以最简单的形式表示所有命令(创建,更新,删除)都被推送到事务数据库。 您的所有查询(读取)都来自您的报告数据库。这使您可以自由地修改架构和升级功能。
在模式中还有更多内容,我刚才提到了由于您关于报告数据库的问题而感兴趣的位。