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

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

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

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

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

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

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

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

примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Полнотекстовый поиск по данным

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

  • офисные документы (doc, docx, pdf, odt, rtf, ...),
  • простой текст (txt, md, csv, ...),
  • электронные таблицы (xls, xlsx, ods, ...),
  • презентации (ppt, pptx, odp, ...),
  • архивы (zip, rar, 7z, ...).

Ограничения полнотекстового поиска

  • По умолчанию при поиске не учитываются файлы размером более 10 Мбайт и архивы более 5 Мбайт.
  • Игнорируются извлеченные из архивов текстовые данные, размер которых составляет более четырех миллионов символов.
  • Не индексируются файлы, содержащие персональные, временные, конфиденциальные или секретные данные.
  • Если для файла с простым текстом (plain text) не указана кодировка, она определяется автоматически для семейства кодировок Unicode: UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32. Определение однобайтовых кодировок не поддерживается, их необходимо задавать явно.
  • Неподдерживаемые типы данных:
    • изображения,
    • аудио-файлы,
    • видео-файлы,
    • файлы PKCS,
    • RAR-архивы версии 5.0 и выше.

Контроль использования двоичных объектов в полнотекстовом поиске

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

  • Авто (значение по умолчанию) — объект включается в полнотекстовый индекс, только если он соответствует приведенным выше ограничениям;
  • Использовать — объект всегда учитывается при полнотекстовом индексировании;
  • НеИспользовать — объект не индексируется.

Примеры

См. также