3

ユーザーからの多くのファイルを保存するためのスケーラブルな方法を探しています。私の戦略は、それらをランダムな名前で保存し、名前とファイルの関係をデータベースに保存することです。

私の質問は、ファイルをディスクに保存するための推奨される方法は何ですか?私が直面した制限の1つは、それらをすべて1つのディレクトリに保存すると、OSのパフォーマンスが低下することです。

明らかに、指定された間隔でディレクトリを作成し、負荷を分割することはできますが、それは単なるハックであり、ストレージを処理するための真の手順を試す必要があると確信しています。私はそれらを見つけることができないようです:)

S3のような外部ストレージではなく、プライベートにファイルをホストしたいと思っています。

4

1 に答える 1

3

すでに各ファイルにランダムな名前を付けているので、サブディレクトリに切り刻みます。

ランダムな名前があるとしましょう:

$randomName = 'Akj823daosd03hdx';

保存先:

/Ak/j8/23/daosd03hdx

これにより、各ディレクトリのノード数が制限されます。ランダムに分散している場合は、均等に分散する必要があります。

持っているファイルの数に応じて、それらを異なる方法で配布することもできますが、ランダムな名前を使用すると、通常はそのような方法で簡単になります。必要に応じて、サブディレクトリと最終的なファイル名の長さと数を変えることができます。

于 2012-11-25T14:12:39.717 に答える