Перейти к основному содержимому

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

Реквизиты, которые вы добавляете элементам проекта, могут быть предназначены для хранения двоичных данных: файлов документов, изображений, видео и т. д. Такие реквизиты имеют тип ДвоичныйОбъект.Ссылка.

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

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

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

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

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

примечание

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

Отображение файловых хранилищ в виде обобщенной строки

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

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

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

Установка свойств двоичных данных

На сервере вы можете установить свойства двоичных данных непосредственно перед их загрузкой в хранилище. Например:

знч ВременныеФайлы = новый ДвоичныйОбъект.Свойства("temp")
.Временные()

знч РезервныеКопии = новый ДвоичныйОбъект.Свойства("backup")
.РедкийДоступ()
.Конфиденциальность(КонфиденциальностьДвоичногоОбъекта.Конфиденциальный)
.НадежностьХранилища(НадежностьОбъектногоХранилища.Высокая)

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

Например, в переменной ДанныеСсылка хранится ссылка на загруженные двоичные данные (ДвоичныйОбъект.Ссылка):

знч ВременныеФайлы = новый ДвоичныйОбъект.Свойства("temp").Временные()
ДвоичныйОбъект.УстановитьСвойства(ДанныеСсылка, ВременныеФайлы)

Когда администратор сервера выполнит реорганизацию двоичных данных, ваши данные попадут в оптимальное хранилище.

Дедупликация двоичных данных

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

Удаление двоичных данных

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

Удалить двоичные данные может только «1С:Шина» в результате сборки мусора. Она автоматически контролирует время жизни данных. Как только на двоичные данные не остается хранимых ссылок (ДвоичныйОбъект.Ссылка), «Шина» удаляет такие двоичные данные. Удаление выполняется с помощью функции сборки мусора, которая выполняется на сервере (вручную или по расписанию).

Примеры

См. также