シーケンス番号が一般的に使用される理由はいくつかあると思いますが、すべての状況で明らかに優れた方法だとは思いません。
シーケンス番号
長所
- シーケンス番号は簡単です。それらはとてつもなく簡単なので、ほとんどの場合、他のことを考えるのは時間の無駄です。これが私たちがそれを使用する理由ではないことを誰にも言わせないでください.
- シーケンス番号は一意であることが保証されています。
- シーケンス番号は可能な限り小さい (狭い) ものです。
- シーケンス番号は情報をエンコードしないため、内容が変更されても、ディメンションの粒度が変更されても、事実がわかっている限り問題ありません。次元の粒度は簡単に変化する可能性があるため、これは重要です。そのため、意味のあるデータで代理キーを使用するべきではありません(少なくともキンボール DW では、代理キーのポイントのようなものです)。
短所
- シーケンス番号は本質的にスペースの無駄です。これに情報をエンコードできれば、より大きな列にすることによってもスペースを節約できます。ただし、上記の長所を参照してください...
- ページのロックが原因で書き込みパフォーマンスが低下することがあるシーケンス番号に関する投稿を見たのを覚えていますが、今は見つかりません。これにより、読み込みが遅くなる場合があります。
バージョンナンバー
私は前にこれの例を見たことがありません、そしてそれについてグーグルで調べると、この質問とそれを既存のフィールドに追加することへのいくつかの参照が見つかるようです.ハッシュ、またはその他の識別子。
長所
- データのバージョン番号にアクセスできます
- これは、DW ディメンション キーとして使用できるように、自然キーを一意化する方法である可能性があります。
短所
- 最大の短所は、キーから削除しないとこのデータにアクセスできないことです。別の列としてそれを持たないのはなぜですか?
- 通常、自然キーは DW では悪い習慣です。そのため、それが動機である場合は、アプローチを再考することをお勧めします。
ハッシュ
シーケンス番号を使用しない場合は、おそらくこれが私の好みのオプションです。私は思うが、いくつかのかなり特定の状況が必要です
長所
結論
したがって、状況によって異なりますが、シーケンス番号は実装が非常に簡単で、ほとんどすべての状況で短所はほとんど無視できるため、快適なデフォルトとして使用できます。したがって、別のオプションを選択することは、通常、「なぜそれを行ったかを説明する必要がある」カテゴリに分類されます。