时间:2010-07-26 00:46:15

标签: database database-design architecture reporting

7 个答案:

答案 0 :(得分:34)

答案 1 :(得分:27)

答案 2 :(得分:8)

这个问题需要经验而不是科学。

作为BI架构师,我为客户设计每个BI解决方案的方法非常不同。我没有查看清单。它需要对其系统,报告要求,预算和人力有一个大致的了解。

我个人更喜欢在数据库端尽可能多地保留报告流程(BI世界中的最佳实践)。报告工具仅用于显示目的(最小用于小型计算)。这种方法需要大量的数据预处理,这需要不同的登台表,触发器等。

当你说:

  

我处理具有数亿行的实时报告项目,同时还有数百名用户同时访问应用程序/数据库而没有问题。

你的陈述有一些问题。

  1. 数以亿计的行很多。即使在今天,像Cognos TM1或Qlikview这样的内存工具也难以获得这样的结果。 (查看SAP的SAP HANA,了解业内巨头如何处理它)。

  2. 如果数据库中有数亿行,则并不一定意味着报告需要遍历所有这些记录。也许报告的工作量不是数百万,而是千万。可能那就是你所看到的。

  3. 交易报告与仪表板非常不同。大多数仪表板工具都会预处理和缓存数据。

  4. 我的观点是,在决定何时:

    时,所有这些都会得到体验
    1. 设计新架构
    2. 创建语义数据库
    3. 在同一个交易数据库上工作
    4. 甚至使用报告工具(有时使用带有Java / JSF / Ajax / jQuery或JSP的手写仪表板可以很好地为客户端工作)

答案 3 :(得分:1)

答案 4 :(得分:1)

答案 5 :(得分:0)

我还要补充说,事务数据库意味着保持当前状态,并且通常这样做是为了自我维护。您不希望事务数据库超出其必要的手段。当工作流或事务完成后,将数据移出并移入报告数据库,该数据库设计得更好,可以保存历史数据。

答案 6 :(得分:0)

我还会添加另一个可能使用报告数据库的原因,即:CQRS模式(命令查询责任分离)。

如果您有大量用户访问和写入一小组数据,您可以考虑使用此模式。基本上,它以最简单的形式表示所有命令(创建,更新,删除)都被推送到事务数据库。 您的所有查询(读取)都来自您的报告数据库。这使您可以自由地修改架构和升级功能。

在模式中还有更多内容,我刚才提到了由于您关于报告数据库的问题而感兴趣的位。