2010-10-03

Опыт участия в разработке открытой СУБД PostgreSQL

Олег Бартунов (ГАИШ МГУ), Федор Сигаев (ГАИШ МГУ)

В докладе представлен опыт участия российских разработчиков в крупном проекте с открытым кодом, СУБД PostgreSQL. Авторы входят в число ведущих разработчиков, ими реализованы многие важные подсистемы СУБД PostgreSQL. Они принимают активное участие во всех крупнейших конференциях разработчиков и пользователей, как международных, так и российских.

Российское участие в проекте началось в конце 90-х годов, когда проект из академической разработки стал проектом сообщества и возникла потребность в использовании его в российском проекте. Реализация поддержки локализации (Олег Бартунов) позволила полноценно использовать СУБД PostgreSQL в non-ASCII странах, что способствовало распространению проекта. Дальнейшее российское участие связано с необходимостью использования СУБД PostgreSQL в крупнейшем проекте Rambler, в связи с чем Олег Бартунов и Федор Сигаев получили поддержку их работы над системой расширяемости PostgreSQL, так называемой GiST (Generalized Search Tree), которая позволяла стороннему программисту (не-разработчику движка бд) реализовывать новые полноценные типы данных поддержкой, т.е., типы данных могли иметь новые запросов и ускоряться индексами. Существующая академическая реализация не была рассчитана на какое-либо серьезное использование в крупном проекте, например, не было поддержки конкурентности и восстанавливания после сбоев. Успешная реализация GiST ускорила работу над созданием новых типов данных, что привело к появлению таких расширений, как полнотекстовый поиск, поддержку работы с массивами, поиску с ошибками, возможность работы со слабо-структурированными данными и многих других, реализованных другими разработчиками. Дальнейшая работа над полнотекстовым поиском привела к созданию нового типа индекса, GIN (Generalized Inverted Index) - обобщенного обратного индекса, своеобразному аналогу GiST. Использование PostgreSQL в GIS (расширение PostGIS является самым известным открытым проектом в области геоинформационных систем) привело к необходимости масштабирования PostgreSQL в сторону очень больших баз данных, в частности, к очень быстрому поиску ближайших соседей (k-nn search), что привело к дальнейшему улучшению подсистемы расширяемости GiST и реализации k-nn поиска с индексной поддержкой в ядре PostgreSQL и в настоящее время проходит период рецензирования для следующего релиза.

Надо отметить, что авторы работали над улучшением PostgreSQL в чисто практических целях, для нужд конкретных проектов, однако, как это бывает в крупных проектах, приходилось очень много работать для того, чтобы разработки были приняты сообществом и вошли в состав дистрибутива. Подобная практика накладывает особые требования к процессу разработки, но и позволяет более тщательное тестирование. Практически все разработки авторов входят в состав дистрибутива СУБД PostgreSQL, и, следовательно, доступны миллионам пользователям.

СУБД PostgreSQL активно используется астрономическим сообществом для работы с очень большими каталогами (миллиарды записей) небесных объектов. Для эффективной работы с таким каталогами требуется поддержка сферических координат, которая до недавнего времени была реализована только для коммерческой СУБД MS SQL (HTM - разбиение сферы на иерархические треугольники) командой под руководством Jim Gray. Лучшей альтернативой сейчас является расширение Q3C, написанное для PostgreSQL в ГАИШ МГУ Сергеем Копосовым при участии Олега Бартунова и которое широко используется не только в астрономии, но и в науках о Земле.

Отметим постоянную поддержку РФФИ, которая наряду с поддержкой заинтересованных компаний, позволила авторам реализовывать свои идеи и занять ведущее положение среди разработчиков проекта.

В докладе, также, будут затронуты вопросы продвижения разработчиков в крупных проектах и причины слабого присутствия российских разработчиков в них.

=

Российские спонсоры

  • Рамблер
  • РФФИ
  • 1C

Зарубежные спонсоры

  • Много (>10)
=

Российские участники:

  • Вадим Михеев (1995 – 10-Aug-2003) - реализация MVCC, WAL, SUBSELECT
  • Олег Бартунов (1996 – ) - поддержка локализации, GiST, GIN, полнотекстовый поиск
  • Федов Сигаев (2000 – ) - GiST, GIN, полнотекстовый поиск,…
  • Сергей Карпов (2007 – ) - поддержка полнотекстового поиска
  • Николай Самохвалов ( 2007 ) - поддержка XML
  • Алексей Борзов - веб-сайт PostgreSQL