Postgres как исконно российская СУБД

— Вы отстаиваете идею использования PostgreSQL в качестве национальной СУБД по программе импортозамещения. Это как многочисленные «национальные операционные системы» на базе Linux? Насколько вообще корректно называть продукт, созданный мировым сообществом, национальным?

Да, действительно, в реестр отечественного ПО входят более 40 ОС на базе Linux различных российских производителей. Все эти операционные системы неравнозначны. К сожалению, в некоторых случаях мы имеем дело с простым переклеиванием ярлыков, порой даже грубым и неаккуратным. Но многие российские производители по-настоящему работают и делают патчи для ядра Linux, развивают и создают свои пакетные репозитории, участвуют в жизни международного сообщества и занимаются просветительской деятельностью.


СУБД — система управления базами данных.

PostgreSQL — свободная объектно-реляционная система управления базами данных. Существует в реализациях для множества UNIX-подобных платформ, включая AIX, различные BSD-системы, HP-UX, IRIX, Linux, macOS, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows.


В случае с Postgres ситуация обстоит несколько иначе. С самого начала существования данной системы в ней было заметное российское участие. Когда Postgres стал open-source-проектом, в нем сразу принял участие программист из Красноярска Вадим Михеев, который написал несколько весьма значимых составляющих Postgres, актуальных и по сей день. Вскоре к проекту присоединился и я. Первым моим вкладом стала функциональность интернационализации, в том числе поддержка русского языка, которая позволила работать с алфавитами, отличными от латинского. И Postgres стал по-настоящему международным.

Фото: Антон Карлинер / «Хайтек»

C годами отечественный вклад в Postgres только увеличивался. Появились Федор Сигаев и Александр Коротков, ставшие ведущими разработчиками. Вместе мы улучшили расширяемость Postgres: создали возможность эффективной и быстрой работы со слабоструктурированными данными (JSONB), разработали специализированные индексы для поиска по ним и по пространственным данным, создали полнотекстовый поиск. Этот вклад признан во всем мире.


JSONB — оптимизированный способ хранения данных в формате JSON, позволяющий извлекать данные без полного синтаксического разбора.

JSON (JavaScript Object Notation) — простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript, определенного в стандарте ECMA-262 3rd Edition — December 1999. JSON — текстовый формат, полностью независимый от языка реализации, но он использует соглашения, знакомые программистам C-подобных языков, таких как C, C++, C#, Java, JavaScript, Perl, Python и многих других.


Есть и другой показатель вклада в СУБД — по количеству патчей, которые ежегодно поступают от участников из разных стран. Например, в release notes (замечания к версии программного продукта — «Хайтек») к 11-й версии упоминается около 25 человек с русскими фамилиями, из них 15 — сотрудники Postgres Professional. Это говорит о том, что российский вклад в Postgres больше, чем, например, вклад в население Земли или в мировой ВВП.

В условиях усиливающейся экономической глобализации единственный способ сделать свой национальный продукт (если не изобретать что-то кардинально новое) — это присоединиться к хорошему международному проекту с открытым кодом, внести в него свой вклад и достичь мирового признания.

Хочу обратить внимание, что в реестр отечественного ПО включен не open-source-продукт, а Postgres Pro — российская СУБД, права на которую принадлежат нашей компании. Она создана на базе Postgres с открытым кодом, но содержит существенные доработки, сделанные Postgres Professional по запросам наших клиентов — российских предприятий и организаций.

Крупнейшие мировые производители СУБД предупредили российские компании, попавшие в санкционный список, о прекращении сотрудничества по всем проектам, начавшимся после 29 января 2018 года. К вам уже стоит очередь из сбербанков, газпромов и лукойлов?

— Для многих российских организаций остро встала проблема санкционной устойчивости. Поэтому они, даже не находясь под санкциями, задумываются о возможных последствиях в случае, если все-таки попадут под них. Вполне логично подстраховаться, поскольку впадать в полную зависимость от зарубежного ПО — неприемлемый риск для многих организаций. В связи с этим мы активно работаем со многими, хотя и не всеми, крупными российскими компаниями и государственными структурами, в том числе с Минфином России и Сбербанком.

Фото: Антон Карлинер / «Хайтек»

— Чем принципиально отличаются свободно распространяемые и коммерческие версии PostgreSQL? Какой рост продаж у коммерческих версий?

— Коммерческих версий PostgreSQL, как таковых, нет. Правильно говорить о коммерческих продуктах на основе PostgreSQL. Наш продукт называется Postgres Pro. Это другая СУБД, которая выпускается в трех редакциях — Standard, Enterprise и Certified. Standard представляет собой наиболее актуальную, но официально еще не увидевшую свет версию open-source с некоторым количеством патчей от нашей компании. Как правило, это патчи, необходимые для работы с 1С, и отдельные багфиксы в интересах наших заказчиков. Версия Enterprise содержит гораздо больше существенных улучшений, необходимых для работы с большими объемами данных и большими транзакционными нагрузками. А Certified обладает сертификатом ФСТЭК. Главное отличие коммерческих продуктов на основе Postgres от open-source-проекта — наличие существенных доработок в плане безопасности, производительности и надежности, необходимых для использования СУБД в информационных системах промышленного масштаба и имеющих повышенные требования к безопасности .

