Хранилище двоичных данных

Приложения могут хранить файлы документов, изображения, видео и т.д. Такие данные называются двоичными данными.

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

Хранилища двоичных данных

Сервер поддерживает два типа хранилищ:

  • Файловое — данные хранятся в локальном или сетевом каталоге на диске;
  • S3 — данные хранятся в сервисе, совместимом с Amazon S3, например:

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

Примечание: Чтобы облегчить просмотр всех хранилищ, в списке Инфраструктура > Объектные хранилища все стандартные файловые хранилища, созданные для каждого приложения, отображаются в виде одной обобщенной строки.

Рекомендации по развертыванию

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

  • Готовы ли вы доверить двоичные данные облакам?
    • Да — используйте облачное S3-хранилище;
    • Нет — используйте файловое хранилище или локальное S3-хранилище на другом компьютере. Устанавливать S3-хранилище на тот же компьютер, на котором развернут сервер, не выгодно. Оно будет работать медленнее, чем файловое.
  • Готовы ли вы поддерживать у себя инфраструктуру, достаточную для хранения всех двоичных данных?
    • Да — используйте файловое хранилище;
    • Нет — используйте облачное S3-хранилище.
  • Используете ли вы несколько серверов?
    • Да — используйте облачное S3-хранилище или локальное S3-хранилище на отдельном компьютере. Тогда двоичные данные всех приложений с разных серверов будут находиться в одном хранилище;
    • Нет — используйте файловое хранилище.

Правила использования хранилища и свойства данных

Администратор для каждого хранилища описывает набор правил. Разработчик в своих алгоритмах загрузки двоичных данных задает свойства загружаемых данных. помещает двоичные данные в то хранилище, правилам которого удовлетворяют свойства двоичных данных (подробнее).

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

Правила по умолчанию и правила при подключении хранилища

Правила использования хранилища можно задать двумя способами:

  • «По умолчанию» для всего хранилища;
  • При подключении хранилища к приложению.

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

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

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

Доступность хранилища

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

Автоматическое подключение к приложениям

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

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

Приоритет хранилища

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

Вы можете установить приоритет при добавлении хранилища к серверу. Если вы этого не сделаете, установит приоритет автоматически.

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

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

Хранилище по умолчанию

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

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

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