Эффективность структуры каталогов Amazon AWS S3

У меня есть простая проблема с эффективностью, которая проходит в моем сознании.

Я создал PHP-код, который загружает все файлы в мои папки в мое ведро на Amazon S3. Мой код имеет возможность загружать файлы в подфайлы, не теряя его структуры.

В принципе, пользователь должен зайти на мой сайт, а затем в соответствии с именем учетной записи пользователя они могут загружать фотографии в мое ведро на Amazon s3. Пользователь может загружать до 10 фотографий - они затем изменяются до типов субфайлов, например. измененных и уменьшенных изображений.

Как мне загрузить структуру моего каталога, чтобы быть эффективной на Amazon S3?

ВАРИАНТ 1 (файлы в том же ведре, но разные папки - более организованные)

username/originalfiles/picture01.jpg
username/original/picture02.jpg
username/original/picture03.jpg
....
username/original/picture10.jpg


username/modifiedpicture01.jpg
username/modified/picture02.jpg
username/modified/picture03.jpg
....
username/modified/picture10.jpg


username/thumbailspicture01.jpg
username/thumbails/picture02.jpg
username/thumbails/picture03.jpg
....
username/thumbails/picture10.jpg

или

ВАРИАНТ 2 (все файлы в одном ковше)

username-original-picture01.jpg
username-original-picture02.jpg
username-original-picture03.jpg
....
username-original-picture10.jpg


username-modifiedpicture01.jpg
username-modified-picture02.jpg
username-modified-picture03.jpg
....
username-modified-picture10.jpg


username-thumbailspicture01.jpg
username-thumbails-picture02.jpg
username-thumbails-picture03.jpg
....
username-thumbails-picture10.jpg

Или это не отличается от Amazon S3?

Ответ 1

Это не имеет никакого значения для организационных целей, папки S3 на самом деле просто иллюзия на благо таких людей, как мы, так что это кажется знакомым - на самом деле нет физически отдельных папок, например, на вашей собственной машине.

Соглашение об именовании, которое вы используете, будет иметь огромное влияние на производительность, как только вы доберетесь до определенной точки (для небольшого количества файлов это, вероятно, не будет заметным).

В общем, вы хотите, чтобы начальная часть имен файлов/папок была "random-ish", чем более случайным, тем лучше... так что s3 может лучше разогнать рабочую нагрузку. Если префиксы названия одинаковы, будет потенциальное узкое место. Короткий случайный хеш в начале каждого имени файла, вероятно, даст вам лучшую производительность.

Прямо от устья лошади (AWS):

В шаблоне последовательности имен ключей возникает проблема с производительностью. Чтобы понять проблему, давайте посмотрим, как Amazon S3 хранит имена клавиш.

Amazon S3 поддерживает индекс имен ключевых объектов в каждой области AWS. Ключи объектов хранятся лексикографически по нескольким разделам в индекс. То есть Amazon S3 хранит ключевые имена в алфавитном порядке. Имя ключа определяет, в каком разделе хранится ключ. последовательный префикс, такой как временная метка или алфавитная последовательность, повышает вероятность того, что Amazon S3 будет нацелена на конкретную раздел для большого количества ваших ключей, подавляющий ввод-вывод емкость раздела. Если вы вводите некоторую случайность в своем префикс имени ключа, имена ключей и, следовательно, загрузка ввода-вывода, будут распределены между несколькими разделами.

Если вы ожидаете, что ваша рабочая нагрузка будет превышать 100 запросов в секунду, вам следует избегать последовательных имен ключей. если ты должны использовать последовательные номера или диаграммы даты и времени в именах ключей, добавьте случайный префикс к имени ключа. Случайность префикса больше равномерно распределяет имена ключей для нескольких разделов индекса. Примеры внедрения случайности приведены ниже в этом разделе.

http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

Ответ 2

В Amazon S3 он не отличается. Есть только объектные ключи.