В настоящее время мы наблюдаем усиление интереса к реальному импортозамещению в сфере ПО, которое в самые первые годы несколько буксовало. В связи с этим ожидается рост продаж Postgres Pro и положительная динамика.

— Есть ли «обратная связь» между ними, когда решения из коммерческого продукта переходят в свободно-распространяемый?

В мире есть множество компаний, которые создают решения на базе открытого Postgres. Если говорить о крупных компаниях, то это американская EnterpriseDB, английская 2ndQuadrant, японская Fujitsu и российская Postgres Professional. Под разными названиями эти компании выпускают на базе Postgres свои продукты, рассчитанные на энтерпрайзный рынок. При этом все компании активно участвуют в разработке открытой СУБД и существенную часть своих разработок отдают мировому сообществу. Так устроена экосистема Postgres. Коммерческие разработки ориентированы на рынок, и потому ведутся более интенсивно, чем open-source-проект. В результате чего «ванильный» Postgres в условиях свободной лицензии получает от коммерческих продуктов больше, чем если бы его лицензия накладывала ограничения и не позволяла создавать коммерческие продукты.

Целые продукты из коммерческой сферы перешли в open-source — CitusDB или Greenplum, например. Именно свободной лицензии Postgres обязан нынешним бурным ростом в мировом масштабе. В то же время есть компании, которые ведут разработки на его базе и не делятся ими с мировым сообществом. Например, Amazon Web Services (AWS).

Развитие Postgres

— PostgreSQL уже можно смело называть PostgreNoSQL?

— При желании можно, но и это будет не совсем точно. Есть другой термин — Not Only SQL (с англ. «не только SQL» — «Хайтек»), который означает, что современные реляционные СУБД приняли вызов со стороны NoSQL и сейчас прекрасно работают со слабоструктурированными данными. Движение Postgres в этом направлении началось в 2004 году: тогда мы разработали модуль Hstore, благодаря чему PostgreSQL стал первой реляционной системы с поддержкой слабоструктурированных данных.

Фото: Антон Карлинер / «Хайтек»

Следующий скачок был сделан через 10 лет, в 2014 году, когда мы реализовали поддержку формата JSONB. Этот формат представления данных позволяет не просто работать со слабоструктурированными данными, а делать это эффективно и быстро. Так что за этим сразу последовал рост популярности PostgreSQL во всем мире. И я связываю это с приходом NoSQL-ных пользователей. Сейчас JSON есть даже в стандарте SQL, и другие системы управления вслед за Postgres начали его поддерживать, но не столь эффективно.

Кстати, мы предпочитаем говорить не PostgreSQL, а Postgres — такое название проще произносится по-русски и признается сообществом. Именно так СУБД называлась до получения приставки SQL: изначально Майкл Стоунбрейкер разработал Postgres, потом она стала называться Postgres95 и, наконец, PostgreSQL.


SQL — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

NoSQL — термин, обозначающий ряд подходов, направленных на реализацию систем управления базами данных, имеющих существенные отличия от моделей, используемых в традиционных реляционных СУБД с доступом к данным средствами языка SQL.

Майкл Стоунбрейкер — американский ученый в области информатики, PhD, исследователь проблематики построения систем управления базами данных, профессор Калифорнийского университета в Беркли, с 2001 года — профессор Массачусетского технологического института. Разработчик СУБД, основатель Ingres и VoltDB.


— В 2016 году широко обсуждалась новость об отказе Uber от PostgreSQL в пользу другого продукта. В качестве причин назывались проблемы с репликацией, особенно при смене версии продукта, повреждения данных при невинных операциях и ряда других. Что изменилось с тех пор?

Как и у любого продукта, у Postgres имеются свои недостатки, но есть и способы их обойти. В свое время Uber решил не заниматься недостатками, а перейти на другую СУБД, с которой, вероятно, компания умела лучше обращаться. В то же время есть ничуть не менее нагруженные проекты, которые прекрасно работают на Postgres. Кроме того, в системе появилась логическая репликация, которой еще не было в 2016 году. Она обеспечивает бесшовную смену версий продукта. Также логическая репликация полностью пригодна для нагрузки «только на чтение». Ведется работа над исправлением ряда других проблем. В частности, в 12-й версии уже появился механизм подключаемых хранилищ, который в 13-й версии позволит создать подключаемое колоночное хранилище ZedStore и хранилище с UNDO-логом (ZHeap) (методы хранения и обработки данных в Postgres — «Хайтек»). И это сократит объем записи на диск.

Фото: Антон Карлинер / «Хайтек»

