Хранилище двоичных данных
Приложения могут хранить файлы документов, изображения, видео и т.д. Такие данные называются двоичными данными.
Особенность двоичных данных заключается в том, что они, как правило, имеют большой размер, что может влиять на производительность приложения. По этой причине не хранит двоичные данные в тех же таблицах базы данных, что и остальные реквизиты. Для хранения двоичных данных использует специальные хранилища, которые должны быть заранее настроены администратором сервера. Непосредственно в реквизите хранится только ссылка на двоичные данные в этих хранилищах.
Хранилища двоичных данных
Сервер поддерживает два типа хранилищ:
- Файловое — данные хранятся в локальном или сетевом каталоге на диске;
- S3 — данные хранятся в сервисе, совместимом с Amazon S3, например:
- Yandex Object Storage;
- VK Cloud Solutions Storage;
- MinIO — локальный S3-сервер.
Сервер для каждого приложения стандартно создает одно локальное файловое хранилище двоичных данных. Для оптимизации ресурсов можно добавлять к серверу дополнительные хранилища и подключать их к приложениям.
Рекомендации по развертыванию
Для промышленной эксплуатации можно выбирать как файловые, так и облачные хранилища. Критерии выбора здесь следующие:
- Готовы ли вы доверить двоичные данные облакам?
- Да — используйте облачное S3-хранилище;
- Нет — используйте файловое хранилище или локальное S3-хранилище на другом компьютере. Устанавливать S3-хранилище на тот же компьютер, на котором развернут сервер, не выгодно. Оно будет работать медленнее, чем файловое.
- Готовы ли вы поддерживать у себя инфраструктуру, достаточную для хранения всех двоичных данных?
- Да — используйте файловое хранилище;
- Нет — используйте облачное S3-хранилище.
- Используете ли вы несколько серверов?
- Да — используйте облачное S3-хранилище или локальное S3-хранилище на отдельном компьютере. Тогда двоичные данные всех приложений с разных серверов будут находиться в одном хранилище;
- Нет — используйте файловое хранилище.
Правила использования хранилища и свойства данных
Администратор для каждого хранилища описывает набор правил. Разработчик в своих алгоритмах загрузки двоичных данных задает свойства загружаемых данных. помещает двоичные данные в то хранилище, правилам которого удовлетворяют свойства двоичных данных (подробнее).
В процессе эксплуатации сервера администратор может менять набор хранилищ, может изменять их правила. После этого он может выполнить реорганизацию двоичных данных (вручную или по расписанию), при которой заново сопоставит свойства данных и правила хранилищ и переместит экземпляры двоичных данных в оптимальные хранилища.
Правила по умолчанию и правила при подключении хранилища
Правила использования хранилища можно задать двумя способами:
- «По умолчанию» для всего хранилища;
- При подключении хранилища к приложению.
Если вы задаете правила по умолчанию, то впоследствии изменить их уже нельзя. При подключении хранилища к любому приложению будут действовать эти правила.
Если вы не задаете правила по умолчанию, то при каждом подключении этого хранилища к тому или иному приложению нужно будет задать правила его использования. Эти правила будут действовать только для данного приложения. У другого приложения, к которому подключено это хранилище, могут быть другие правила.
Первый вариант удобен в том случае, когда администратор панели управления хочет ограничить администраторов приложений в настройках. Например, есть «дорогое» хранилище S3, для важных данных и картинки там хранить не выгодно. Тогда администратор панели управления сразу настраивает правила по умолчанию для этого хранилища и администратор приложения не будет думать о его настройке и у него не будет такой возможности. Он сможет только подключить это хранилище к своим приложениям.
Доступность хранилища
Администраторам приложений доступны все хранилища, подключенные к серверу. Если администратор панели управления хочет скрыть хранилище от администраторов приложений, он может сделать его недоступным.
Автоматическое подключение к приложениям
Как минимум одно из имеющихся хранилищ должно автоматически подключаться к новым приложениям. Обычно таким хранилищем является стандартное файловое хранилище, которое сервер создает для каждого приложения.
Вы можете установить автоматическое подключение для любых других хранилищ, а, например, для стандартного файлового хранилища — отменить.
Приоритет хранилища
Приоритет хранилища показывает, в какое хранилище нужно поместить файл, если он подходит для нескольких хранилищ. Файл будет помещен в хранилище с наибольшим значением свойства Приоритет.
Вы можете установить приоритет при добавлении хранилища к серверу. Если вы этого не сделаете, установит приоритет автоматически.
Вы можете изменять приоритеты хранилищ, подключенных к серверу, а также приоритеты хранилищ, среди подключенных к одному приложению.
В некоторых случаях самостоятельно меняет приоритеты хранилищ. Например, при отключении хранилища от приложения ему назначается самый низкий приоритет из всех хранилищ, которые подключены к приложению. Это нужно для того, чтобы данные из отключаемого хранилища мигрировали в другое хранилище.
Хранилище по умолчанию
Одно из автоматически подключаемых хранилищ должно быть хранилищем по-умолчанию. В него попадают те двоичные данные, которые не подошли для помещения в другие хранилища.
Среди хранилищ, подключенных к серверу, вы можете любое назначить хранилищем по умолчанию. При этом прежнее хранилище по умолчанию перестанет быть таковым.
Кроме этого, уже после того, как несколько хранилищ подключены к приложению, вы можете изменить то хранилище, которое будет для этого приложения хранилищем по умолчанию.