我有一个具有某些业务功能的用户内容网站。所有表都在 1 个数据库中。现在,我在基于事件和用户日志表的部门报告中添加分析 - 将其分解为按一年中的每一天、按每种事件类型等划分的部门报告。问题是:我是否创建一个单独的数据库用于分析(或人们称之为数据仓库)还是我只是将这些新表添加到现有数据库中?如果我必须为此创建一个单独的数据库,那么这意味着我需要将主数据库中的所有数据加载到分析数据库中的临时表中,然后将该数据加载到我假设的分析表中?
分析要求尽可能接近实时,因此基于此我不确定如果我选择一个单独的数据库应该使用哪个数据库。我使用的 MySQL 能否完成提供实时分析的工作,即用户采取行动,如果他查看报告,下一秒就会汇总这些数字?
最佳答案
这取决于您期望的报告数量。事务处理数据库通常采用 3NF 设计以实现高效插入。
由于所需的连接数量,报告更加复杂。此外,从报告中添加大量额外的 SELECT 事务可能会降低性能,这就是使用报告数据库的原因。
您可以权衡可能的报告负载和性能影响与设置报告副本和 ETL 来填充它的关系。您还需要确定是否有副本,以及复制的频率。有一个论点可以反对“实时”要求,即如果企业根据固定的数据快照(例如每日副本)进行报告,则业务报告可能会更加“一致”。
参见 Strategies for populating a Reporting/Data Warehouse database了解将数据加载到报告数据库的方法。
关于mysql - 分析/报告 - 相同或单独的数据库,哪个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566865/