分散アプリケーションによって受信されたファイルを格納するための均等に分散された2レベルのディレクトリ構造を構築する最良の方法を調べています(ファイルはファイル名なし)。これを達成するために、私の当初の計画では、ディレクトリ1のハッシュ文字列の最初の2つの文字とディレクトリの2例については、次の2を取ることだった。UUID分割を使用してディレクトリ内のファイルを均等に分散する
67ca bf2cf7418461ad53d9fd7e067049のハッシュによってファイルを格納するために使用することができますディレクトリ構造内に同じ名前を次のように/67/CA/ 67cabf2cf7418461ad53d9fd7e067049
私は、私は各着信「ブロブ」のためのユニークなファイル名(UUID)を作成するために持っているとして、おそらく私は最初を使用することができることを実現UUIDの4文字は、UUIDをハッシュする必要がありません。 /EA/5D/ ea5dc4cf-1b91を:例えば、次のようea5d c4cf-1b91-4a8f-8d56-69b7223d8954の
A UUIDは、ディレクトリ構造内の同じ名前のファイルを格納するために使用することができます-4a8f-8d56-69b7223d8954
私はUUIDの一意性をよく理解していますが、最初の4文字のランダム性が最初の4文字と同じように広がっているかどうかについて決定的な説明はありません最初のオクテットがタイムスタンプ(ソースhttps://tools.ietf.org/html/rfc4122)に根ざしていることを考えると、特にハッシュです。
私はthis以前の質問を見つけましたが、決定的に答えられていませんでした。
これを理解するのを手伝ってくれる人がいますか、または拡散がハッシュと同じであるかどうかを説明できる人は誰ですか?
uuidにはいくつかのバージョンがあります。 UUID Version 5はSHA1ハッシュを使用しているので、あなたの必要性に適しているはずです。 –
これにはうまくいかないUUID生成スキームもあります。例えば。 CentOS 7.xでは 'uuidgen -t'は最初のセグメントで順番に増加するように見える時間ベースの文字列を生成します。これは最初の2つのバイトを使用するとうまくいきません... – twalberg
UUIDバージョン4は、名前空間ベースではなくランダムであるためです。 – bunoi