На конференции Infostart Event 2022 редакция Инфостарта пообщалась с заместителем генерального директора Postgres Professional Иваном Панченко. Иван рассказал о том, как опыт совместного использования PostgreSQL и 1С повлиял на развитие этой открытой СУБД. И поделился соображениями, почему PostgreSQL смог стать самой перспективной СУБД для стартапов.
Сотрудничество фирмы «1С» и Postgres Professional сложилось давно. И сейчас так получилось, что PostgreSQL осталась единственной СУБД, которая поддерживается для 1С. Какие планы у вашей компании относительно этого сотрудничества?
Да, наше сотрудничество началось еще даже раньше, чем мы сформировались как компания. Postgres Professional основана в 2015-м году, а фирма «1С» начала поддерживать PostgreSQL где-то с 2010 года.
Оказалось, что это провидческое решение, потому что с каждым годом на PostgreSQL переходили все больше и больше компаний. И если несколько лет назад на PostgreSQL было около 10% от всех инсталляций 1С, то сейчас, я думаю, уже треть.
Использование PostgreSQL растет. Это связано с тем, что и сам он совершенствуется, начинает лучше работать с 1С. И 1С тоже идет навстречу, и тоже лучше работает с PostgreSQL. Особенно в последних версиях.
Сейчас пользователям 1С доступно несколько сборок PostgreSQL: ванильная, дистрибутивы, публикуемые 1С, и коммерческие продукты, в том числе ваш. Какие преимущества дают сборки Postgres Pro по сравнению с дистрибутивами из сервиса «Обновление программ»?
Наша компания выпускает продукт Postgres Pro, который имеет Standard и Enterprise-версии. Enterprise-версия Postgres Pro очень сильно отличается от обычного опенсорсного PostgreSQL, потому что там есть несколько важных фич, которые очень важны, в том числе, для 1С.
Прежде всего, это дисковая компрессия, о которой в своих докладах уже несколько раз рассказывал Антон Дорошкевич. Она позволяет 1С-ные базы сократить в несколько раз. Он говорил о том, что базу можно ужать до 7 раз. Понятно, что и ввод-вывод тоже за счет этого уменьшается. Поэтому все работает еще быстрее.
Там есть инкрементальный бэкап. И есть 64-разрядный счетчик транзакций, который позволяет полностью избежать проблемы, связанные с переполнением этого счетчика – так называемый Wraparound. Это если говорить об Enterprise версии.
Также у нас на сайте есть сборка свободного PostgreSQL с патчами для 1С. Она отличается от того, что выложено на портале 1С – там более оптимальные настройки для того, чтобы все работало «из коробки».
У Postgres Professional есть опция платной сервисной поддержки. Можете рассказать о преимуществах этой подписки, зачем покупать отдельный сервис?
Мы рекомендуем приобретать Postgres Pro Enterprise, где лицензии идут с сервисной поддержкой. Там для 1С – льготные цены, это обойдется в несколько раз дешевле, чем для не 1С. Поэтому самое выгодное и простое – брать Enterprise-версию, потому что голая поддержка Postgres стоит практически столько же, сколько с Enterprise-версией. А что касается сути самой поддержки, то как известно, из закона Мерфи следует, что каждая программа содержит как минимум один баг. Когда этот баг обнаруживается, возникает вопрос – кто его исправит?
Исправить баг могут только разработчики – те, кто умеет разрабатывать. Эти люди умеют также и исправлять ошибки, и они могут сделать это быстро. Практически все основные разработчики PostgreSQL, которые есть в России, работают в нашей компании. Они могут исправить любую ошибку. Поэтому быстрый доступ к фиксам и профессиональную консультацию высокого уровня по сколь угодно сложным проблемам можно получить только у тех, кто связан с разработкой продукта. А это – как раз компания Postgres Professional.
Вы на докладе рассказывали о возможностях 14-й и 15-й версии PostgreSQL. Какие преимущества есть в этих версиях для использования с 1С?
По поводу 15-й версии у нас пока не так много материалов по ее тестированию на реальных кейсах. Она еще должна пройти процедуру одобрения в фирме «1С».
Но что касается 14-й версии, там есть очень много оптимизаций. Например, в докладе я рассказывал про оптимизацию, связанную с тем, что не растет индекс сильно при массовых апдейтах одной и той же записи. Раньше индекс рос весьма заметно. Еще есть несколько оптимизаций, связанных с планировщиком, с сортировкой больших таблиц. Лучше посмотреть весь мой доклад, я сейчас не могу все пересказать.
Судя по отзывам, которые мы получаем от пользователей, с каждой версией PostgreSQL в среднем работает все быстрее и быстрее. К сожалению, скорость работы базы данных очень сильно зависит от того, какая нагрузка, какая конкретно прикладная система работает с базой. Поэтому нельзя сказать, что PostgreSQL работает на 20-30% быстрее. У всех результат будет свой.
У некоторых может быть он даже медленнее будет работать, особенно, когда вы еще не поняли, какие настройки нужно менять в связи с тем, что вы поставили новую версию. Но со временем вы разберетесь с настройками, а разработчики, опять же, могут исправить какие-то баги, и новая версия точно окажется быстрее предыдущей.
Доклад Ивана Панченко «Новое в 14-й и 15-й версиях Postgres». |
Сейчас очень актуальна проблема перехода на PostgreSQL, миграции с MS SQL. Есть ли существующие сценарии для такого перехода, отработанные инструменты, методики?
Тут нужно поблагодарить платформу 1С, потому что для прикладного разработчика совершенно не важно, с какой базой он работает. Все эти вопросы решаются на уровне платформы. Миграция выглядит так – выгрузил базу в dt-ник, загрузил его обратно в другую базу. Вот и все.
Другое дело, что после этого могут потребоваться какие-то настройки, связанные с производительностью. Но опыт такой работы в сообществе 1С уже накоплен. Есть люди, которые хорошо владеют этим, делятся на конференциях. Много есть и в документации.
Так что технически процедура миграции для 1С очень проста – те, кто работают не на платформе 1С, здесь завидуют тем, кто работает на платформе 1С.
Тем не менее при типовом переходе люди сталкиваются с необходимостью доработки запросов, с потерями производительности. Какие вы можете дать рекомендации – на что нужно обратить внимание?
В PostgreSQL есть общепринятое стандартное средство анализа производительности запросов. Например, есть логирование длинных запросов, с помощью которого можно легко узнать, какие запросы у вас исполняются долго. Посмотреть на них с точки зрения SQL, понять, чего им не хватает.
Вы можете использовать средство сбора статистики (о нем был доклад у Екатерины Соколовой), которое позволяет в реальном времени анализировать исполняющийся запрос – смотреть, в какой стадии он сколько времени проводит, где он сейчас находится, далеко ли он вообще до завершения.
Такие средства есть. Их много. Важно, что вам, 1С-никам повезло. У вас хорошая платформа, она решает за вас большую часть проблем. Миграция сравнительно безболезненна по сравнению с тем, что испытывают другие люди, у которых нет платформы 1С. Вам действительно повезло.
Люди, которые привыкли работать с MS SQL, привыкли к определенному уровню удобства интерфейса, к тому, что все инструменты находятся в единой экосистеме, а в сообществе PostgreSQL очень много консольных утилит, написанных разными авторами, и в основном приходится собирать весь этот пазл самостоятельно.
Это действительно так. Это связано с глубокими философскими отличиями PostgreSQL от MS SQL. Потому что PostgreSQL создавался как свободно распространяемый продукт сообщества. А MS SQL – это продукт, который создавался коммерческой компанией для того, чтобы продавать. Это разный путь. С другой стороны, PostgreSQL не мог бы быть другим. Будь он другим, он не был бы PostgreSQL, был бы еще один MS SQL.
Поэтому – да, никуда не денешься, он такой. Но есть компании, вроде нашей, которые работают над тем, чтобы пользователям стало лучше. В частности, мы разрабатываем средство, которое позволит облегчить администрирование. Я бы не сказал, что будет как у MS SQL. Будет по-другому. Мне кажется, что лучше. Но с этим подождем до следующей конференции Инфостарта. Пока еще этот продукт не готов для показа публике.
Когда ваша компания получила дополнительный спрос, связанный с импортозамещением, это как-то сказалось на необходимости расширения, масштабирования самой компании?
Наша компания действительно растет. Но прежде всего, нужно сказать, что переход с MS SQL, с Oracle на PostgreSQL – это не только наше российское импортозамещение. Это вообще мировой технологический тренд. Во всем мире сейчас все больше и больше новых компаний начинают делать свои продукты именно на PostgreSQL. Если вы поищете стартапы, которые начали работать с Oracle или MS SQL, вы таких не найдете. Все берут PostgreSQL или какие-то другие нереляционные базы. Но из реляционных баз выбирают именно PostgreSQL. Большая часть компаний.
А в чем причина? В бурном росте и развитии возможностей СУБД?
Причина в том, что, во-первых, PostgreSQL как свободный софт имеет низкую стоимость масштабирования, что крайне важно для стартапов. Во-вторых, он по своему технологическому уровню вполне достиг того, что нужно людям от Oracle и MS SQL. В большинстве случаев он им не уступает.
Можно посмотреть на то, что очень крупные компании достаточно давно используют PostgreSQL в качестве основной базы. Известно, например, что биллинг такой крупной системы как Skype изначально был создан на PostgreSQL, и он до сих пор, по-видимому, на PostgreSQL.
Компания Microsoft, между прочим, тоже является одним из разработчиков PostgreSQL. В частности, предоставляет PostgreSQL в своем облаке.
В Китае существует самый крупный в мире чат, который называется WeChat. Его биллинг тоже крутится на PostgreSQL. Того, что хватило WeChat, и того, что хватило Skype, точно хватит для вашей бухгалтерии.
Мне кажется, главная сложность перехода на PostgreSQL для 1С в том, что те запросы, которые исполнялись без проблем на MS SQL (например, обращение к срезу последних в регистре сведений), требуют переработки для адаптации.
Некоторые запросы – да. Но как рассказывают наши пользователи-1С-ники, с каждым годом проблем все меньше и меньше. Я все-таки смотрю на это оптимистично, думаю, что все это можно преодолеть.
Мы активно работаем над этим. Мы получаем довольно много фидбека от пользователей, в частности, от пользователей 1С. И делаем некие оптимизации в нашем планировщике запросов специально по запросам, которые приходят к нам от 1С-ников.
Довольно много изменений было сделано именно нашими российскими разработчиками в компании Postgres Pro, многие из которых попали потом и в опенсорсный PostgreSQL. И инициаторами этих изменений (генераторами этих проблем) как раз были именно случаи с 1С.
Поэтому – да, мы над этим работаем. И важно, что и со стороны фирмы «1С» тоже есть определенный прогресс в сторону PostgreSQL. По мере того как все больше и больше народу им пользуются, разработчики платформы 1С понимают, что это для них – важная СУБД.
И если в первые годы они учитывали совместимость с PostgreSQL по остаточному принципу, то в последние несколько лет фирма «1С» тоже предпринимает очень много усилий, чтобы запросы, которые генерирует платформа, были лучше адаптированы к PostgreSQL. Т.е. это путь, по которому мы идем навстречу друг другу.