Все записи

Как использовать файловые хранилища в своих проектах?

Где лучше хранить файлы, когда их становится много: в базе данных или файловом хранилище? И как сделать так, чтобы приложение не упало под нагрузками, а важные файлы не потерялись?

Маша, разработчик Naumen, рассказала о файловых хранилищах. Примеры — в статье на Habr.

Без имени-2 (3).jpg

Когда только пришла в Naumen, я не знала, что такое файловые хранилища и как с ними работать. Однако первые мои задачи были связаны именно с этим, поэтому пришлось разобраться, что это такое, и как файлы хранятся в системе. Благодаря осознанной эволюции хранения файлов, у нас есть решение, где мы не потеряем файлы и не упадем под нагрузками. 

Когда дело касается файлов, первое, что раньше приходило мне в голову — это сохранять их в базе данных. При маленьких размерах файлов и небольшом количестве — это хорошее решение. Однако когда файлы начинают расти, а их количество увеличивается, наша БД начинает разбухать. Возникает три основные проблемы:

  • Занимаем много места на сервере, где находится БД;

  • БД долго обрабатывает запросы;

  • Время создания бэкапа уходит в бесконечность.

На помощь приходят файловые хранилища. Это директория на локальном или сетевом диске, где мы храним и получаем файлы. 

По расположению файловые хранилища могут находиться:

В локальной файловой системе 

Плюсы: легкая реализация, быстрый доступ, независимость от сети.

Минусы: единый критический узел, занимаем дисковое пространство.

В сетевой файловой системе

Плюсы: устранение единого критического узла.

Минусы: сложнее реализация, поддержка уже второго сервера.

Файловые системы могут разделяться и по тому, что лежит в их основе

Использование файловой системы

Плюсы: бесплатный вариант, не грузим базу.

Минусы: реализация с нуля всех методов взаимодействия.

S3 совместимое файловое хранилище (поддержка стандарта Amazon’s S3 API)

Плюсы: легкая реализация, возможность использовать из коробки множество плюшек, наличие бесплатных систем (ceph и MinIO).

Минусы: необходимо первичное изучение библиотеки, поднятие и настройка файлового хранилища.

Хранилище данных поставщика услуг

Плюсы: простая реализация, возможность использовать из коробки множество плюшек, не требуется самостоятельного поднятия и настройки ФХ.

Минусы: необходимо первичное изучение библиотеки, системы платные.


Group 1 (3).jpg

Как обойти пиковые нагрузки и не потерять файлы?

Пользователь скачивает файл → мы размещаем его в БД → переносим в ФХ отдельной задачей, но с уточнением, что перенесется не каждый файл. Мы сначала проверим, можно его перенести или нет.

Бонусы работы с файловыми хранилищами

Обработка тайм-аута

Если нашему ФХ плохо, можно взять перерыв и потом продолжить обращаться к нему.

Поддержка нескольких ФХ

Если ФХ хранит очень много файлов, мы переключаемся на дополнительное и продолжаем работать. А из первого получаем файлы, которые уже сохранены. Либо если одному ФХ стало плохо, мы переключаемся на резервное ФХ и работаем с ним, пока разбираемся с основным.

Похожие новости

Как мы готовили редизайн продукта с помощью исследований

Сделать красивый интерфейс часто недостаточно. Можно обновить экраны, но так и не решить реальные проблемы пользователей.

В статье Илона, продуктовый дизайнер Project Ruler, рассказывает, как команда подошла к редизайну через исследования: изучала конкурентов, разговаривала с пользователями, проверяла навигацию и выясняла, какие функции действительно важны для MVP.

Аналитика в эпоху ИИ

У аналитиков есть много задач, к которым уже можно подключать ИИ: искать информацию, разбирать требования, фиксировать итоги встречи, работать с документами или проверять гипотезы.

Часть работы так действительно идет быстрее. Но результат все равно нужно проверить, учесть контекст и понять, подходит ли предложенный вариант для конкретной ситуации.

Ваня и Динара, аналитики Naumen, рассказали, для чего используют ИИ сейчас, что по-прежнему контролируют сами и какие навыки становятся важнее.

7 фич Telegram, которые легко не заметить и потерять из-за этого баллы в тестовом

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

Проверяя тестовые, Даша, системный аналитик в Naumen, заметила: многие кандидаты предлагали функции, которые в мессенджере уже есть.

Так бывает, если придумывать решение до анализа пути пользователя. И если в тестовом вы просто потеряете баллы, то в реальной работе цена ошибки выше: команда может потратить время на разработку функции, которая уже существует.

Чтобы в будущем вы не писали о функциональности, которая уже есть — разберем фичи Telegram, о которых многие не догадываются. Другие ошибки мы уже разобрали в статье.

Все новости