1

ユーザーベースの Web サイトを作成しようとしており、各ユーザーの写真、ドキュメント、およびその他のデータを保存する必要があります。

1 000 000 000 ユーザーのようなばかげた数字を取るとしたら、1 000 000 000 のフォルダーが世界最速のものになるとは思えません。だから私は次のようなものを作成することを考えていました

1 レベル : [az] 2 レベル : [az] 3 レベル : [az]

したがって、ボビーは /b/o/b/by になります

ただし、これは、az で始まるユーザーが非常に少なく、am、s、l ... で始まるユーザーが非常に少ないため、均等に拡散されないことも意味します。

なので、「000000000001」「000000000001」などのユーザーIDを使おうと思っていたのですが…

第 1 レベル : [000-999] 第 2 レベル : [000-999] 第 3 レベル : [000-999]

したがって、ユーザー 000000000001 のデータは /data/000/000/000/001 に保存され、各レベルに最大 1000 個のフォルダーが確実に作成されます。

あなたはそれについてどう思いますか、私がすべきこと、すべきでないことは何ですか?

サーバーは RAID 1 で EXT3 を使用して Centos 5.4 を実行します。I/O があまりにも悪い場合は、おそらく RAID 10 を使用します。

4

1 に答える 1

0

ハッシュ関数は、簡単に検索できる構造に大量のデータを分散する方法を提供します。

この関連する質問を参照してください:ファイルの大規模なコレクションのパス名を作成するためにハッシュを使用するのはなぜですか?

また、Directory Hashingの Google の結果を調べてみてください。

于 2010-04-16T19:10:25.233 に答える