如何在数据仓库中组织数据集市

how to organize data marts in data warehouse

我正在为我的公司建立一个新的企业数据仓库,使用 Kimball 方法(即数据集市的集合)。我想知道组织数据集市的最佳实践(或通常实践)。

1) 每个数据集市是否应该是 EDW 服务器上的一个单独的数据库?或者,每个数据集市应该是单个数据库的模式吗?

2) 对于一致的维度(即适用于 2+ 个数据集市/主题区域/业务流程的维度),它们应该存在于单独的模式或数据库中吗?或者,因为我们事先不知道哪些维度将被整合(因为我们一次构建一个数据集市),我们是否应该简单地在我们的企业总线矩阵(Excel 文件)中识别整合的维度并使没有努力在 EDW 中隔离它们?

3)

a) 事实 tables 和维度 tables 是否应该在 EDW 中被识别?例如,由于我将维护将与自助服务 BI 用户共享的每个星型模式的图表,因此通过某种方法在数据库中识别事实 table 是否有任何价值,比如在 table 名称与 'Fact'?

b) 如果事实和维度tables应该在EDW中被识别,那么识别机制应该是什么?应该通过 table 名称前缀吗?是否应该通过将 table 组织成单独的 'Fact' 和 'Dimension' 模式?

1) Should each data mart be a separate database on the EDW server? Or, should each data mart be a schema of a single database?

这(也)取决于您使用的是什么数据库软件,以及它是否强加了任何类型的限制,例如,跨多个模式使用数据。

在任何情况下,您都不可避免地需要连接到不同数据集市并从中获取 query/join 数据,以处理某些业务案例甚至 ETL 流程。您可能还需要 segregate/secure 访问特定数据集市、独立加载每个数据集市或使用不同的 schedules/methods 等

由于这些原因,将一个数据库中的数据仓库组织成模式通常就足够了:每个数据集市一个模式加上共享对象的特定模式(如一致性维度)。这样您仍然可以使用分散在多个数据集市中的数据,轻松控制对特定模式/数据集市的访问,并且用户可以更轻松地找到特定的 metrics/facts.

2) For conformed dimensions (i.e., dimensions that apply to 2+ data marts / subject areas / business processes), should they live in a separate schema or database? Or, because we won't know in advance what dimensions will be conformed (since we are building a data mart at a time), should we simply identify the conformed dimensions in our enterprise bus matrix (Excel file) and make no effort to segregate them in the EDW?

如果您将数据集市组织成模式,那么有一个特定的模式来保存这些一致的维度和其他共享数据是有意义的。这样,可能只能访问特定数据集市的不同用户仍然可以使用 conformed/shared 维度。

3)

a) Should fact tables and dimension tables be identified at all in the EDW? For example, since I will be maintaining a diagram of each star schema that will be shared with self-service BI users, is there any value in identifying fact tables in the DB via some method, say prefixing the table name with 'Fact'?

是的,使用前缀可以让用户在浏览数据仓库时更容易找到指标(事实)和维度,例如 F_tableName 或 D_tableName 已经有很长的路要走了。

b) If fact and dimension tables should be identified in the EDW, what should be the identification mechanism? Should it be via table name prefixing? Should it be via organizing the tables into separate 'Fact' and 'Dimension' schemas?

同上:)