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