Как выбрать СУБД для 1С:Предприятие: сравниваем MS SQL, PostgreSQL и Postgres Pro, и что делать при недоступности MS SQL?

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

В условиях текущей рыночной ситуации, когда приобрести корпоративные лицензии Microsoft SQL Server стало невозможно, многие компании, использующие 1С:Предприятие, сталкиваются с необходимостью поиска альтернативных систем управления базами данных (СУБД). Рассмотрим подробно варианты перехода на PostgreSQL, его различные версии, а также сравним их с привычным MS SQL, чтобы помочь вам принять информированное решение.

Почему возникает вопрос о смене СУБД?

Основная причина для смены СУБД сейчас — это невозможность приобретения новых лицензий на MS SQL Server. Как отмечают пользователи, корпоративные лицензии Microsoft SQL Server стали недоступны для покупки в России с марта 2022 года. Даже коробочные версии SQL Server 2019 Standard, которые были доступны некоторое время, исчезли из продажи. Это делает переход на отечественные СУБД, такие как Postgres Pro, не просто выбором, а необходимостью для соблюдения российского законодательства и обеспечения бесперебойной работы.

Некоторые могут задаться вопросом о легальности использования уже установленного MS SQL без продления лицензий. Хотя законодательство Российской Федерации в отношении использования программного обеспечения продолжает действовать, и ответственность за его нарушение никто не отменял, реальная ситуация такова, что проверка таких лицензий становится крайне затруднительной. Однако для новых внедрений или расширения инфраструктуры вопрос выбора альтернативы становится критическим.

Варианты PostgreSQL для 1С:Предприятие: сравниваем дистрибутивы

Мы рассмотрим несколько вариантов PostgreSQL, которые могут использоваться с 1С, и выясним их ключевые отличия:

  1. PostgreSQL от 1С (бесплатная сборка):
  2. Это свободно распространяемая СУБД PostgreSQL, специально модифицированная фирмой "1С". Дистрибутивы доступны на releases.1c.ru. "1С" выпускает эти сборки со специальными патчами, которые оптимизированы для совместимости и повышения производительности с платформой "1С:Предприятие". Эти сборки могут включать автоматическую настройку конфигурации базы данных под ресурсы сервера, унифицированную структуру пакетов для Linux и базовую техническую поддержку, доступную через партнеров "1С". Этот вариант является бесплатным и подходит для тех, кто готов самостоятельно заниматься тонкой настройкой и поддержкой, или имеет ограниченный бюджет.

  3. Postgres Pro Standard:
  4. Эта коммерческая версия PostgreSQL разрабатывается российской компанией Postgres Professional. Она базируется на открытом исходном коде, но включает дополнительные функции, многочисленные оптимизации и инструменты, которые повышают ее надежность и производительность. Лицензируется Postgres Pro Standard по ядрам процессоров (или vCPU) и включает 1 год стандартной технической поддержки. Подходит для систем со средним уровнем нагрузки и для компаний, которые ценят наличие официальной поддержки и дополнительные возможности по сравнению с базовой PostgreSQL.

  5. Postgres Pro Enterprise:
  6. Это флагманская редакция от Postgres Professional, предназначенная для высоконагруженных систем и больших объемов данных, что особенно актуально для крупных предприятий, использующих, например, 1С:ERP Управление предприятием со 100+ пользователями. Postgres Pro Enterprise включает более 100 ключевых разработок, направленных на повышение надежности, безопасности и производительности. Среди уникальных функций – встроенный отказоустойчивый кластер BiHA, пулер соединений Proxima, встроенный механизм сжатия данных, интеллектуальная система оптимизации запросов (AQO) и графическая платформа управления PPEM. Эта версия также лицензируется по ядрам/vCPU, с годовой гарантированной технической поддержкой. Существует специальная лицензия "Postgres Pro Enterprise для 1С", которая позволяет использовать функционал Enterprise по более низкой цене, но только с платформой 1С.

  7. Сертифицированные версии (Postgres Pro Certified / Enterprise Certified):
  8. Эти версии Standard или Enterprise дополнительно доработаны для обеспечения повышенной защищенности данных и имеют сертификаты ФСТЭК. Они критически важны для государственных учреждений и компаний, работающих с конфиденциальной информацией, где требуется соответствие строгим стандартам безопасности.

Таким образом, если бесплатный PostgreSQL от "1С" – это вариант "ваш геморрой, но бесплатно", то Postgres Pro (особенно Enterprise) – это "геморрой на двоих с поставщиком услуг", где вы платите за сниженный риск, дополнительные возможности и профессиональную поддержку. Для директорского состава этот выбор часто сводится к оценке рисков и стоимости владения.

Лицензирование и стоимость Postgres Pro

Лицензирование Postgres Pro осуществляется "по ядрам" процессора (физическим или виртуальным), выделенным серверу СУБД. Минимально требуется лицензия на 2 ядра. В стоимость лицензии обычно включена стандартная техническая поддержка на 1 год. Лицензии для разработки и тестирования могут предоставляться бесплатно при покупке лицензий на продуктивный контур (обычно не более двух тестовых зон, не превышающих продуктивный контур по количеству ядер).

Стоимость Postgres Pro варьируется: лицензии на Postgres Pro Standard могут начинаться от 36 000 руб. за годовую подписку или 160 000 руб. за бессрочную лицензию на одно ядро. Postgres Pro Enterprise стоит значительно дороже – от 360 000 руб. за бессрочную лицензию на одно ядро. Эти цифры показывают, что использование высокопроизводительной версии PostgreSQL может стать существенной статьей расходов, сравнимой с некоторыми затратами на MS SQL в прошлом.

Производительность: MS SQL против PostgreSQL

Вопрос производительности является одним из ключевых при выборе СУБД для 1С, особенно для высоконагруженных систем, таких как 1С:ERP с сотней пользователей. Рассмотрим динамику и текущее состояние:

  1. Историческая перспектива:
  2. Ранние тесты (около 2015 года) показывали, что MS SQL в среднем работал на 45% быстрее, чем PostgreSQL. Это объяснялось, в том числе, глубокой оптимизацией платформы 1С под MS SQL, а также более "грубой" работой PostgreSQL с блокировками и оптимизацией запросов.

  3. Современные реалии и оптимизации:
  4. Однако, более свежие тесты (2024-2025 годы) с 1С:ERP и сотнями пользователей показывают, что производительность PostgreSQL (версий 15-17.4) значительно улучшилась и может быть сопоставима с MS SQL 2022, особенно при правильной и тонкой настройке. Современные конфигурации 1С, такие как 1С:ERP, 1С:Управление торговлей, 1С:Комплексная автоматизация, адаптируются к работе с PostgreSQL, что позволяет им нормально функционировать даже на больших базах.

  5. Необходимость тонкой настройки:
  6. Важно отметить, что PostgreSQL требует обязательной тонкой настройки под конкретные задачи и ресурсы сервера, в отличие от MS SQL, который по умолчанию стремится использовать все доступные ресурсы и зачастую показывает хорошие результаты "из коробки". Этот аспект требует от администратора глубоких знаний и опыта.

  7. Специфические оптимизации в Postgres Pro для 1С:
  8. В Postgres Pro реализованы многочисленные улучшения, специально нацеленные на работу с 1С. Среди них:

    Также рекомендуется отключать JIT-компиляцию (jit = off) для 1С, так как она может замедлять небольшие OLTP-запросы, характерные для работы платформы.

В итоге, хотя MS SQL на тяжелых нагрузках может выигрывать, современный PostgreSQL, особенно в версии Pro и при правильной настройке, является достойной заменой.

Администрирование PostgreSQL и особенности для 1С

Администрирование PostgreSQL имеет свои особенности, которые могут быть непривычны для администраторов, привыкших к MS SQL Server Management Studio (SSMS).

  1. Инструменты администрирования:
  2. В отличие от SSMS, для PostgreSQL существует ряд альтернативных графических инструментов, таких как DBeaver, HeidiSQL, TablePlus, OmniDB и другие. Они предоставляют возможности для просмотра и редактирования данных, создания объектов, автодополнения SQL и мониторинга. Postgres Pro Enterprise также включает собственную графическую платформу управления PPEM, которая может упростить администрирование.

  3. Настройка через конфигурационные файлы:
  4. Основная настройка PostgreSQL выполняется через конфигурационный файл postgresql.conf. Здесь устанавливаются такие ключевые параметры, как:

    Правильная настройка этих параметров критически важна для производительности и стабильности работы 1С. Для облегчения настройки Postgres Pro под 1С, компания Postgres Professional выпустила официальный раздел документации "Настройка Postgres Pro для решений 1С", который содержит консолидированный набор рекомендаций (Best Practices).

  5. Операционная система для PostgreSQL:
  6. Для "1С" настоятельно рекомендуется использовать Linux в качестве операционной системы для PostgreSQL. Linux обеспечивает лучшую производительность, гибкость и низкие накладные расходы по сравнению с Windows. Это означает, что сервер приложений 1С также придется запускать на Linux либо размещать его на отдельном Windows-сервере, что может добавить сложности в виде задержек по сети между серверами.

  7. Требования к администратору:
  8. Использование PostgreSQL на Linux для 1С требует от администратора дополнительных компетенций в области администрирования Linux, сервера 1С на Linux и, конечно, самой PostgreSQL. Это не просто "поставил и работает", а требует глубокого понимания системы и умения ее тонко настраивать. Переход на такую схему может потребовать подготовки специального "геморройного" администратора или привлечения квалифицированных специалистов.

Особенности работы с 1С и потенциальные проблемы при переходе на PostgreSQL

При переходе с MS SQL на PostgreSQL для 1С:Предприятие следует учитывать ряд специфических проблем и особенностей, о которых говорят пользователи:

  1. Хранение базы данных и восстановление:
  2. PostgreSQL хранит базу данных в виде подкаталога в кластере СУБД. Это создает определенные трудности при восстановлении базы после переустановки операционной системы, поскольку база сама по себе не существует как независимый файл, а только как часть кластера. В MS SQL вы можете легко "приаттачить" любую базу данных по ее файлам, а в PostgreSQL это возможно только через процедуру резервного копирования и восстановления. Это важное отличие, требующее изменения подходов к бэкапированию и восстановлению данных.

  3. Поведение оптимизатора запросов:
  4. В PostgreSQL могут возникать проблемы с оптимизатором запросов, особенно если в запросе присутствуют соединения с неявными временными таблицами (подзапросами). Раньше это было актуально и для явных временных таблиц, но с добавлением онлайн-анализа ситуация улучшилась. Однако в случае неявных подзапросов проблема остается: движок выбирает стратегию соединения сразу для всего большого запроса, и если подзапрос может выдать много данных, то стратегия nested loop будет чрезмерно нагружать процессор. Postgres Pro активно работает над улучшением адаптивного оптимизатора запросов (AQO) для 1С, чтобы минимизировать эти проблемы.

    Как отмечают разработчики, "Никто не запрещает писать код так, чтобы проблемы не появлялись", но для типовых конфигураций 1С, особенно старых, это не всегда возможно. Для анализа и оптимизации запросов существуют такие инструменты, как pg_stat_statements и auto_explain.

  5. Проблемы с блокировками:
  6. В старых версиях конфигураций 1С (например, УПП или УТ 10.3) автоматические блокировки в PostgreSQL могут работать некорректно, приводя к блокировке целых таблиц и значительному росту конфликтов при одновременной работе нескольких пользователей. Один из пользователей описывал, как на УПП с двумя активными пользователями уже возникали вопросы к производительности, а с большим количеством — "смерть фашистам" из-за блокировок регистров накопления. Postgres Pro включает специальные патчи для 1С, поддерживающие режимы блокировок APPLICATION SHARE и APPLICATION EXCLUSIVE для лучшей совместимости. Также существуют решения для проблем с таймаутами блокировок при загрузке больших баз 1С. Рекомендуется, чтобы транзакции осуществляли блокировку ресурса сразу с необходимым уровнем изоляции.

  7. Оптимизация запросов 1С:
  8. При переходе на PostgreSQL для типовых конфигураций 1С (особенно ERP, УТ, КА) может потребоваться дополнительная доработка и оптимизация запросов. Современные версии ERP показывают значительные улучшения в работе с PostgreSQL, но "через точку и ещё раз через точку, а там составной тип" – такие запросы, которые MS SQL вытаскивал за счёт своего оптимизатора, могут сильно тормозить на PostgreSQL. Часто помогает приведение типов или переписывание части запросов. Новые конфигурации адаптируются, и со временем эти проблемы устраняются патчами как в платформе 1С, так и в самой СУБД. На Инфостарт есть множество статей и докладов по этой теме, где разбираются конкретные случаи и методы оптимизации.

Примеры производительности из опыта пользователей

Опыт пользователей, хотя и является анекдотическим, дает представление о потенциальных проблемах и успехах:

Заключительные рекомендации

Переход на PostgreSQL для 1С:Предприятие – это стратегическое решение, которое требует тщательного планирования и подготовки. Мы резюмируем ключевые аспекты:

  1. Оцените свои потребности и бюджет: Если у вас небольшая база и вы готовы к самостоятельной настройке, бесплатный PostgreSQL от 1С может быть достаточным. Для крупных компаний с высокой нагрузкой и потребностью в поддержке, Postgres Pro Enterprise (возможно, с лицензией для 1С) будет более подходящим выбором, несмотря на затраты.
  2. Готовьтесь к обучению и изменениям: Администрирование PostgreSQL, особенно на Linux, требует новых компетенций. Инвестиции в обучение персонала или привлечение квалифицированных специалистов будут необходимы.
  3. Тонкая настройка обязательна: В отличие от MS SQL, PostgreSQL требует глубокой и постоянной настройки параметров, таких как shared_buffers, work_mem и других, для достижения оптимальной производительности с 1С.
  4. Рассмотрите переход на Linux: Для максимальной эффективности PostgreSQL рекомендуется использовать на операционной системе Linux. Это потребует также переноса или адаптации сервера 1С.
  5. Будьте готовы к оптимизации кода 1С: Если вы используете старые или сильно модифицированные конфигурации, будьте готовы к тому, что некоторые запросы придется оптимизировать для PostgreSQL. Современные типовые конфигурации, как правило, лучше адаптированы.
  6. Не игнорируйте проблемы с блокировками: Особенно для старых конфигураций 1С, таких как УПП, проблемы с блокировками могут быть критическими. Используйте версии PostgreSQL с патчами, специально предназначенными для 1С, которые поддерживают корректные режимы блокировок.

В целом, PostgreSQL, особенно в варианте Postgres Pro, является полноценной и достойной альтернативой Microsoft SQL Server, соответствующей требованиям импортозамещения. Платформа "1С:Предприятие" активно развивается под PostgreSQL, и фирма "1С" использует модифицированную PostgreSQL для своих масштабных проектов. Поэтому, несмотря на некоторые вызовы, переход на эту СУБД является не только возможным, но и необходимым шагом для многих российских компаний.

← На главную