S3のディレクトリあたりの最大ファイル数


87

100万枚の画像がある場合、それらをいくつかのフォルダー/サブフォルダー階層に格納するのが良いでしょうか、それともそれらをすべて(フォルダーなしで)バケットに直接ダンプするのが良いでしょうか?

すべての画像を階層のないバケットにダンプすると、LIST操作が遅くなりますか?

オンザフライでフォルダーとサブフォルダーを作成し、それらのACLを設定する(プログラム的に言えば)には、かなりのオーバーヘッドがありますか?

回答:


123

S3は階層的な名前空間を考慮しません。各バケットには、キーからオブジェクトへの多数のマッピング(および関連するメタデータ、ACLなど)が含まれているだけです。

オブジェクトのキーに「/」が含まれている場合でも、S3はパスをプレーンな文字列として扱い、すべてのオブジェクトをフラットな名前空間に配置します。

私の経験では、オブジェクトの数が増えるにつれてLIST操作は(直線的に)より長くかかりますが、これはおそらく、Amazonサーバーで必要なI / Oの増加とクライアントへの通信のダウンの症状です。

ただし、ルックアップ時間はオブジェクト数とともに増加するようには見えません-それはおそらくその端にある種のO(1)ハッシュテーブル実装です-したがって、同じバケットに多くのオブジェクトがあることは、通常の使用(つまり、リストではありません)。

ACLについては、バケットと個々のオブジェクトごとに権限を設定できます。階層がないため、これらのオプションは2つしかありません。明らかに、何百万ものファイルがある場合、バケット全体の許可をできるだけ多く設定すると、管理上の問題が大幅に軽減されますが、許可のみを付与でき、取り消すことはできないため、バケット全体の許可は、すべてのACLの最大のサブセットである必要がありますその内容。

次の場合は、別々のバケットに分割することをお勧めします。

  • 完全に異なるコンテンツ-画像、音声、およびその他のデータ用に個別のバケットがあることで、より健全なアーキテクチャが実現します
  • 著しく異なるACL-各オブジェクトが特定のACLを受け取る1つのバケット、または異なるACLを持ち、オブジェクト固有のACLを持たない2つのバケットがある場合は、2つのバケットを使用します。

S3にはバケットがあり、その中に「フォルダー」と「オブジェクト」を置くことができます。フォルダーはおそらくシステムの目にあるオブジェクトです
mwm

14
@mwmあなたは間違っています。「フォルダ」は、使用しているツールによって提供されるUIの厳密な機能です。ジェームズ氏は、キーにスラッシュが含まれている可能性があることは正しいが、s3はまったく気にしない。
Ry4an Brase 14年

:S3は間違いなくパス接頭辞、公式ドキュメントを見に基づいて制限要求を評価してんdocs.aws.amazon.com/AmazonS3/latest/dev/...
アナトリー

S3プレフィックスはもはや必要ではないか推奨:aws.amazon.com/about-aws/whats-new/2018/07/...
AEA


-3

私は、ルート、次に少なくとも1つのサブディレクトリを持つディレクトリ構造を使用します。ルート下のディレクトリとして「ドキュメントインポート日」をよく利用しています。これにより、バックアップの管理が少し簡単になります。使用しているファイルシステムが何であれ、最終的にはファイル数の制限(物理的な制限ではないにしても実用的)に達することになります。複数のルートをサポートすることも考えられます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.