1

我们知道 Snowflake 是一个压缩的列式存储数据库,并且经过调整可以使用 MPP 和自动缩放运行查询。我们还知道,为了创建数据集市和 DW,Kimball 和维度建模(星型模式)已经在市场和实践中使用了几十年。这是成功的,因为我们曾经为我们的 DW 拥有大量的 Row 存储 DB。

所以这里的问题是在 Snowflake 中创建数据集市和 DW,我们必须遵循 Kimball 吗?它是否为性能增加了任何价值,事实上我读到它增加了已经调整为处理列压缩数据的引擎的开销?我们是否仍然需要对列使用代理键并强制创建 Facts 和 Dimensions 以及星型模式,我们可以在其中简单地加入平面非规范化表以获得相似或更好的性能?

从建模的最佳实践的角度来看,像 Snowflake 这样的超级数据库推荐什么?Kimball 是必须拥有还是多余,因为它违背了柱状存储优势的目的?

我认为 SAP HANA / Redshift / Big Query 甚至 Azure SQL Datawarehouse,没有人推荐这个,我在任何地方都找不到推荐使用 Kimball 或星型模式的单行。很少有人提到“它也适用于星型模式”,这并不意味着必须使用星型模式?

4

1 回答 1

0

要记住的一件事:Snowflake 是一个面向行的列式存储。这是一个重要的区别。这意味着 Snowflake 充分利用了与列存储相关的所有显着压缩增益,但仍保持面向行的方法来存储数据。

为什么这很重要?

使用微分区方法,这意味着我们仍然可以使用查询谓词消除大量行,然后仅查询那些满足查询条件的行分组中的列存储。所以你真的得到了两全其美。

在我看来,Snowflake 几乎可以支持任何数据模型(或部分/混合实现)。

此外 - 面向行的列存储中的“冗余”值往往会导致非常非常好的压缩。

于 2021-02-25T02:53:05.717 回答