← На главную
При внедрении систем с интенсивным электронным документооборотом, таких как 1С:Документооборот, 1С:ERP или 1С:Управление торговлей, перед системными администраторами и разработчиками неизбежно встает вопрос: где физически размещать прикрепленные файлы (сканы, PDF, офисные документы)? Платформа 1С предлагает два классических варианта: хранение непосредственно в таблицах базы данных (в виде типа ValueStorage) или во внешних томах на диске (через сетевые пути). Рассмотрим подробно каждый из этих подходов, проанализируем их влияние на производительность и выберем оптимальную стратегию для вашей информационной системы.
Вариант 1: Хранение файлов внутри базы данных
Этот метод используется в 1С «по умолчанию». Все бинарные данные упаковываются и записываются в таблицы СУБД (MS SQL Server, PostgreSQL или файловую 1cv8.1cd). Разберем, какие преимущества и скрытые угрозы несет в себе этот способ.
Преимущества хранения в БД:
- Целостность и консистентность: Это главный плюс. Когда файлы лежат внутри базы, они являются частью транзакционной модели. Если вы делаете бэкап базы, вы гарантированно получаете и все файлы на этот момент времени. Исключена ситуация «битых ссылок», когда запись в базе есть, а файл на диске отсутствует.
- Упрощенное администрирование: Вам не нужно настраивать права доступа к сетевым папкам, следить за доступностью NAS или переживать о том, что антивирус заблокирует файл в каталоге. Все данные защищены механизмами СУБД и правами доступа 1С (включая RLS).
- Легкость развертывания копий: При создании тестовой среды для разработчиков достаточно просто восстановить бэкап
.bak. Все картинки и документы «подтянутся» автоматически.
Недостатки и риски:
- Взрывной рост размера базы: Файлы могут занимать 80-90% объема всей БД. Если база вырастает до нескольких терабайт, обслуживание становится крайне сложным.
- Деградация производительности СУБД (Buffer Pool): Это критический момент. СУБД кэширует часто используемые данные в оперативной памяти (Buffer Pool). Когда пользователь скачивает «тяжелый» файл объемом 50 МБ, СУБД считывает его в кэш, вымывая оттуда полезные индексы и таблицы остатков. Это замедляет работу всех пользователей системы в момент активного чтения файлов.
- Увеличение регламентного окна: Проверка целостности (
DBCC CHECKDB), реиндексация и сжатие базы занимают в разы больше времени.
- Лимиты файловой версии: Для файловых баз
1cv8.1cd существует жесткое ограничение на размер одной таблицы (обычно 4 ГБ). Хранение файлов внутри базы приведет к достижению этого лимита очень быстро.
Вариант 2: Хранение файлов в томах на диске
При этом подходе в базе данных хранятся только метаданные (имя файла, размер, расширение) и путь к нему, а сам файл размещается в файловой системе сервера или сетевом хранилище.
Преимущества хранения на диске:
- Минимальный размер базы данных: Информационная база остается «легкой». Это позволяет выполнять бэкапы основной базы за считанные минуты и использовать быстрые SSD только для критически важных данных СУБД.
- Экономия на оборудовании: Файлы можно хранить на недорогих дисковых массивах (SATA/NL-SAS) или NAS, в то время как база данных будет работать на дорогих и быстрых NVMe накопителях.
- Удобство в распределенных системах (РИБ): Если у вас настроен обмен данными, передача огромных файлов внутри сообщений обмена может «парализовать» каналы связи. Хранение на диске позволяет более гибко управлять передачей контента.
Проблемы и сложности:
- Сложность бэкапирования: Вам необходимо синхронизировать бэкап базы и бэкап дискового хранилища. Если базу восстановили из вчерашнего бэкапа, а папку с файлами не трогали, в системе появятся ссылки на файлы, которые были созданы сегодня, но которых «не знает» старая база.
- Проблема тестовых копий: Разберем ситуацию: вы сделали копию базы для тестов. В этой копии ссылки ведут на тот же боевой диск. Если разработчик в тестовой базе нажмет «Удалить объект», файл может физически исчезнуть с диска, и он пропадет из основной «боевой» базы.
- Безопасность: Системный администратор или злоумышленник может получить доступ к файлам напрямую через файловую систему, минуя проверку прав в 1С.
Технический анализ: Влияние на обслуживание (Maintenance)
Проанализируем ситуацию с точки зрения эксплуатации. Когда файлы хранятся в томах, процедура CheckDB (проверка целостности) выполняется максимально быстро. Если же база весит 2 Тб из-за файлов, любая ошибка на уровне страниц данных может привести к тому, что база уйдет в Emergency mode на несколько суток для восстановления. Рассмотрим также фрагментацию: частое удаление и запись файлов в базу создают сильную фрагментацию страниц, что требует регулярного выполнения Shrink, который сам по себе является тяжелой операцией.
Выясним причину, почему многие крупные внедрения выбирают дисковое хранение. Это связано с линейным масштабированием. Проще добавить еще один недорогой сервер хранения (Storage Server), чем бесконечно наращивать дисковое пространство на дорогом SQL-сервере.
Новый путь: S3-совместимые хранилища
Начиная с современных версий платформы (8.3.15+), появилась возможность использовать облачные объектные хранилища по протоколу S3. Это «золотая середина». Рассмотрим подробнее:
- Данные не раздувают базу.
- Доступ идет по HTTP/HTTPS, что снимает проблемы с сетевыми путями Windows (UNC).
- Облачные провайдеры сами заботятся о доступности и избыточности (репликации) данных.
Практические рекомендации по настройке
Если вы решили перенести файлы на диск в типовой конфигурации (например, в «1С:Документооборот»), разберем по шагам, на что обратить внимание:
- Перейдите в раздел Администрирование — Настройки работы с файлами.
- Установите флаг «Хранить файлы в томах на диске».
- Создайте новый
Том. Укажите путь в формате UNC (например, \\ServerName\FilesStorage). Важно: Служба сервера 1С:Предприятие (от имени которой запущен процесс rphost) должна иметь полные права (Full Control) на эту папку.
- Настройте правила очистки: 1С умеет автоматически создавать подпапки (например, по годам и месяцам). Не допускайте хранения более 10 000 файлов в одной директории, так как это замедляет работу файловой системы (особенно NTFS).
Проанализируем ситуацию с дубликатами. При хранении на диске в Windows Server можно включить роль Дедупликация данных. Если пользователи часто сохраняют одни и те же инструкции или шаблоны под разными именами, эта технология позволит сэкономить до 30-50% дискового пространства на уровне операционной системы, что невозможно при хранении внутри SQL-базы.
Резюме: что же выбрать?
Подведем итог нашему анализу:
- Выбирайте хранение в базе данных, если общий объем файлов не превышает 50-100 ГБ, у вас мощный сервер с большим объемом оперативной памяти и вам критична простота бэкапа «одной кнопкой».
- Выбирайте хранение в томах на диске, если объем данных исчисляется сотнями гигабайт или терабайтами, а также если вы используете РИБ или имеете жесткие ограничения по времени ночного обслуживания базы (backup/index).
- Рассмотрите S3-хранилища, если вы строите современную распределенную систему и хотите избавиться от сложностей администрирования локальных файловых серверов.
Помните, что в типовых конфигурациях 1С предусмотрен механизм переноса файлов из базы в тома, однако обратный процесс (с диска в базу) обычно требует написания собственных обработок. Поэтому решение о выносе файлов на диск лучше принимать на ранних этапах жизни системы, пока объем данных позволяет провести миграцию в разумные сроки.