- Для кого актуальна PostgreSQL
- Сравнение MySQL и PostgreSQL в проектах на Битрикс
- Возможные сложности и ограничения
- Какие лицензии понадобятся
- Способы конвертации базы данных из формата MySQL в PostgreSQL
- Как заменить отключаемый функционал
Компания 1С-Битрикс поставляет свои решения с MySQL по умолчанию. Эта СУБД была выбрана в качестве основной для Битрикс24 и 1С-Битрикс:Управление сайтом по причинам, связанным с историей разработки, производительностью и требованиями массового внедрения. В 2010-х, когда создавался Битрикс, MySQL поддерживалась всеми хостинг-провайдерами, была проще в администрировании, требовала меньше ресурсов при более высокой скорости обработки простых запросов. В тот момент возможности Postgre казались избыточными на фоне высоких требований к качеству администрирования.
Но мир меняется. Всё больше проектов предъявляют особые требования к отказоустойчивости, масштабируемости, скорости обработки больших и неструктурированных данных, поддержке кластерной архитектуры. В этом плане у СУБД PostgreSQL есть ряд преимуществ, особенно в сложных и высоконагруженных B2B- и корпоративных решениях.
Для кого актуальна PostgreSQL
В первую очередь, для средних и крупных компаний, которые:
-
управляют нагруженными системами с большим объемом структурированных и неструктурированных данных, с преобладанием операций записи и сложными запросами;
-
хотят получить максимум производительности, но не желают идти на компромиссы в вопросах безопасности;
-
хотят иметь надежную альтернативу зарубежным СУБД и российскую поддержку;
-
должны работать на сертифицированном ФСТЭК ПО;
-
столкнулись тем, что MySQL не справляется с нагрузкой, или вынуждены мириться с её ограничениями;
-
планируют активный рост/масштабирование и хотят подготовить инфраструктуру заранее.
Сравнение MySQL и PostgreSQL в проектах на Битрикс
Обе СУБД подходят для работы с Битрикс24 и 1С-Битрикс:Управление сайтом несмотря на то, что в ряде случаев в них по-разному реализован механизм управления данными.
|
MySQL |
PostgreSQL |
Поддержка сложных типов данных и SQL-функций |
|
Полноценная поддержка стандартов SQL и расширенных типов данных:
|
Оконные функции и рекурсивные запросы |
|
|
Производительность и масштабируемость |
|
|
Надежность и отказоустойчивость |
|
|
Гарантия сохранности данных |
|
|
Гибкость и расширяемость |
|
|
Безопасность |
|
|
Поддержка NoSQL-функций |
|
|
Возможные сложности и ограничения
Битрикс24 — это OLTP-система (онлайн-транзакции, чаты, задачи), и для ее работы MySQL зачастую подходит лучше — производительность выше. Но если переезд неизбежен, то предлагаем обратить внимание на ряд особенностей, которые важно учесть при подготовке к миграции:
-
PostgreSQL — это не просто СУБД с лучшим масштабированием и производительностью. Отличается сама философия, и это важно учитывать перед принятием решения о внедрении или переходе, особенно если речь идет о «живом» проекте с историей. Postgre построена с учетом принципа «явное лучше неявного», поэтому база не будет «додумывать» за пользователя и прощать ошибки в коде. MySQL, наоборот, рассчитана на низкий порог входа. Учитывая это, стоит заранее оценить выигрыш в производительности/надежности по сравнению с затратами на переход и последующую поддержку.
-
Одинарные кавычки вместо двойных, регистрозависимость, правила конкатенации, операторы в регулярных выражениях — отличия в синтаксисе хоть и небольшие, но потребуется время на правку кода.
-
PostgreSQL умеет работать с пользовательскими типами данных, но относится к ним строже, часто требуя явного приведения типов. У какой-то части данных тип можно изменить с помощью регулярных выражений, например, TINYINT→SMALLINT, FLOAT→REAL, DOUBLE→DOUBLE PRECISION и т.д. Однако ряд типов может попортить кровь при миграции. Например, AUTO_INCREMENT не заметить на SEQUENCE, для каждого ENUM нужно создавать свой CUSTOM TYPE ENUM. Есть особенности работы с булевым типом и бинарниками.
-
Ряд системных функций MySQL работает и в PostgreSQL, но при миграции практически всегда потребуется переписать пользовательские функции и обновить синтаксис системных. Так, например, функции работы с JSON, оконные, специфические строковые, даты и времени, определения триггеров точно потребуют изменений. Ряд функций в MySQL не имеет аналогов в PostgreSQL и наоборот. MySQL-функция IF не имеет аналогов в PostgreSQL, поэтому часть функций придется переписать на NULLIF, часть — на CASE WHEN. Всё придется делать вручную, т.к. регулярками это не перепишешь.
-
Ограничения и особенности в запросах. MySQL прощает ошибки, а в Postgres нельзя делать HAVING без GROUP, нельзя сравнивать integer с пустой строкой, SELECT DISTINCT по JSON-полю не сработает без преобразования поля в текстовый тип, в WHERE обязательно должно быть условие. И таких нюансов — масса.
-
Группировка и сортировка. В Postgres опять всё гораздо серьезнее в этом плане. Например, нельзя выбирать поля, по которым не было группировки или агрегации. Т.е. нужно либо исключать эти поля, либо сделать агрегацию, либо добавить в группу. Но тогда поменяется структура запроса. А на живом проекте это может быть больно.
Какие лицензии понадобятся
PostgreSQL распространяется под собственной свободной лицензией, похожей на лицензии BSD или MIT. Документация на русском, но профессиональная поддержка платная.
Лицензия позволяет создавать на базе основного продукта различные, в том числе коммерческие, версии. Так, в России, компанией Postgres Professional разрабатывается дистрибутив Postgres Pro. Данная версия сертифицирована ФСТЭК и рядом крупных российских организаций для целей импортозамещения. Но если команда хорошо знакома с СУБД и не боится остаться без поддержки вендора, а требования по инфобезу не такие жесткие, то особого смысла переходить на коммерческую версию нет.
Для Битрикс24 на PostgreSQL требуется приобрести специальную лицензию «Энтерпрайз для Постгрес», т.к. обычная «Энтерпрайз» лицензия предназначена для MySQL. Если вы планируете переходить с MySQL на PostgreSQL, то для тестирования вендор предоставляет ключ на 6 месяцев.
Способы конвертации базы данных из формата MySQL в PostgreSQL
Для проектов, ранее работавших на MySQL существует несколько способов конвертировать базу данных:
-
вручную, через командную строку в консоли сервера
-
с помощью встроенного в Битрикс24 Мастера миграции
-
с помощью сторонних утилит: pg_dump и pgloader. Последняя поддерживает конвертацию «на лету», но требует указаний по конвертации типов данных (а их обычно много).
Вендор рекомендует использовать два первых варианта перехода и подготовил для них соответствующие инструкции. При выборе любого из способов нужно учитывать, что не все модули, работавшие в «Энтерпрайз», будут поддерживаться в «Энтерпрайз для Постгрес». После миграции часть функционала может быть отключена. Проверить это можно либо с помощью кода из инструкции, либо это произойдет автоматически в процессе работы мастера миграции.
В частности, будут отключены следующие модули:
-
BI-коннектор;
-
Wiki;
-
А/B-тестирование, Веб-аналитика, Конверсия, Реклама и баннеры;
-
Веб-сервисы и Веб-формы;
-
Конструктор отчетов и некоторые другие.
Другими словами, если переходить на Битрикс24 или 1С-Битрикс:Управление сайтом с поддержкой PostgreSQL, можно гарантированно остаться без аналитики и маркетинга «из коробки». Всего могут быть отключены до 18 модулей.
Как заменить отключаемый функционал
Часть отключаемых модулей редко используется и от них можно безболезненно отказаться. Например:
-
Модуль «Реклама и баннеры» позволяет организовать на сайте показ рекламных баннеров. Однако, если владельцы ресурса с лицензией Энтерпрайз не зарабатывают на монетизации рекламы на сайте, то модуль не особо нужен.
-
A/B-тестирование можно провести не только с помощью встроенного инструмента Б24. Для этого подойдут также Google Analytics, Google Optimize, «A/B эксперименты» и Varioqub от Яндекса, UX Rocket и другие.
-
Wiki — важная часть внутриорганизационного обучения, но этот модуль устарел и его постепенно заменили на более функциональную Базу знаний.
-
Документооборот. Такой же устаревающий модуль как и Wiki, которым редко пользуются. Задачу согласования документов чаще решают с помощью бизнес процессов, автоматизированных рабочих мест. Для кадрового документооборота есть встроенный КЭДО.
Входящих в сборку модулей хватает для решения большинства задач, но если требуется PostgreSQL наряду с чем-то редким и особенным — поможем. Разработаем модуль любой сложности под ваши требования.
Например, BI-коннектор предназначен для подключения к внешним BI-системам для обработки статистических данных, собираемых при работе портала и сайта. Очень полезная функциональность, но готовой альтернативы у него нет. Чтобы вы не теряли возможность принимать решения на основе данных, поможем интегрировать сайт или портал с внешней системой аналитики, например, Yandex Data Lens или Power BI. Если такое решение не подходит — создадим подсистему аналитики внутри Битрикс.
Задача перехода на PostgreSQL для крупных и нагруженных проектов нужная и полезная, но непростая. Если вы не готовы рисковать данными и делать все самостоятельно — заполните форму внизу. Наш аналитик свяжется в вами, чтобы организовать онлайн-встречу, где мы ответим на ваши вопросы и обсудим детали.
- аренда команды (от 2 человек, не менее 3 месяцев);
- итерации с фиксированной ценой (1-3 месяца длительностью).
- регулярные онлайн-планерки с заказчиком;
- квалифицированных специалистов;
- организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
- полную прозрачность и регулярность отчетов о результатах.
- нагруженный интернет-магазин;
- личный кабинет;
- оптовые продажи — B2B-платформа;
- маркетплейс;
- технический аудит сайта;
- Битрикс24 — корпоративные HR-порталы;
- Битрикс24 — построение CRM-системы;
- Битрикс24 — личные кабинеты сотрудников;
- Битрикс24 — аудит портала;
- 1С — интеграция с другими системами;
- 1С — доработка системы;
- маркетинг — комплексное интернет-продвижение;
- маркетинг — продвижение для B2B.
Статьи по теме




