Максимальное количество файлов в каталоге в S3 - PullRequest
84 голосов
/ 26 декабря 2008

Если бы у меня было миллион изображений, было бы лучше сохранить их в какой-либо иерархии папок / подпапок или просто выбросить их все в корзину (без каких-либо папок)?

Замедлит ли выгрузка всех изображений в иерархическую корзину, что приведет к замедлению операций LIST?

Существуют ли значительные издержки при создании папок и подпапок на лету и настройке их списков ACL (программно говоря)?

Ответы [ 3 ]

117 голосов
/ 27 декабря 2008

S3 не учитывает иерархические пространства имен. Каждый блок просто содержит несколько отображений от ключа к объекту (вместе с соответствующими метаданными, ACL и т. Д.).

Несмотря на то, что ключ вашего объекта может содержать символ '/', S3 обрабатывает путь как простую строку и помещает все объекты в плоское пространство имен.

По моему опыту, операции LIST занимают (линейно) больше времени при увеличении числа объектов, но это, вероятно, является признаком увеличения объема операций ввода-вывода, требуемого на серверах Amazon, и передачи по сети вашему клиенту.

Однако время поиска, по-видимому, не увеличивается при подсчете объектов - скорее всего, это своего рода реализация хеш-таблицы O (1) на их конце - поэтому наличие множества объектов в одном сегменте должно быть таким же быстродействующим, как небольшие сегменты для обычного использование (т.е. не списки).

Что касается ACL, гранты могут быть установлены для группы и для каждого отдельного объекта. Так как нет никакой иерархии, это только ваши два варианта. Очевидно, что установка большого количества грантов по всему сегменту значительно уменьшит головную боль администратора, если у вас есть миллионы файлов, но помните, что вы можете только предоставлять разрешений, но не отзывать их, поэтому гранты по всему сегменту должны быть максимальными подмножество ACL для всего его содержимого.

Я бы рекомендовал разбить на отдельные сегменты для:

  • совершенно другой контент - наличие отдельных блоков для изображений, звука и других данных делает архитектуру более разумной
  • существенно разные ACL - если вы можете иметь один сегмент с каждым объектом, получающим конкретный ACL, или два блока с разными ACL и без объектно-зависимых ACL, возьмите два блока.
53 голосов
/ 28 марта 2011

Ответ на оригинальный вопрос «Максимальное количество файлов в каталоге в S3»: UNLIMITED. См. Также ограничение S3 для объектов в корзине .

0 голосов
/ 26 декабря 2008

Я использую структуру каталогов с корнем, тогда как минимум один подкаталог. Я часто использую «дату импорта документа» в качестве каталога под корнем. Это может немного облегчить управление резервными копиями. Какую бы файловую систему вы не использовали, вы обязательно должны в конечном итоге достичь ограничения на количество файлов (практическое, если не физическое). Вы можете подумать о поддержке нескольких корней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...