数据库或数据仓库中的事实表和暗表?

Posted

技术标签:

【中文标题】数据库或数据仓库中的事实表和暗表?【英文标题】:Fact and Dim tables in Database or Data Warehouse? 【发布时间】:2021-09-30 10:53:40 【问题描述】:

我正在为一个接收事务性用户数据的数据库设计架构,目标是存储数据,对其进行转换,然后在仪表板上以图表的形式将其显示给用户。

我的理解是,我们对数据进行规范化以优化数据库中的存储,并将数据仓库中数据库中的数据非规范化为可用于数据可视化/分析的格式。

在线,我看到 Fact 和 Dim 表属于数据仓库,但由于数据的性质,我目前将它们放在我的数据库中。我的理解错了吗?我会认为数据仓库连接了数据库中的 Fact 和 Dim 表并聚合或执行其他计算以进行分析?

我是数据库设计的新手,因此非常感谢任何指导!

【问题讨论】:

你必须做一些基础研究。典型的区别在于OLTP(事务处理)和Data Warehouse(商业智能)。 两者都需要一些数据库来存储数据。 您的(1 个特定研究非重复)问题是什么? PS您的“理解”是错误的,请阅读有关数据库规范化的信息,包括在仓库上下文中和不在仓库上下文中。遵循已发布的信息建模和数据库设计方法,并询问您第一次卡住/不确定的地方。 PS“在线”不是一个很好的学习资源——除非你正在阅读那里可用的数十种已出版的学术和工业教科书之一。 【参考方案1】:

是的,将数据存储在“数据仓库”中以供以后绘制图表很好。

是的,“规范化”(进入“Dim”表)很好,但可能做得过火。例如,不要规范化 DATE 或 DATETIME;弊大于利。

典型的“事实”表只需要很少的索引,可能只需要一个PRIMARY KEY

Fact 表中使用的数据通常需要汇总。然后甚至可能会发生图形 - 绘制一百万个点是没有用的。您可以将其简化为一千,这样您就不会阻塞绘图软件。

应该建立“汇总表”,然后逐步(或持续地)维护。通常,汇总表包含 Fact 表切片的每日计数和小计。 (“聚合”)然后“报告”或获取图表对汇总表起作用。除了比 Fact 表少得多的行之外,此类表还具有可提高查询效率的索引。

更多讨论:http://mysql.rjweb.org/doc.php/datawarehouse(以及 3 篇相关文章)。

为了进一步讨论,让我们在CREATE TABLE 上查看您的事实表和您需要的图表之一的尝试。

【讨论】:

以上是关于数据库或数据仓库中的事实表和暗表?的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库星型模式的维度表和事实表中的数据如何?

数据仓库中的维表和事实表

数据仓库--事实表和维度表

Hadoop之数据仓库设计

Hadoop之数据仓库设计

数据仓库维度建模法案例