Веб-разработчики узнали о программировании в Postgres на языках PL/Perl, PL/Python и PL/v8
16-18 июня 2017 года в Москве проходила конференция DevConf, собравшая более тысячи профессиональных и будущих веб-разработчиков. Заместитель генерального директора Postgres Professional Иван Панченко в секции по базам данных сделал доклад о server-side программировании в PostgreSQL на обычных интерпретируемых языках.
Одним из проявлений расширяемости Постгреса является возможность подключать процедурные языки для серверного программирования. Чтобы подключить новый язык, достаточно написать функцию, исполняющую процедуру на данном языке, получающую её текст на вход. В идеале лучше написать еще две функции — для проверки синтаксиса и для выполнения безымянных блоков кода. В комплекте с поставкой Postgres помимо традиционного для баз данных SQL-подобного процедурного языка PL/PgSQL идут PL/TCL, PL/Perl и PL/Python. Весьма популярен также Javascript (PL/v8). Эти языки предоставляют ряд дополнительных возможностей по сравнению с PL/PgSQL и в ряде случаев дают выигрыш в производительности, но пока они недооценены пользователями.
Языки в PostgreSQL делятся на trusted (доверенные) – PL/PgSQL, PL/Perl, PL/v8 и untrusted (недоверенные) – PL/Python, PL/Perlu. Недоверенными являются языки, в которых пользователь имеет доступ к операциям ввода-вывода, а в доверенных языках эти и некоторые другие возможности ограничены. Поэтому в доверенных языках создание функции доступно любому пользователю, а в недоверенных – только суперпользователю. В докладе Иван Панченко разобрал особенности подключения и работы с каждым языком в PostgreSQL: создание интерпретатора, управление памятью, подключение бибилиотек, работу с типами данных, и оценил производительность работы на одинаковых задачах. Подробности можно узнать из презентации.
![](/media/2017/06/22/devconf_corr.png)