С выходом версии платформы 8.3.22 в экосистеме 1С появился принципиально новый механизм — Хранилище двоичных данных. Этот инструмент призван решить многолетнюю проблему раздувания баз данных СУБД из-за хранения сканов, видео и тяжелых файлов в реквизитах типа ХранилищеЗначения. В этой статье мы подробно разберем, как устроена эта технология, чем она отличается от привычных «Томов» БСП и как правильно администрировать такие базы.
Традиционно разработчики использовали два пути для хранения бинарных данных: непосредственно в таблицах СУБД (SQL) или в «Томах на диске» с помощью функций Библиотеки Стандартных Подсистем (БСП). Хранение в СУБД гарантирует целостность при бэкапах, но катастрофически увеличивает размер базы, замедляет обслуживание индексов и переполняет транзакционные логи. Использование томов БСП разгружает СУБД, но требует написания кода и создает риски рассинхронизации ссылок в базе и файлов на диске.
Хранилище двоичных данных — это нативный платформенный механизм, который позволяет автоматически выносить тяжелые данные из таблиц SQL в специальную файловую структуру кластера 1С, сохраняя при этом прозрачность работы для программиста. Рассмотрим подробнее, как это реализовано технически.
В отличие от томов БСП, где файлы лежат в сетевых папках в открытом виде, новое хранилище интегрировано в реестр кластера серверов 1С. Проанализируем физическое размещение данных. Все бинарные объекты попадают в каталог srvinfo (или иной путь, указанный при настройке кластера). Путь к данным конкретной базы выглядит следующим образом:
[КаталогКластера]/reg_[Порт]/[GUID_Базы]/binary_data_storage
Разберем по шагам, как определить нужную папку:
ID (GUID) информационной базы. Это можно сделать через консоль администрирования или с помощью утилиты rac.binary_data_storage.Важно понимать: это не просто склад файлов. Данные хранятся в оптимизированном блочном формате. Платформа сама управляет фрагментацией и кэшированием, что обеспечивает более высокую скорость доступа по сравнению с обращением к удаленным сетевым папкам через протоколы SMB.
Одной из ключевых особенностей является «прозрачность». Программисту не нужно менять код или вызывать специальные методы. Достаточно использовать стандартный объект ХранилищеЗначения. Система сама решит, куда положить данные, основываясь на настройках.
Выясним причину, по которой не все данные уходят в хранилище. В параметрах информационной базы (в консоли администрирования или через встроенный язык) задается порог размера (например, 100 КБ). Рассмотрим логику работы платформы:
ХранилищеЗначения меньше порога, они сохраняются внутри СУБД (SQL). Это эффективно для маленьких картинок или настроек.Для управления этим процессом программно можно использовать следующий подход (пример настройки через административное соединение):
// Пример логики управления настройками (схематично)
ПараметрыБ = ИнформационныеБазы.ПолучитьПараметры(ИмяБазы);
ПараметрыБ.ИспользоватьХранилищеДвоичныхДанных = Истина;
ПараметрыБ.МинимальныйРазмерХранилищаДвоичныхДанных = 102400; // 100 КБ
ИнформационныеБазы.УстановитьПараметры(ИмяБазы, ПараметрыБ);
Самый острый вопрос, который обсуждают специалисты — это синхронизация бэкапов. Поскольку часть данных теперь лежит в SQL, а часть — в файлах на сервере приложений, обычный бэкап средствами SQL Server может привести к ситуации, когда база ссылается на файл, которого нет в папке binary_data_storage (или наоборот).
Проанализируем ситуацию с восстановлением. Для обеспечения целостности рекомендуется:
.dt платформа автоматически собирает данные из обоих источников в один архив. Однако для крупных баз этот метод не подходит.ibcmd, которая умеет корректно работать с обоими типами данных при создании резервных копий.Если вы решили перевести уже работающую базу (например, «1С:Документооборот») на новый механизм, простого включения настройки недостаточно. Данные, уже накопленные в СУБД, сами не переместятся. Разберем шаги по миграции:
В процессе выполнения этой операции платформа просканирует таблицы, найдет все объекты ХранилищеЗначения, превышающие порог, и переместит их в binary_data_storage, освободив место в SQL-базе. Для контроля распределения дискового пространства по таблицам до и после сжатия подойдёт обработка для анализа объёма таблиц информационной базы.
Рассмотрим подробнее преимущества и недостатки в сравнении с классическими томами:
ХранилищеЗначения.Механизм Хранилища двоичных данных — это мощный инструмент для оптимизации высоконагруженных систем. Он позволяет сохранить производительность СУБД на приемлемом уровне при огромных объемах контента. Однако его внедрение требует осознанного подхода к стратегии резервного копирования и понимания того, что данные теперь распределены между двумя физическими хранилищами. Рекомендуем сначала протестировать миграцию на копии базы, используя консоль rac и стандартные средства тестирования и исправления.