Mysql 分析/报告-相同或单独的数据库,以及哪个数据库?
我有一个具有一些商业功能的用户内容网站。所有表都在一个数据库中。现在,我正在根据活动和用户日志表添加分析和部门内报告-将其分解为一年中的每一天、每种活动类型等的部门内报告。问题是:我是为分析创建一个单独的数据库(或人们称之为数据仓库),还是只将这些新表添加到现有数据库中?如果我必须为此创建一个单独的DB,那么这意味着我需要将主DB中的所有数据加载到分析DB中的临时表中,然后将该数据加载到我假设的分析表中Mysql 分析/报告-相同或单独的数据库,以及哪个数据库?,mysql,database,data-warehouse,Mysql,Database,Data Warehouse,我有一个具有一些商业功能的用户内容网站。所有表都在一个数据库中。现在,我正在根据活动和用户日志表添加分析和部门内报告-将其分解为一年中的每一天、每种活动类型等的部门内报告。问题是:我是为分析创建一个单独的数据库(或人们称之为数据仓库),还是只将这些新表添加到现有数据库中?如果我必须为此创建一个单独的DB,那么这意味着我需要将主DB中的所有数据加载到分析DB中的临时表中,然后将该数据加载到我假设的分析表中 分析需求尽可能接近实时,因此基于此,如果我选择单独的数据库,我不确定使用哪种数据库。我使用的
分析需求尽可能接近实时,因此基于此,如果我选择单独的数据库,我不确定使用哪种数据库。我使用的MySQL能否提供实时分析功能,即用户采取行动,下一秒如果他查看一份报告,数字将被聚合?这取决于您期望的报告量。事务处理数据库通常采用3NF设计,以实现高效插入 由于所需的联接数量,报告更加复杂。另外,从报告中添加大量额外的SELECT事务可能会降低性能,因此使用报告数据库的原因也在于此 您可以根据设置报告副本和填充报告副本的ETL来权衡可能的报告负载和性能影响。您还需要确定是否有复制副本,以及复制的频率。您可以使用一个论点来反对“实时”要求,即如果业务是根据固定的数据快照(例如每日副本)进行报告,则业务报告可能更“一致”
有关将数据加载到报表数据库的方法,请参阅。这实际上是关于硬件的问题。如果您要将分析数据库定位在与应用程序相同的系统(硬盘驱动器)上,那么无论您如何剪切它,您都不会看到性能有很大的提高。磁盘扫描会减慢速度…不管数据库分离情况如何,一个磁盘的扫描速度都是如此之快 但是,如果我必须实现实时报告。。。我将为用户活动和监视创建第二个数据库。我将在用户执行活动时插入此数据库。在报告过程中,我会跨数据库加入(这会减慢系统的速度,但由于您在同一个框中,因此您别无选择)。我会将用户活动放在一个单独的数据库中,这样随着时间的推移,备份和清除旧数据就更容易了 如果您能够将报表系统与应用程序系统分离,我将执行15 ETL/sync作业,只将您需要的表复制到不同系统上的报表数据库。然后,我将报告该系统。显然,用户有15分钟的延迟,但这允许更快的报告。然而,这不是一个真正的数据仓库,而是一个满足您特定需求的特别解决方案