プレーン整数の代わりにハッシュを代理キーとして使用するアプリケーションがたくさんあります。このようなデザインの理由はわかりません。
ほとんどのUUID実装はハッシュされたタイムスタンプであるとすると、なぜ多くのデータベース設計者がアプリケーション全体の代理キーにそれらを選択するのでしょうか。
プレーン整数の代わりにハッシュを代理キーとして使用するアプリケーションがたくさんあります。このようなデザインの理由はわかりません。
ほとんどのUUID実装はハッシュされたタイムスタンプであるとすると、なぜ多くのデータベース設計者がアプリケーション全体の代理キーにそれらを選択するのでしょうか。
ハッシュを使用すると、結合などで、潜在的に大きなデータ値をより効率的に比較できます。つまり、HASH(LargeObjectA)=HASH(LargeObjectB) の比較です。たとえば、ハッシュ値が文書管理システムのテーブル内の文書である場合、文書よりもハッシュを比較する方が効率的です。
ほとんどの DBMS では、キーのストレージ サイズに制限があるため、ハッシュは、より大きなキーを実装するための 1 つの代替回避策になる場合があります。
ハッシュは、データ セット全体に均等に分散された論理パーティションにデータを分割することで、ストレージを最適化するためにも使用できます。
アプリケーションのデータ バックエンドが複数の分散データベースから作成されている場合、増分された整数 ID を使用すると、値が重複する可能性があります。UUID は、アプリケーション内だけでなく、アプリケーション外でも一意であることが保証されています (これは、外部データと結合するときに役立つ場合があります)。
システム内の異なるデータベースに異なる ID シードを使用すると、整数の一意性の問題が解決されることは事実ですが、そのようなアプローチを管理することはより困難になります。
サーバー間の一意性? そのような状況では、単純な整数を使用してもうまくいきません。