Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 分析/报告-相同或单独的数据库,以及哪个数据库?_Mysql_Database_Data Warehouse - Fatal编程技术网

Mysql 分析/报告-相同或单独的数据库,以及哪个数据库?

Mysql 分析/报告-相同或单独的数据库,以及哪个数据库?,mysql,database,data-warehouse,Mysql,Database,Data Warehouse,我有一个具有一些商业功能的用户内容网站。所有表都在一个数据库中。现在,我正在根据活动和用户日志表添加分析和部门内报告-将其分解为一年中的每一天、每种活动类型等的部门内报告。问题是:我是为分析创建一个单独的数据库(或人们称之为数据仓库),还是只将这些新表添加到现有数据库中?如果我必须为此创建一个单独的DB,那么这意味着我需要将主DB中的所有数据加载到分析DB中的临时表中,然后将该数据加载到我假设的分析表中 分析需求尽可能接近实时,因此基于此,如果我选择单独的数据库,我不确定使用哪种数据库。我使用的

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


分析需求尽可能接近实时,因此基于此,如果我选择单独的数据库,我不确定使用哪种数据库。我使用的MySQL能否提供实时分析功能,即用户采取行动,下一秒如果他查看一份报告,数字将被聚合?

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

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

您可以根据设置报告副本和填充报告副本的ETL来权衡可能的报告负载和性能影响。您还需要确定是否有复制副本,以及复制的频率。您可以使用一个论点来反对“实时”要求,即如果业务是根据固定的数据快照(例如每日副本)进行报告,则业务报告可能更“一致”


有关将数据加载到报表数据库的方法,请参阅。

这实际上是关于硬件的问题。如果您要将分析数据库定位在与应用程序相同的系统(硬盘驱动器)上,那么无论您如何剪切它,您都不会看到性能有很大的提高。磁盘扫描会减慢速度…不管数据库分离情况如何,一个磁盘的扫描速度都是如此之快

但是,如果我必须实现实时报告。。。我将为用户活动和监视创建第二个数据库。我将在用户执行活动时插入此数据库。在报告过程中,我会跨数据库加入(这会减慢系统的速度,但由于您在同一个框中,因此您别无选择)。我会将用户活动放在一个单独的数据库中,这样随着时间的推移,备份和清除旧数据就更容易了

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