Когда мы увидим PostgreSQL не как продукт, а как облачный сервис?

Облачные сервисы на базе Postgres уже есть. За рубежом подобными сервисами занимается множество компаний, в том числе Amazon, Google, Alibaba и Microsoft. В России такой сервис предоставляют Яндекс и Mail.Ru. При этом количество облачных сервисов будет расти как в нашей стране, так и за рубежом.

Но чтобы Postgres полноценно использовал преимущества облачной среды, в него необходимо вносить ряд существенных изменений. Тогда производительность в облачной среде будет почти такой же высокой, как и в обычном режиме. Мы занимаемся такими разработками.

Postgres как наука

— Помимо прекрасного продукта, который вот уже более 20 лет использует весь интернет, вы развиваете и само СУБД-строение. Существуют ли какие-то русскоязычные курсы по технологиям построения, чтобы по ним можно было изучать предмет в вузах?

Да, мы мечтаем о том, чтобы отрасль СУБД-строения динамично развивалась в нашей стране. Безусловно, для этого необходимо готовить специалистов, знающих архитектуру и внутреннее устройство. Для содействия развитию этого направления мы пригласили профессора из Санкт-Петербургского государственного университета — Бориса Асеновича Новикова. Это научный деятель мировой величины в сфере систем управления. При нашей поддержке он написал учебник «Технологии баз данных». Первый том уже вышел. Сейчас идет работа над вторым. Борис Асенович по нашему приглашению также прочитал свой курс в МГУ в качестве межфакультетского факультатива. Видеозаписи постепенно выкладываются на сайте Postgres Professional, и с тремя лекциями этого курса уже можно ознакомиться.

Также при нашей поддержке доцент СибГУ имени М. Ф. Решетнева Евгений Павлович Моргунов разработал спецкурс «Язык SQL», позволяющий обрести фундаментальные знания в области систем управления базами данных. Второй год подряд этот курс с успехом читается в стенах ВШЭ. В качестве дополнения при поддержке компании Postgres Professional выпущен учебник «PostgreSQL. Основы языка SQL».

Весной этого года впервые в России мы запустили программу сертификации специалистов по PostgreSQL. Поскольку специалисты по Postgres становятся все более востребованными на российском рынке, необходимы единые стандарты и критерии для оценки уровня знаний. Во многом наша программа сертификации стала ответом на запросы заказчиков и партнеров.

— Каким вы видите будущее СУБД через 10–20 лет? Объектно-реляционные системы еще будут находить применение?

— Да, они еще будут находить применение. Эти СУБД базируются на строгой математической теории, и она еще долго будет актуальной. Мы не видим никаких причин, чтобы те прикладные задачи, для решения которых нужна классическая система, куда-то исчезли.

Фото: Антон Карлинер / «Хайтек»

Хотя модные веяния затрагивают и системы управления базами данных. Человечество работает всё с большим количеством данных. Раньше говорили об информационном взрыве, а потом оказалось, что этот взрыв непрерывный. В наше время появилось много различных датчиков, которые собирают информацию о работе бытовых приборов, автомобилей, самолетов, есть видеонаблюдение, генерирующее огромное количество информации в секунду. Потребителями и производителями информации теперь становятся сами машины. Всё это приводит к тому, что данных очень много, а значит, их надо где-то хранить. Соответственно, требуется больше систем, а для работы с ними не хватает специалистов. Поэтому оптимальный вариант — сделать так, чтобы СУБД применялись еще шире — создать возможность автоматического функционирования (без участия человека). Отсюда родилось такое понятие, как «самоуправляемая база данных», то есть не требующая администратора, который бы за ней присматривал. Подобными разработками занимается и Oracle, и сообщество Postgres, применяя технологии машинного обучения. В частности, наша компания активно работает над созданием адаптивной облачной СУБД. Машинное обучение уже применяется для адаптивной оптимизации запросов, и часть наработок уже доступна сообществу, а в планах еще большее применение технологий машинного обучения и ИИ.

Но вопрос не только в том, что данных становится очень много. Если раньше операционные и аналитические системы, то есть базы данных и вычисления были разнесены между собой, то сейчас вычисления приближаются к данным и в идеале должны совершаться одновременно с их поступлением. Так что уже недостаточно одной технологии OLTP — обработки транзакций в режиме реального времени. И недостаточно онлайн аналитики данных, то есть OLAP. На передний план выходит гибридная транзакционно-аналитическая обработка данных (HTAP), способная в режиме реального времени и стриминга совершать обработку данных и транзакций. При этом достигается высокое быстродействие, так как данные не нужно переносить из базы для вычислений, данные транзакций сразу доступны для аналитики с момента их создания. Так что технология HTAP наряду с облаками будет задавать тон в плане долгосрочного развития СУБД.

fbq('track', 'PageView');

(function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "http://connect.facebook.net/ru_RU/all.js#xfbml=1&appId=1490899384551422&version=v2.0"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));