Максимальное количество файлов на каталог в S3
Если бы у меня был миллион изображений, было бы лучше хранить их в какой-то иерархии папок/подпапок или просто выбросить их все прямо в корзину (без каких-либо папок)?
Будет ли сброс всех изображений в корзину без иерархии замедлять операции со списком?
Есть ли значительные накладные расходы при создании папок и вложенных папок на лету и настройке их ACL (программно говоря)?
3 ответа:
S3 не уважает иерархические пространства имен. Каждая корзина просто содержит ряд отображений от ключа к объекту (вместе с соответствующими метаданными, ACL и т. д.).
Хотя ключ вашего объекта может содержать'/', S3 обрабатывает путь как простую строку и помещает все объекты в плоское пространство имен.
По моему опыту, операции со списком занимают (линейно) больше времени по мере увеличения количества объектов, но это, вероятно, симптом увеличения ввода-вывода, необходимого на серверах Amazon, и вниз по проводу к вашему клиенту.
Однако время поиска, похоже, не увеличивается с подсчетом объектов - скорее всего, это какая - то реализация O(1) hashtable на их конце, поэтому наличие большого количества объектов в одном и том же ведре должно быть столь же эффективным, как и небольшие ведра для обычного использования (т. е. не списки).
Что касается ACL, гранты могут быть установлены на ведро и на каждый отдельный объект. Поскольку иерархии нет, это ваши единственные два варианта. Очевидно, установив как можно больше ведер шириной гранты значительно уменьшат ваши головные боли администратора, если у вас есть миллионы файлов, но помните, что вы можете только предоставлять разрешения, а не отменять их, поэтому гранты в пределах корзины должны быть максимальным подмножеством ACL для всего его содержимого.
Я бы рекомендовал разбить на отдельные ведра для:
- совершенно другой контент-наличие отдельных ведер для изображений, звука и других данных делает архитектуру более разумной
- существенно разные ACL - если вы можете имейте одно ведро с каждым объектом, получающим определенный ACL, или два ведра с различными ACL и без специфичных для объекта ACL, возьмите два ведра.
Ответ на исходный вопрос "Max files per directory in S3": неограниченно. Смотрите такжеограничение S3 для объектов в ведре .
Я использую структуру каталогов с корнем, а затем по крайней мере один подкаталог. Я часто использую" дату импорта документа " в качестве каталога под корнем. Это может сделать управление резервными копиями немного проще. Какую бы файловую систему вы ни использовали, рано или поздно вы достигнете предела количества файлов (практического, если не физического предела). Вы также можете подумать о поддержке нескольких корней.