При росте количества однотипных информационных баз (например, при расширении розничной сети) перед системными администраторами и разработчиками 1С встает закономерный вопрос: стоит ли продолжать обслуживать десяток отдельных баз или лучше объединить их в одну? Основная мотивация объединения — упрощение процедур обновления, создания бэкапов и обслуживания СУБД. Однако на практике такое решение несет в себе скрытые риски, которые могут перечеркнуть все ожидаемые выгоды. Рассмотрим подробно все варианты решения этой задачи, проанализируем технические нюансы и выясним, какой подход является наиболее оптимальным.
Платформа 1С:Предприятие 8 поддерживает механизм разделителей данных. В этом случае все организации работают в одной физической базе данных SQL, но видят только свои данные. Разберем, как это работает «под капотом» и с какими сложностями мы можем столкнуться.
Когда в конфигурации включаются разделители, платформа автоматически добавляет во все таблицы СУБД специальное поле (обычно с типом Number). Это поле включается во все индексы таблиц, становясь первым элементом ключа. Рассмотрим ситуацию с точки зрения производительности:
_Document150), транзакция в одном магазине может наложить блокировку, которая затормозит работу пользователей во всех остальных магазинах. Если в одной области запускается тяжелый отчет или перепроведение документов, «курить в сторонке» будут все.Технология «облачной» публикации решений 1С:Fresh (масштабируемая архитектура на базе разделителей) часто рассматривается как профессиональный вариант объединения баз. Однако для 10 баз этот метод напоминает «стрельбу из пушки по воробьям».
Разберем структуру технологии Fresh:
Настройка и поддержка такой инфраструктуры требует высокой квалификации. Как отмечают специалисты, во «Фреше» до сих пор существуют технологические проблемы, требующие обходных путей. Например, ошибки в коде внешних обработок могут «протекать» между областями данных, нарушая изоляцию. Для небольшого количества баз затраты на внедрение Fresh не окупятся сэкономленным временем на администрирование.
Проанализируем альтернативный путь: оставить базы раздельными, но автоматизировать рутинные операции. Современные инструменты позволяют добиться того, что обслуживание 100 баз будет занимать столько же времени, сколько и одной.
Использование специализированного ПО (Обновлятор-1С):
Это решение позволяет массово обновлять конфигурации, создавать резервные копии и запускать произвольные скрипты во всех базах сразу. Вам не нужно заходить в каждую базу — программа сделает это автоматически по расписанию. Это полностью нивелирует аргумент о «сложности обновления 10 баз».
Скрипты и регламентные задания SQL:
Для обслуживания баз на уровне СУБД (бэкапы, реиндексация, обновление статистики) не нужно настраивать каждую базу отдельно. Рассмотрим пример логики скрипта для MS SQL Server, который будет обрабатывать все базы на сервере автоматически:
DECLARE @name VARCHAR(50) -- имя базы данных
DECLARE @path VARCHAR(256) -- путь для бэкапов
DECLARE @fileName VARCHAR(256) -- имя файла бэкапа
DECLARE @fileDate VARCHAR(20) -- дата для имени файла
SET @path = 'D:\Backups\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- исключаем системные базы
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Один раз настроив такой Maintenance Plan, вы можете добавлять новые базы на сервер, и они будут автоматически попадать в цикл обслуживания. Это снимает риск «забыть сделать бэкап для новой точки».
Рассмотрим ситуацию с точки зрения безопасности бизнеса. Если все 10 баз (принадлежащих разным ИП или юрлицам одного владельца) находятся в одной физической БД, то:
Константы или УчетнаяПолитика часто влияют на всех. Например, невозможно настроить разный порядок ведения зарплаты (внутри бухгалтерии или во внешней ЗУП) для разных организаций в одной базе.Выясним причину, по которой профессиональное сообщество рекомендует изоляцию данных. Основной профит от объединения — мнимый. Современные инструменты автоматизации (RAS/RAC, Обновлятор, скрипты PowerShell) позволяют управлять парком баз любой численности.
Преимущества раздельного хранения:
chdbfl.exe или ТиИ) в одной базе не мешает работе других магазинов.SQL Express. Объединив их в одну 100-гигабайтную базу, вы будете вынуждены покупать полную лицензию MS SQL Server или переходить на PostgreSQL, что потребует дополнительных настроек.Подводя итог, можно сказать: если у вас нет специфического требования в виде сквозного складского учета между всеми 10 точками в режиме реального времени (когда остатки должны быть общими), то объединение баз принесет больше вреда, чем пользы. Сконцентрируйтесь на внедрении инструментов автоматизации администрирования, сохранив базы независимыми. Это обеспечит максимальную стабильность и отказоустойчивость вашей системы.