2017-06-30 18 views
0

分散アプリケーションによって受信されたファイルを格納するための均等に分散された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以前の質問を見つけましたが、決定的に答えられていませんでした。

これを理解するのを手伝ってくれる人がいますか、または拡散がハッシュと同じであるかどうかを説明できる人は誰ですか?

+0

uuidにはいくつかのバージョンがあります。 UUID Version 5はSHA1ハッシュを使用しているので、あなたの必要性に適しているはずです。 –

+0

これにはうまくいかないUUID生成スキームもあります。例えば。 CentOS 7.xでは 'uuidgen -t'は最初のセグメントで順番に増加するように見える時間ベースの文字列を生成します。これは最初の2つのバイトを使用するとうまくいきません... – twalberg

+0

UUIDバージョン4は、名前空間ベースではなくランダムであるためです。 – bunoi

答えて

1

私は10,000,000 UUID(バージョン4)のセットを使ってテストを行ったので、スプレッドが非常に均一であると結論づけました。結果は次のとおりです。私はそれが誰かを助けることを願っています。

+---------------+------------+--+----------------+------------+ 
| First 2 chars | frequency | | Second 2 chars | frequency | 
+---------------+------------+--+----------------+------------+ 
| ea   | 39781  | | 3c    | 39624  | 
+---------------+------------+--+----------------+------------+ 
| 57   | 39589  | | 6e    | 39575  | 
+---------------+------------+--+----------------+------------+ 
| 63   | 39566  | | f6    | 39524  | 
+---------------+------------+--+----------------+------------+ 
| etc.   | etc.  | | etc.   | etc.  | 
+---------------+------------+--+----------------+------------+ 
| middle rows of results removed to keep this concise.  | 
+---------------+------------+--+----------------+------------+ 
+---------------+------------+--+----------------+------------+ 
| b3   | 38455  | | cf    | 38572  | 
+---------------+------------+--+----------------+------------+ 
| f8   | 38454  | | 4a    | 38549  | 
+---------------+------------+--+----------------+------------+ 
| d7   | 38448  | | b1    | 38540  | 
+---------------+------------+--+----------------+------------+ 
| Total   | 10,000,000 | |    | 10,000,000 | 
+---------------+------------+--+----------------+------------+ 
+0

誰かがこの回答を洞察に満ちた、または有用であると感じたら、私の評判を築くのを手伝ってください。 – bunoi

+0

このテストに使用したコードを投稿して、結果を自分で見ることができますか? – user779159

関連する問題