1. ホーム
  2. パイソン

[解決済み】pythonでuuid.uuid1()とuuid.uuid4()はいつ使うべきですか?

2022-04-03 15:19:53

質問

からの違いは理解しています。 のドキュメントを参照してください。

uuid1() :

ホストID、シーケンス番号、現在時刻からUUIDを生成する

uuid4() :

ランダムなUUIDを生成します。

そこで uuid1 は、マシン/シーケンス/時間情報を使用してUUIDを生成します。 それぞれを使用する場合の長所と短所を教えてください。

知っている uuid1() は、機械情報に基づいているため、プライバシーに関する懸念があります。 どちらを選ぶか、微妙なところでしょうか。 私はただ uuid4() 完全にランダムなUUIDだからです。 しかし、私は uuid1 を使えば、衝突のリスクを減らすことができます。

基本的に、私は一方と他方を使用する際のベストプラクティスについて、人々のヒントを探しているのです。 ありがとうございます。

どのように解決するのですか?

uuid1() は、衝突を起こさないことが保証されています(同時にあまり多くの衝突を起こさないという仮定のもとで)。の間に接続がないことが重要な場合は、私はこれを使いません。 uuid とコンピュータの間でユニークになるように、macアドレスが使用されるからです。

を2つ以上作成すると、重複が発生します。 14 uuid1 が 100ns 未満になりますが、ほとんどのユースケースで問題になりません。

uuid4() は、おっしゃるとおり、ランダムなUUIDを生成します。衝突する確率は、本当に、本当に。 本当に 小さい。心配する必要がないほど小さいのです。問題は、悪い乱数生成器を使うと、衝突が起こりやすくなることです。

ボブ・アマン氏による素晴らしい回答 がうまくまとまっていますね。(回答全体を読むことをお勧めします)。

<ブロッククオート

正直なところ、単一のアプリケーション空間では 悪意ある行為者がいなければ 地球上のすべての生命が絶滅する が発生するよりもずっと前に は、バージョン4のUUIDであっても衝突します。 たとえ、かなりの数の UUIDは1秒に1個です。