Как работает Хранилище двоичных данных в 1С:Предприятии и как его настроить

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

С выходом версии платформы 8.3.22 в экосистеме 1С появился принципиально новый механизм — Хранилище двоичных данных. Этот инструмент призван решить многолетнюю проблему раздувания баз данных СУБД из-за хранения сканов, видео и тяжелых файлов в реквизитах типа ХранилищеЗначения. В этой статье мы подробно разберем, как устроена эта технология, чем она отличается от привычных «Томов» БСП и как правильно администрировать такие базы.

Зачем понадобился новый механизм хранения

Традиционно разработчики использовали два пути для хранения бинарных данных: непосредственно в таблицах СУБД (SQL) или в «Томах на диске» с помощью функций Библиотеки Стандартных Подсистем (БСП). Хранение в СУБД гарантирует целостность при бэкапах, но катастрофически увеличивает размер базы, замедляет обслуживание индексов и переполняет транзакционные логи. Использование томов БСП разгружает СУБД, но требует написания кода и создает риски рассинхронизации ссылок в базе и файлов на диске.

Хранилище двоичных данных — это нативный платформенный механизм, который позволяет автоматически выносить тяжелые данные из таблиц SQL в специальную файловую структуру кластера 1С, сохраняя при этом прозрачность работы для программиста. Рассмотрим подробнее, как это реализовано технически.

Архитектура и место хранения данных

В отличие от томов БСП, где файлы лежат в сетевых папках в открытом виде, новое хранилище интегрировано в реестр кластера серверов 1С. Проанализируем физическое размещение данных. Все бинарные объекты попадают в каталог srvinfo (или иной путь, указанный при настройке кластера). Путь к данным конкретной базы выглядит следующим образом:

[КаталогКластера]/reg_[Порт]/[GUID_Базы]/binary_data_storage

Разберем по шагам, как определить нужную папку:

  1. Выясним ID (GUID) информационной базы. Это можно сделать через консоль администрирования или с помощью утилиты rac.
  2. Перейдем в каталог реестра кластера на сервере.
  3. Найдем папку с соответствующим идентификатором. Внутри нее, помимо журналов регистрации и индексов поиска, теперь будет располагаться подкаталог binary_data_storage.

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

Настройка порога срабатывания

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

Выясним причину, по которой не все данные уходят в хранилище. В параметрах информационной базы (в консоли администрирования или через встроенный язык) задается порог размера (например, 100 КБ). Рассмотрим логику работы платформы:

Для управления этим процессом программно можно использовать следующий подход (пример настройки через административное соединение):


// Пример логики управления настройками (схематично)
ПараметрыБ = ИнформационныеБазы.ПолучитьПараметры(ИмяБазы);
ПараметрыБ.ИспользоватьХранилищеДвоичныхДанных = Истина;
ПараметрыБ.МинимальныйРазмерХранилищаДвоичныхДанных = 102400; // 100 КБ
ИнформационныеБазы.УстановитьПараметры(ИмяБазы, ПараметрыБ);

Проблема консистентности и резервное копирование

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

Проанализируем ситуацию с восстановлением. Для обеспечения целостности рекомендуется:

  1. Использовать штатные средства 1С: При выгрузке в .dt платформа автоматически собирает данные из обоих источников в один архив. Однако для крупных баз этот метод не подходит.
  2. Механизм «заморозки»: Платформа 8.3.22 поддерживает режим, позволяющий временно приостановить запись в хранилище для снятия файлового бэкапа параллельно с бэкапом SQL.
  3. Утилита ibcmd: Для автономного сервера и современных сценариев администрирования используем утилиту ibcmd, которая умеет корректно работать с обоими типами данных при создании резервных копий.

Миграция существующих данных

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

  1. Включите использование хранилища и установите желаемый порог размера.
  2. Запустите режим Тестирование и исправление в Конфигураторе. Для автоматизации обслуживания и тестирования сразу нескольких информационных баз можно использовать программу для технического обслуживания информационных баз 1С.
  3. Выберите пункт «Сжатие таблиц информационной базы».

В процессе выполнения этой операции платформа просканирует таблицы, найдет все объекты ХранилищеЗначения, превышающие порог, и переместит их в binary_data_storage, освободив место в SQL-базе. Для контроля распределения дискового пространства по таблицам до и после сжатия подойдёт обработка для анализа объёма таблиц информационной базы.

Сравнение: Хранилище vs Тома БСП

Рассмотрим подробнее преимущества и недостатки в сравнении с классическими томами:

Заключение

Механизм Хранилища двоичных данных — это мощный инструмент для оптимизации высоконагруженных систем. Он позволяет сохранить производительность СУБД на приемлемом уровне при огромных объемах контента. Однако его внедрение требует осознанного подхода к стратегии резервного копирования и понимания того, что данные теперь распределены между двумя физическими хранилищами. Рекомендуем сначала протестировать миграцию на копии базы, используя консоль rac и стандартные средства тестирования и исправления.

← На главную