17 июля 2018 года было опубликовано официальное объявление AWS, объясняющее, что больше нет необходимости рандомизировать первые символы каждого ключа объекта S3 для достижения максимальной производительности: https://aws.amazon.com/about-aws/whats-new / 2018/07 / амазонка-s3-объявляет-запрос увеличенной скорости производительность /
Amazon S3 объявляет об увеличении производительности запросов
Опубликовано: 17 июля 2018
Amazon S3 теперь обеспечивает повышенную производительность для поддержки не менее 3500 запросов в секунду для добавления данных и 5500 запросов в секунду для извлечения данных, что может сэкономить значительное время обработки без дополнительной оплаты. Каждый префикс S3 может поддерживать эти скорости запросов, что позволяет значительно повысить производительность.
Приложения, работающие на Amazon S3 сегодня, получат это повышение производительности без изменений, и пользователям, создающим новые приложения на S3, не нужно настраивать приложения для достижения этой производительности. Поддержка Amazon S3 для параллельных запросов означает, что вы можете масштабировать производительность S3 в соответствии с вашим вычислительным кластером, не внося никаких изменений в свое приложение. Производительность зависит от префикса, поэтому вы можете использовать столько префиксов, сколько вам нужно параллельно для достижения требуемой пропускной способности. Нет ограничений на количество префиксов.
Это повышение производительности по частоте запросов S3 устраняет любые предыдущие указания по рандомизации префиксов объектов для достижения более высокой производительности. Это означает, что теперь вы можете использовать логические или последовательные шаблоны именования в именовании объектов S3 без каких-либо последствий для производительности. Это улучшение теперь доступно во всех регионах AWS. Для получения дополнительной информации посетите Руководство разработчика Amazon S3.
Это здорово, но это также сбивает с толку. В нем говорится, что каждый префикс S3 может поддерживать эти частоты запросов, что позволяет значительно повысить производительность
Но поскольку префиксы и разделители являются просто аргументами GET Bucket (List Objects)API при перечислении содержимого сегментов, как может иметь смысл говорить о производительности поиска объекта «по префиксу». Каждый вызов GET Bucket (List Objects)может выбрать любой префикс и разделитель, который он хочет, поэтому префиксы не являются предопределенным объектом.
Например, если в моем ведре есть эти объекты:
a1/b-2
a1/c-3
Затем я могу выбрать «/» или «-» в качестве разделителя всякий раз, когда я перечисляю содержимое сегмента, поэтому я могу считать свои префиксы либо
a1/
или
a1/b-
a1/c-
Но поскольку GET ObjectAPI использует весь ключ, концепция конкретного префикса или разделителя не существует для извлечения объекта. Так можно ли ожидать 5500 запросов в секунду a1/или, наоборот, 5500 запросов в секунду a1/b-и 5500 вкл a1/c-?
Так может ли кто-нибудь объяснить, что подразумевается под объявлением, когда оно предлагает определенный уровень производительности (например, +5,500 запросов в секунду для извлечения данных) для «каждого префикса s3»?