S3 не уважает иерархические пространства имен. Каждая корзина просто содержит ряд сопоставлений от ключа к объекту (вместе со связанными метаданными, списками контроля доступа и т. Д.).
Несмотря на то, что ключ вашего объекта может содержать '/', S3 рассматривает путь как простую строку и помещает все объекты в плоское пространство имен.
По моему опыту, операции LIST занимают (линейно) больше времени по мере увеличения количества объектов, но это, вероятно, симптом увеличения количества операций ввода-вывода, требуемых на серверах Amazon, и по проводам до вашего клиента.
Однако время поиска, похоже, не увеличивается с увеличением количества объектов - скорее всего, это своего рода реализация хеш-таблицы O (1) на их конце - поэтому наличие большого количества объектов в одном сегменте должно быть столь же производительным, как и небольшие сегменты для обычного использования (т. Е. не СПИСКИ).
Что касается ACL, гранты могут быть установлены для корзины и для каждого отдельного объекта. Поскольку иерархии нет, это ваши единственные два варианта. Очевидно, что установка такого количества грантов на уровне корзины значительно уменьшит ваши головные боли администратора, если у вас есть миллионы файлов, но помните, что вы можете только предоставлять разрешения, а не отзывать их, поэтому гранты на уровне корзины должны быть максимальным подмножеством ACL для всех его содержимое.
Я бы рекомендовал разделить на отдельные сегменты для:
- совершенно другой контент - наличие отдельных сегментов для изображений, звука и других данных делает архитектуру более разумной
- существенно разные ACL - если у вас может быть одна корзина с каждым объектом, получающим определенный ACL, или две корзины с разными ACL и без объектно-зависимых ACL, возьмите две корзины.