分析/报告 - 相同或不同的数据库,以及哪些数据库?

时间:2010-12-30 22:47:18

标签: mysql database data-warehouse

我有一个包含一些商业功能的用户内容网站。所有表都在1个数据库中。现在我在基于活动和用户日志表的部门报告中添加分析 - 将其分解为每年每天的部门报告,每个活动类型等。问题是:我是否创建单独的数据库for analytic(或者人们称之为数据warhouse)或者我只是将这些新表添加到现有数据库中?如果我必须为此创建一个单独的数据库,那么这意味着我需要将主数据库中的所有数据加载到Analyic DB中的临时表中,然后将该数据加载到我假设的分析表中?

分析要求尽可能接近实时,因此基于此我不确定如果我选择单独使用哪个DB。我使用的MySQL可以做提供实时分析的工作吗,即用户采取行动,下一秒如果他查看报告数字将已经汇总?

2 个答案:

答案 0 :(得分:2)

这取决于您期望的报告数量。事务处理数据库通常以3NF设计,以实现高效插入。

由于所需的连接数量,报告更加复杂。此外,从报告中添加大量额外的SELECT事务可能会降低性能,因此使用报告数据库的原因。

由您来衡量可能的报告负载和性能影响,而不是设置报告副本和ETL来填充它。您还需要确定是否有副本,复制频率。如果业务报告针对固定的数据快照(例如每日副本),则可以使用针对“实时”要求的参数,即业务报告可能更“一致”。

有关将数据加载到报告数据库的方法,请参阅Strategies for populating a Reporting/Data Warehouse database

答案 1 :(得分:0)

此时的硬件真的很重要。如果您要在与应用程序相同的系统(硬盘驱动器)上找到分析数据库,那么无论如何您都不会看到大量的性能提升。磁盘扫描会降低您的速度......无论数据库分离如何,一个磁盘的扫描速度都会非常快。

但是,如果我必须实现实时报告......我会为用户活动和监控做第二个数据库。当用户执行活动时,我会插入此数据库。在报告期间,我会加入数据库(这将减慢系统速度,但由于你在同一个盒子上,你别无选择)。我会将用户活动放在一个单独的数据库中,因此随着时间的推移,更容易备份和清理旧数据。

如果您能够将报告系统与应用程序系统分开,我将执行15 ETL /同步作业,该作业仅将您需要的表复制到另一个系统上的报告数据库。然后我会报告该系统。显然,用户有15分钟的延迟,但这允许更快速的报告。但是,这不是一个真正的数据仓库,而是一个满足您特定需求的临时解决方案。