Переход с файлового варианта на клиент-серверную архитектуру — это важный шаг в развитии информационной системы, особенно когда база начинает «тормозить» из-за возросшего объема данных или интенсивности их обработки. В данной статье мы подробно разберем, какие программные и аппаратные средства потребуются для успешной миграции на 64-разрядный сервер 1С и SQL.
Первым делом проанализируем потребности в лицензировании самой платформы «1С:Предприятие». Для работы в серверном режиме недостаточно иметь только основную поставку конфигурации. Нам потребуется приобрести отдельную лицензию на сервер 1С.
Рассмотрим два основных варианта:
Конфигуратор.Важное уточнение по легальности: Встречается мнение, что при использовании операционных систем семейства Linux (например, Ubuntu) сервер 1С можно использовать бесплатно. Выясним причину этого заблуждения: технически сервер может запуститься без ключа в определенных режимах, но согласно лицензионному соглашению, коммерческое использование сервера 1С без соответствующей лицензии является нарушением, независимо от используемой ОС.
Разберем, какой SQL-сервер лучше выбрать под наши задачи. Сервер 1С не хранит данные сам, он выступает посредником между клиентским приложением и СУБД.
Рассмотрим основные доступные варианты:
Runtime, которые дешевле, но позволяют работать только с базами 1С.shared_buffers и effective_cache_size.Проанализируем ситуацию с рабочими местами. Если у вас уже есть USB-ключ на одно рабочее место, он продолжит работать. Однако для клиент-серверного варианта общее количество лицензий должно быть не меньше количества одновременно запущенных сеансов. При покупке новых лицензий они, скорее всего, будут электронными (программными). Программные и аппаратные ключи вполне успешно сосуществуют в одной сети при правильной настройке HASP License Manager.
Посмотрим на минимально рекомендуемую конфигурацию оборудования для комфортной работы. Для серверной 1С критически важна производительность дисковой подсистемы и частота процессора.
Рекомендуемый набор компонентов:
rphost), и SQL-сервер.Рассмотрим специфическую проблему: получение 20 000 QR-кодов с интервалом в 1 секунду. Переход на SQL сам по себе может не решить проблему тормозов, если алгоритм записи останется прежним. В файловом варианте при записи блокируется вся база данных, в серверном — только определенные таблицы, но при такой частоте база будет постоянно находиться в состоянии транзакции.
Проанализируем, как можно оптимизировать этот процесс с помощью кода. Вместо записи каждого кода по отдельности, используем метод накопления данных (батчинг). Создадим массив или таблицу значений в оперативной памяти и будем записывать данные пакетами раз в 30-60 секунд.
Пример логики для накопления данных:
// Создаем структуру для хранения буфера данных в глобальном модуле или через фоновое задание
Перем БуферДанных;
Процедура ПринятьДанныеОтКамеры(НовыйКод)
Если БуферДанных = Неопределено Тогда
БуферДанных = Новый Массив;
КонецЕсли;
БуферДанных.Добавить(НовыйКод);
// Если накопили достаточно или прошло время - записываем
Если БуферДанных.Количество() >= 1000 Тогда
ЗаписатьПакетДанных(БуферДанных);
БуферДанных.Очистить();
КонецЕсли;
КонецПроцедуры
Такой подход в разы снижает нагрузку на дисковую систему, так как транзакция записи в РегистрСведений или Справочник открывается один раз на тысячу записей, а не на каждую отдельную запись.
Выясним, какие еще настройки помогут ускорить работу системы после перехода на SQL:
Shared Memory в консоли SQL Server. Это позволит компонентам общаться через оперативную память, минуя сетевой стек, что даст прирост производительности около 10-15%.HTTP-сервисы 1С. Они работают быстрее традиционных COM-соединений и потребляют меньше ресурсов сервера.Maintenance Plan для MS SQL или аналогичных скриптов для PostgreSQL.Подводя итог, для перехода вам потребуется: лицензия на сервер 1С (Мини или полная), лицензия на СУБД (или использование бесплатной PostgreSQL), производительное железо с SSD и, что самое важное, пересмотр архитектуры записи данных для исключения постоянных блокировок базы при работе с конвейером маркировки.