要件:
マーチャントを一意に識別できるように、十分な長さのランダムな番号/文字列をマーチャントに割り当てる必要があります (誰かに識別子を推測させたくない)。これが必要なのは、この番号/文字列を QR コードとして印刷し、マーチャントに提供して、ユーザーが QR コードを読み取ってマーチャントに関する情報を取得できるようにするためです。
現在の実装:
ID はシーケンシャルであるため出力できません。そのため、JUG UUID ジェネレーターの TimeBasedGenerator によって生成された一意の ID を格納する新しいフィールド (externalId) を導入しました。さらに調査したところ、UUID にパフォーマンスの問題があることがわかりました。すべての記事で UUId を主キーとして説明していますが、私は UUID を主キーとしてではなく、二次識別子として使用しています。検索に比べて挿入や更新が少なくなるので、私は心配していません。ユーザーは、印刷された QR コードから読み取った UUID を送信し、この UUID フィールドを使用してマーチャントを検索する必要があるため、パフォーマンスに大きな影響があります。
私による解決策:
UUID の代わりに ID:UUID の組み合わせを提供するため、リクエストを取得したときに、ID を使用してマーチャントを分割およびフェッチし、DB に存在する externalId(UUID) が一致するかどうかを確認できます。それが一致する場合は、商人を返します。
このソリューションはパフォーマンスを大幅に向上させますか、それとも文字列操作にかかる時間が効果を無効にします。
これを行うためのより良いアプローチはありますか?
ありがとう