un1t
@un1t

Как лучше хранить миллионы фоток в S3 (Selectel)?

Поделитесь опытом. Если я залью скажем 10млн изображений по 1МБ в один бакет. Не будет ли у меня проблем с копированием в другой бакет для бакапа? Или может еще какие-то другие проблемы проявятся.
И вообще как лучше организовать. Все в один бакет или на каждые N фоток делать новый бакет?

Я сейчас исползую аналог S3 у другого хостера, уже при 100 тыс файлов столкнулся с проблемами. Операция list выполняется больше 10 минут. А sync соотвественно сначала делает list. Я боюсь представить, что будет уже при миллионе файлов.
  • Вопрос задан
  • 1016 просмотров
Решения вопроса 1
@spotifi
Или аналогичная технология Cloud Storage в Clodo или Rackspace...

Но вообще все эти технологии не любят когда их перегружают. Они устроены так, чтобы гарантировать другим пользователям доступ пока вы льете. Поэтому резервируют ресурсы под других и все вам не отдают.

Никак вы это не обойдете.

Даже если поднимете на выделенном сервере свое хранилище по их технологиям (Openstack Swift - это opensource, можно легко поднять, например, с помощью Ceph+Object Storage).

Можете попробовать лить в несколько потоков. Это должно помочь с обходом резервирования на других пользователей.
Можете лить несколько файлов в одном запросе. Для того же.

Снимать копию нужно не внешними средствами, а через API этого cloud storage.

Долгий list можно частично обхойти созданием подкаталогов:
100/500/100500001.jpg
100/500/100500002.jpg
100/500/100500003.jpg
...
100/501/100501001.jpg
100/501/100501002.jpg
100/501/100501003.jpg

Это не сократит общее время. Но по крайне мере позволит разбить операции на отдельные атомарные (по каталожные) и выполнять их параллельно.

Вот еще идея.
Тут тоже предлагают использовать параллелность
https://chris-lamb.co.uk/posts/uploading-large-num...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы