В условиях текущей рыночной ситуации, когда приобрести корпоративные лицензии 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С". Дистрибутивы доступны на releases.1c.ru. "1С" выпускает эти сборки со специальными патчами, которые оптимизированы для совместимости и повышения производительности с платформой "1С:Предприятие". Эти сборки могут включать автоматическую настройку конфигурации базы данных под ресурсы сервера, унифицированную структуру пакетов для Linux и базовую техническую поддержку, доступную через партнеров "1С". Этот вариант является бесплатным и подходит для тех, кто готов самостоятельно заниматься тонкой настройкой и поддержкой, или имеет ограниченный бюджет.
Эта коммерческая версия PostgreSQL разрабатывается российской компанией Postgres Professional. Она базируется на открытом исходном коде, но включает дополнительные функции, многочисленные оптимизации и инструменты, которые повышают ее надежность и производительность. Лицензируется Postgres Pro Standard по ядрам процессоров (или vCPU) и включает 1 год стандартной технической поддержки. Подходит для систем со средним уровнем нагрузки и для компаний, которые ценят наличие официальной поддержки и дополнительные возможности по сравнению с базовой PostgreSQL.
Это флагманская редакция от Postgres Professional, предназначенная для высоконагруженных систем и больших объемов данных, что особенно актуально для крупных предприятий, использующих, например, 1С:ERP Управление предприятием со 100+ пользователями. Postgres Pro Enterprise включает более 100 ключевых разработок, направленных на повышение надежности, безопасности и производительности. Среди уникальных функций – встроенный отказоустойчивый кластер BiHA, пулер соединений Proxima, встроенный механизм сжатия данных, интеллектуальная система оптимизации запросов (AQO) и графическая платформа управления PPEM. Эта версия также лицензируется по ядрам/vCPU, с годовой гарантированной технической поддержкой. Существует специальная лицензия "Postgres Pro Enterprise для 1С", которая позволяет использовать функционал Enterprise по более низкой цене, но только с платформой 1С.
Эти версии Standard или Enterprise дополнительно доработаны для обеспечения повышенной защищенности данных и имеют сертификаты ФСТЭК. Они критически важны для государственных учреждений и компаний, работающих с конфиденциальной информацией, где требуется соответствие строгим стандартам безопасности.
Таким образом, если бесплатный PostgreSQL от "1С" – это вариант "ваш геморрой, но бесплатно", то Postgres Pro (особенно Enterprise) – это "геморрой на двоих с поставщиком услуг", где вы платите за сниженный риск, дополнительные возможности и профессиональную поддержку. Для директорского состава этот выбор часто сводится к оценке рисков и стоимости владения.
Лицензирование Postgres Pro осуществляется "по ядрам" процессора (физическим или виртуальным), выделенным серверу СУБД. Минимально требуется лицензия на 2 ядра. В стоимость лицензии обычно включена стандартная техническая поддержка на 1 год. Лицензии для разработки и тестирования могут предоставляться бесплатно при покупке лицензий на продуктивный контур (обычно не более двух тестовых зон, не превышающих продуктивный контур по количеству ядер).
Стоимость Postgres Pro варьируется: лицензии на Postgres Pro Standard могут начинаться от 36 000 руб. за годовую подписку или 160 000 руб. за бессрочную лицензию на одно ядро. Postgres Pro Enterprise стоит значительно дороже – от 360 000 руб. за бессрочную лицензию на одно ядро. Эти цифры показывают, что использование высокопроизводительной версии PostgreSQL может стать существенной статьей расходов, сравнимой с некоторыми затратами на MS SQL в прошлом.
Вопрос производительности является одним из ключевых при выборе СУБД для 1С, особенно для высоконагруженных систем, таких как 1С:ERP с сотней пользователей. Рассмотрим динамику и текущее состояние:
Ранние тесты (около 2015 года) показывали, что MS SQL в среднем работал на 45% быстрее, чем PostgreSQL. Это объяснялось, в том числе, глубокой оптимизацией платформы 1С под MS SQL, а также более "грубой" работой PostgreSQL с блокировками и оптимизацией запросов.
Однако, более свежие тесты (2024-2025 годы) с 1С:ERP и сотнями пользователей показывают, что производительность PostgreSQL (версий 15-17.4) значительно улучшилась и может быть сопоставима с MS SQL 2022, особенно при правильной и тонкой настройке. Современные конфигурации 1С, такие как 1С:ERP, 1С:Управление торговлей, 1С:Комплексная автоматизация, адаптируются к работе с PostgreSQL, что позволяет им нормально функционировать даже на больших базах.
Важно отметить, что PostgreSQL требует обязательной тонкой настройки под конкретные задачи и ресурсы сервера, в отличие от MS SQL, который по умолчанию стремится использовать все доступные ресурсы и зачастую показывает хорошие результаты "из коробки". Этот аспект требует от администратора глубоких знаний и опыта.
В Postgres Pro реализованы многочисленные улучшения, специально нацеленные на работу с 1С. Среди них:
NOT EXISTS или NOT IN, которые преобразуются в более эффективные ANTI JOIN.Также рекомендуется отключать JIT-компиляцию (jit = off) для 1С, так как она может замедлять небольшие OLTP-запросы, характерные для работы платформы.
В итоге, хотя MS SQL на тяжелых нагрузках может выигрывать, современный PostgreSQL, особенно в версии Pro и при правильной настройке, является достойной заменой.
Администрирование PostgreSQL имеет свои особенности, которые могут быть непривычны для администраторов, привыкших к MS SQL Server Management Studio (SSMS).
В отличие от SSMS, для PostgreSQL существует ряд альтернативных графических инструментов, таких как DBeaver, HeidiSQL, TablePlus, OmniDB и другие. Они предоставляют возможности для просмотра и редактирования данных, создания объектов, автодополнения SQL и мониторинга. Postgres Pro Enterprise также включает собственную графическую платформу управления PPEM, которая может упростить администрирование.
Основная настройка PostgreSQL выполняется через конфигурационный файл postgresql.conf. Здесь устанавливаются такие ключевые параметры, как:
max_connections (максимальное количество одновременных подключений)shared_buffers (объем оперативной памяти, выделяемой для кэширования данных)work_mem (объем памяти для сортировки и хеширования)maintenance_work_mem (объем памяти для задач обслуживания, таких как VACUUM)Правильная настройка этих параметров критически важна для производительности и стабильности работы 1С. Для облегчения настройки Postgres Pro под 1С, компания Postgres Professional выпустила официальный раздел документации "Настройка Postgres Pro для решений 1С", который содержит консолидированный набор рекомендаций (Best Practices).
Для "1С" настоятельно рекомендуется использовать Linux в качестве операционной системы для PostgreSQL. Linux обеспечивает лучшую производительность, гибкость и низкие накладные расходы по сравнению с Windows. Это означает, что сервер приложений 1С также придется запускать на Linux либо размещать его на отдельном Windows-сервере, что может добавить сложности в виде задержек по сети между серверами.
Использование PostgreSQL на Linux для 1С требует от администратора дополнительных компетенций в области администрирования Linux, сервера 1С на Linux и, конечно, самой PostgreSQL. Это не просто "поставил и работает", а требует глубокого понимания системы и умения ее тонко настраивать. Переход на такую схему может потребовать подготовки специального "геморройного" администратора или привлечения квалифицированных специалистов.
При переходе с MS SQL на PostgreSQL для 1С:Предприятие следует учитывать ряд специфических проблем и особенностей, о которых говорят пользователи:
PostgreSQL хранит базу данных в виде подкаталога в кластере СУБД. Это создает определенные трудности при восстановлении базы после переустановки операционной системы, поскольку база сама по себе не существует как независимый файл, а только как часть кластера. В MS SQL вы можете легко "приаттачить" любую базу данных по ее файлам, а в PostgreSQL это возможно только через процедуру резервного копирования и восстановления. Это важное отличие, требующее изменения подходов к бэкапированию и восстановлению данных.
В PostgreSQL могут возникать проблемы с оптимизатором запросов, особенно если в запросе присутствуют соединения с неявными временными таблицами (подзапросами). Раньше это было актуально и для явных временных таблиц, но с добавлением онлайн-анализа ситуация улучшилась. Однако в случае неявных подзапросов проблема остается: движок выбирает стратегию соединения сразу для всего большого запроса, и если подзапрос может выдать много данных, то стратегия nested loop будет чрезмерно нагружать процессор. Postgres Pro активно работает над улучшением адаптивного оптимизатора запросов (AQO) для 1С, чтобы минимизировать эти проблемы.
Как отмечают разработчики, "Никто не запрещает писать код так, чтобы проблемы не появлялись", но для типовых конфигураций 1С, особенно старых, это не всегда возможно. Для анализа и оптимизации запросов существуют такие инструменты, как pg_stat_statements и auto_explain.
В старых версиях конфигураций 1С (например, УПП или УТ 10.3) автоматические блокировки в PostgreSQL могут работать некорректно, приводя к блокировке целых таблиц и значительному росту конфликтов при одновременной работе нескольких пользователей. Один из пользователей описывал, как на УПП с двумя активными пользователями уже возникали вопросы к производительности, а с большим количеством — "смерть фашистам" из-за блокировок регистров накопления. Postgres Pro включает специальные патчи для 1С, поддерживающие режимы блокировок APPLICATION SHARE и APPLICATION EXCLUSIVE для лучшей совместимости. Также существуют решения для проблем с таймаутами блокировок при загрузке больших баз 1С. Рекомендуется, чтобы транзакции осуществляли блокировку ресурса сразу с необходимым уровнем изоляции.
При переходе на PostgreSQL для типовых конфигураций 1С (особенно ERP, УТ, КА) может потребоваться дополнительная доработка и оптимизация запросов. Современные версии ERP показывают значительные улучшения в работе с PostgreSQL, но "через точку и ещё раз через точку, а там составной тип" – такие запросы, которые MS SQL вытаскивал за счёт своего оптимизатора, могут сильно тормозить на PostgreSQL. Часто помогает приведение типов или переписывание части запросов. Новые конфигурации адаптируются, и со временем эти проблемы устраняются патчами как в платформе 1С, так и в самой СУБД. На Инфостарт есть множество статей и докладов по этой теме, где разбираются конкретные случаи и методы оптимизации.
Опыт пользователей, хотя и является анекдотическим, дает представление о потенциальных проблемах и успехах:
ЗУП 2.5 на PostgreSQL (Windows): расчет зарплаты для 1000 сотрудников (база 17 Гб) занимал 15 минут, тогда как на MS SQL 2014 – 2-4 минуты. Однако позже выяснилось, что это могло быть связано с кривыми релизами платформы 1С, и проблемы были устранены в последующих обновлениях.КА (20 человек) "все тупит" на PostgreSQL, но тут же оговаривается, что сравнить не с чем, и железо в виртуалке, что может быть причиной.mssql express. Для нормальных объемов и размеров баз ранее чаще использовали MS SQL, но теперь ситуация меняется.Переход на PostgreSQL для 1С:Предприятие – это стратегическое решение, которое требует тщательного планирования и подготовки. Мы резюмируем ключевые аспекты:
Postgres Pro Enterprise (возможно, с лицензией для 1С) будет более подходящим выбором, несмотря на затраты.shared_buffers, work_mem и других, для достижения оптимальной производительности с 1С.УПП, проблемы с блокировками могут быть критическими. Используйте версии PostgreSQL с патчами, специально предназначенными для 1С, которые поддерживают корректные режимы блокировок.В целом, PostgreSQL, особенно в варианте Postgres Pro, является полноценной и достойной альтернативой Microsoft SQL Server, соответствующей требованиям импортозамещения. Платформа "1С:Предприятие" активно развивается под PostgreSQL, и фирма "1С" использует модифицированную PostgreSQL для своих масштабных проектов. Поэтому, несмотря на некоторые вызовы, переход на эту СУБД является не только возможным, но и необходимым шагом для многих российских компаний.