2

私は、ユーザーの画像やドキュメントを保存する必要がある数百万のユーザーに到達する可能性のあるWebプラットフォームを開発しています。Rackspaceを使用していますが、ファイルロジックをクラウドファイルサービスに定義する必要があります。Rackspaceでは、アカウントで最大500,000個のコンテナーを作成でき(参照ページ17、段落4.2.2)、さらに、各コンテナーのサイズを最大500,000個のオブジェクトに制限することを提案しています(ベストプラクティス-コンテナー内のオブジェクトの数を制限するを参照)。ユーザーのファイル管理のベストプラクティスはどれですか?

500,000コンテナの制限があるため、ユーザー用の1つのコンテナは適切なソリューションではないようです。Rackspaceは仮想コンテナの使用を提案しています。使い方は少し決まっていません。

前もって感謝します。

4

1 に答える 1

1

200,000個のオブジェクトを持つAPI呼び出しを介してのみファイルと対話する場合は、問題ありません(私の経験から、これより大きなものは必要ありませんでした)。

あらゆるタスクにWebインターフェースを使用したい場合は、それよりはるかに少ない必要があります。Webインターフェースはコンテンツをフォルダーごとに分割しないため、30,000個のオブジェクトがある場合、Webインターフェースはそれらをページ分割し、アルファベット順に表示します。これは、最大数百のオブジェクトを含むコンテナーでは問題ありませんが、それを超えるとWebインターフェースは使用できなくなります。

数百万のユーザーがいる場合は、ユーザーIDの一部をシャードキーとして使用して、使用するバケットを決定できます。シャードキーの選択については、http://docs.mongodb.org/manual/core/sharding-internals/#sharding-internals-shard-keysを参照してください。Mongoユーザー向けに書かれていますが、ここで適用できます。要点は、ユーザーをある程度均等に分散する属性を選択することです。これにより、バケットごとに必要なファイルの最大数を超えるバケットが1つになりません。

1つの方法は、ユーザーIDを使用することです。これは、最初の桁に基づいてランダムに割り当ててシャーディングできます。この例では、UIDの1234、2234、1123、および2134を使用します。ファイルをUIDの最初の桁で分割したい場合、ユーザーに1234および1123のファイルをコンテナー「files_group_1」に保存します。 「files_group_2」コンテナ内の2234および2134のファイル。

シャードキーを選択する前に、ユーザーが保存する可能性のあるファイルの数を確認してください。たとえば、ユーザーが数百(または数千)のファイルを保存する場合は、UIDの最初の桁よりも一意のキーでシャーディングする必要があります。

お役に立てば幸いです。

于 2013-02-06T00:28:55.460 に答える