несколько пользователей s3 в одном ведре или в отдельности

1449
BurnDownTheIgloo

умные люди, нуб тут!

Я планирую построить многопользовательское устройство на s3 для хранения фотографий / объектов, и я планировал использовать s3. Я спланировал весь интерфейс, но у меня есть вопрос по поводу системы ковшей.

Должен ли я иметь одну корзину, содержащую каждого пользователя, или, вернее, 4-5 групп с распределенными по ним пользователями, или мне нужно по 1 корзине для каждого пользователя?

Каждый пользователь будет хранить в среднем около 35 ГБ в качестве примера, и я хочу, чтобы в будущем он мог бесперебойно работать с 3 пользователями до 300 000 000 (настолько масштабируемыми, насколько это возможно)

Какой метод выбрать, и что делал Dropbox в течение S3 дней?

1
Как кто-то, кто создал систему, которая звучит похоже на это раньше, у меня есть несколько предложений: во-первых, используйте руководства, а не имена файлов. Вы не хотите, чтобы случайные китайские символы появлялись в ваших именах файлов s3. С ними гораздо легче управлять в долгосрочной перспективе, проще взламывать сценарии и избавить вас от душевных страданий. Во-вторых, поместите ваши направляющие, скажем, в s3: //users-filess3.amazonaws.com/12/345/123-456-789-abc-def. В какой-то момент вам придется погрузиться в консоль s3, чтобы выполнить некоторую отладку. , имея миллионы файлов в папке, делает консоль непригодной для использования. KHobbits 7 лет назад 0
О Конечно. Кроме того, небезопасно и несколько нарушает конфиденциальность, когда имена файлов или сами файлы остаются в виде открытого текста. Спасибо за информацию о ведре, хотя! BurnDownTheIgloo 7 лет назад 1

1 ответ на вопрос

1
Michael - sqlbot

Вам определенно не нужно ведро для каждого пользователя. Не берите в голову тот факт, что кажется очень маловероятным, что поддержка AWS утвердит запрос на увеличение общего лимита корзины вашего аккаунта по умолчанию со 100 до 300 000 000. Кроме того, первоначальное создание сегмента не предназначено для агрессивного или реального времени.

Технология высокой доступности Amazon S3 сфокусирована на операциях get, put, list и delete. Поскольку операции с сегментами работают с централизованным глобальным пространством ресурсов, нецелесообразно создавать или удалять сегменты в пути кода высокой доступности вашего приложения. Лучше создавать или удалять сегменты в отдельной подпрограмме инициализации или настройки, которую вы запускаете реже.

http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html

Создайте свое приложение так, чтобы не имело значения, используете ли вы одно ведро или несколько. Как? Для каждого пользователя сохраните bucket_id, в котором хранятся данные этого пользователя. Затем начните со всех в bucket_id 1, а затем у вас появится возможность помещать новых пользователей в новые сегменты, если в этом возникнет необходимость ... или если вы решите перенести некоторых пользователей в другие сегменты ... или если вы решите расположить пользователей " хранение в ведре ближе к типичному местоположению пользователя.

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

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

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

По той же причине не давайте своим контейнерам лексически последовательных имен в пределах региона.


То, что, возможно, делал Dropbox, вероятно, не имеет значения.

Похожие вопросы