我正在尝试在平面OLTP表(不在3NF中)上创建尺寸模型。

有些人认为不需要维度模型表,因为报表的大多数数据都显示为单个表。但是该表包含的内容超出了我们所需的300列。我还是应该将平面表划分为维度和事实,还是直接在报表中使用平面表?

最佳答案

当纯粹出于报告的目的而创建表(在数据仓库中通常使用)时,习惯上用非规范化的数据来创建宽而平坦的表,这是因为:

  • 查询
  • 更容易
  • 它避免了因果用户可能会造成混淆和容易出错的JOINs
  • 查询运行速度更快(尤其是对于使用列式数据存储的数据仓库系统)

  • 该数据格式非常适合用于报告,但是不适合应用程序的常规数据存储-用于OLTP的数据库应使用规范化表。

    不必担心的列数很多 -对于数据仓库来说,这是很正常的。但是,300列确实听起来很大,这表明它们不一定被明智地使用。因此,您可能要检查是否需要它们。

    许多列的一个很好的例子是具有一些标志,这些标志使编写WHERE子句(例如WHERE customer_is_active)变得容易,而不必连接到另一个表并弄清楚它们是否在过去30天中使用过该服务。这些列将需要每天重新计算,但是对于查询数据非常方便。

    底线:在使用数据仓库时,应将的易用性置于性能之上。然后,弄清楚如何通过使用数据仓库系统(例如Amazon Redshift)来优化访问,该系统旨在非常有效地处理此类数据。

    10-06 05:16