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