星型模式,代理键

Star schema, surrogate keys

我们有带有遥测数据的又大又宽的平面文件。他们每天都来。

我将在 ADLA 数据库中创建 星型模式 ,其中将填充来自这些大文件的数据。 (看起来 ADLA DB 提供了很多功能(与原始 ADLS 相反):索引、统计、压缩、分布管理...)

要生成代理键,我们可以使用:

  1. row_number
  2. 散列

散列呢?我们可以使用哪些功能来实现它? (我正在考虑 C#)

首先我想了解您为什么要使用代理键。

当前的 U-SQL 表旨在支持批量查询,您可以提前知道大部分预期查询。因此,您设计分布键和方案(散列、直接散列、范围)和聚簇索引以优化最昂贵的作业。

例如,如果您需要使用直接散列来管理数据倾斜,则使用代理键是有意义的,但否则它可能会增加利用 partition/distribution 消除的复杂性。

关于实现您自己的散列函数,C# 有一些内置的散列函数,您也可以编写自己的散列函数。例如,C# Object.GetHashCode 方法。