まず第一に、再ハッシュは賢明なトピックであるという事実を認識していることを保証したいと思います。ただし、ここでどのようなアプローチをとるか、いくつかの意見をお聞きしたいと思います。
ノードがUUIDで識別されるエンティティをリモートで作成する分散アプリケーションを構築しています。最終的に、すべてのエンティティは、これらの UUID を使用してすべてのエンティティを格納する専用のドレイン ノードに収集される必要があります。
ここで、人間のユーザーにとってより便利な追加の識別子を作成したいと思います。UUID を Base64 でエンコードしても 22 文字の ID が作成されるため、人間の使用には適していません。だから、URL短縮サービスのようなものが必要です。全単射関数を適用しても、情報の価値が低下しないため、役に立ちません。もちろん、ID を短くするために情報を失う必要があることは承知しています。また、ハッシュの情報を減らすと、衝突の可能性が高くなることも認識しています。人間の短いIDを作成するために情報を減らす最も適切な方法は何ですか?
ここにいくつかの前提条件があります: データ ストレージを介して {UUID, 短縮 ID} をマップする機能を提供します。私はまだ非集中型のソリューションを好むでしょう。合計で約 100 万 (~2^20) を超える ID が必要になることはおそらくないでしょう。
これまでに私が思いついた考えは次のとおりです。
自動インクリメント ID: 自動インクリメント IDを使用する場合、この ID を難読化された文字列に転送して渡すことができます。これが最も簡単な方法です。キーがほとんどない限り、キーはそれほど長くはありません。ただし、私が本当に望んでいない中央集権型のエンティティを導入する必要があります。- UUID を短くする:元の 128 ビット uuid のビットの一部を使用できます。次に、少なくとも UUID のバージョンを考慮する必要があります。または、これには他に何か問題がありますか?
- UUID の再ハッシュ:最初の UUID に 2 番目のハッシュ アルゴリズムを適用し、マッピングを保存できます。
他のアプローチはありますか?有利とは?
前もって感謝します!