代理キー

代理キー はディメンション表をファクト表と結合します。代理キーは、ディメンション表内の各インスタンスまたは各エンティティーを識別する重要な手段として利用できます。

代理キーを使用する理由

多様な OLTP ソース・システムのデータ表で、同じエンティティーに複数のキーを使用する場合がある
また、1 つのキーが同じエンティティーの異なるインスタンスで使用される場合もあります。つまり、異なる OLTP システムで同じキーを使用して異なる顧客を表している可能性があります。

これは、多様なソース・システムの情報を統合するときに大きな問題になる可能性があります。 また、企業が、合併および買収後にデータウェアハウスを作成/変更する場合にも問題につながる可能性があります。履歴データを提供する既存のシステムは、最新の OLTP システムとは異なる番号付けのシステムを使用していた可能性があります。さらに、独自に開発されたシステムでは、同じキーを使用していない場合や、他の部門のシステムにあるデータと競合するキーを使用している場合があります。このような状況では、各部門が独自にサマリー・データをレポートしている場合は問題は発生しない可能性がありますが、データに関する企業全体のビューを実現しようとすると、問題が発生する場合があります。

つまり、ソース・システムの自然主キーをディメンション主キーとして使用する方法は利用できません。自然主キーがインスタンスごとにユニークになる保証はないためです。 代理キーは、自然ソース・キーに関係なく、ディメンション表の各エンティティーを一意的に識別します。これは主に、代理キーが新しいエンティティーごとに単純な整数値を生成するためです。

代理キーには、ディメンションが変化したときにデータウェアハウス情報を維持する機能がある
代理キーは、ディメンション表の属性の変化を処理するのに必要です。
自然 OLTP システム・キーは、変更されたり、ソース・データ・システムで再使用される場合がある
一部のシステムには、廃止されたデータに属する再使用キーや消去されたデータの再使用キーがあります。ただし、データウェアハウスの履歴データではそのキーがまだ使用されている可能性があり、同じキーは異なるエンティティーを識別するために使用できません。

代理キーの設計、実装、および管理は、データウェアハウス・チームの役割です。代理キーはデータ変換処理時にデータ準備領域で維持されます。

照会のパフォーマンスを改善する
狭い範囲の整数の代理キーを使用することは、ファクト表が軽量であることを意味します。ファクト表が軽量になるほど、パフォーマンスは向上します。
例外的なケースを処理する
要件を決定する必要がある場合、または要件が適用されない場合、代理キーを使用します。
メジャーの変更や再調整は、表の別の列で行う
データをレビューまたはまとめる必要がある場合、表内の出現回数に関係なく、代理キーの一部としてその列を使用する必要があります。

代理キーとしてグローバル固有 ID の回避

グローバル固有 ID は、ソース OLTP システムでは機能しますが、データウェアハウスの場合に使用するのは困難であることがわかっています。これには主に次の 2 つの理由があります。
  • グローバル固有 ID は、同等の整数と比較すると使用する領域が膨大です。グローバル固有 ID はそれぞれ 16 バイトを使用しますが、整数は 4 バイトを使用します。
  • グローバル固有 ID は整数の 4 倍なので、グローバル固有 ID の列の索引は、整数キーの索引と比較すると低速です。

フィードバック