PLV8: использование Low-Code возможностей JavaScript в PostgreSQL

PLV8 Blog Cover.png

В ИТ-сфере инновации являются ключом к тому, чтобы оставаться на шаг впереди конкурентов. Расширение PLV8 для PostgreSQL сочетает в себе мощь JavaScript и SQL, предоставляя разработчикам гибкость с минимальным использованием кода, производительность и практически бесконечные возможности. В этом материале мы углубимся в PLV8 и его преимущества. А также расскажем об упрощённом способе установки расширения PLV8 для PostgreSQL, который предложил Алексей Фадеев, известный .NET-разработчик и евангелист Postgres в Sibedge.

Раскрытие возможностей PLV8

PostgreSQL — популярная некоммерческая расширяемая СУБД с открытым исходным кодом, для которой существует множество расширений, включая PLV8. PLV8 — процедурный язык, построенный на движке V8. Он позволяет писать хранимые функции JavaScript непосредственно в базе данных. За последний год мы внедрили PLV8 в наши проекты и на собственном опыте убедились, что он упрощает решение множества задач. К сожалению, PLV8 недооценён разработчиками из-за сложности процесса сборки, который требует продвинутых навыков, большого объёма интернет-трафика и места под хранение временных файлов.

Упрощённая установка

На конференции PGConf 2022 Алексей Фадеев представил способ быстрой и простой установки расширения PLV8. Этот подход имеет огромный потенциал для профессионального сообщества, упрощая внедрение и использование PLV8. Алексей поделился с коллегами опытом в сборке последнего дистрибутива PostgreSQL с поддержкой расширения PLV8, а также впечатляющими результатами, которых ему удалось достичь.

Docker-образ от Sibedge

В своём стремлении сделать PLV8 доступнее, мы решили создать собственную сборку и предложить решение нашим клиентам, опубликовав его в свободном доступе. Изначально мы выложили бинарные файлы на GitHub, уменьшив размер собираемого SO-файла с помощью утилиты Strip в пять раз: со 152 МБ до 33 МБ. Однако на достигнутом не остановились.

Следующим шагом стало создание Docker-образа PostgreSQL с предустановленным PLV8 на основе дистрибутива Debian. Но мы хотели сделать образ еще меньше, поэтому создали собственное расширение PLV8 для дистрибутива Alpine. Это было связано с рядом проблем, поскольку мы оказались пионерами в этой области.

Основная проблема заключалось в том, что в процессе сборки из исходного кода использовалась утилита Google, несовместимая с Alpine. К счастью, мы обнаружили репозиторий с Dockerfile для сборки движка V8, который оказался чрезвычайно полезным. В итоге нам удалось успешно собрать и запустить расширение PLV8 для Alpine. Размер образа уменьшился со 154 МБ до 85,8 МБ. Для сравнения, чистый PostgreSQL без PLV8 весит 77 МБ.

Публичный доступ к Docker-образу

Мы опубликовали Docker-образ PostgreSQL с PLV8 в свободном доступе, что позволяет любому пользователю осуществить простую установку. Сборка для дистрибутива Alpine стала первой в мире, что можно считать достижением не только для Sibedge, но и для всего PostgreSQL-комьюнити. В течение года наш образ был загружен с DockerHub более 100 000 раз.

Поддержка архитектуры ARM64

Несколько пользователей из разных стран обратились к Sibedge, чтобы узнать о возможности поддержки архитектуры ARM64. Они выразили заинтересованность в совместимости PLV8 с архитектурой, которая используется, например, в новых MacBook с процессорами M1 и M2. Запрос подсветил проблему отсутствия Docker-образов, которые поддерживали бы это железо.

Компания Sibedge пошла навстречу владельцам новых лэптопов и создала Docker-образы, совместимые с ARM64. Это обеспечило беспрепятственный запуск PLV8 на последних моделях MacBook с новыми процессорами Apple, заполнив пробел, который ранее не рассматривался профессиональным сообществом.

Непрерывная поддержка и обновления

Мы уделяем первоочередное внимание непрерывной поддержке наших проектов. Стремимся публиковать свежие версии наших Docker-образов в течение нескольких дней после выхода обновлений PostgreSQL. Например, когда в мае 2023 года вышли PostgreSQL 15.3 и 14.8, мы оперативно опубликовали обновленные образы для этих версий, чтобы наши пользователи могли воспользоваться всеми улучшениями и новыми функциями.

Заключение

Опыт Sibedge в упрощении процесса установки PLV8 можно считать успешным. Устранив сложности, мы создали образ, который упрощает внедрение расширения и позволяет разработчикам в полной мере использовать Low-Code возможности JavaScript в PostgreSQL.

Поддержка архитектуры ARM64 удовлетворила потребности владельцев компьютеров на базе процессоров M1 и M2, расширив возможности и доступность PLV8. А выпуск своевременных обновлений и непрерывная поддержка являются гарантией того, что разработчики смогут использовать последние версии PostgreSQL и весь потенциал расширения PLV8.

Откройте для себя возможности PLV8, загрузив наши Docker-образы:

Версия по умолчанию: https://hub.docker.com/r/sibedge/postgres-plv8
Сериализованная версия BigInt: https://hub.docker.com/r/sibedge/postgres-plv8-bigint

Для получения дополнительной информации и Docker-файлов посетите наш репозиторий GitHub и не забудьте поставить звезду, если наш проект приносит вам пользу. Это поможет другим пользователям узнать о нашей разработке: https://github.com/sibedge-llc/plv8-dockerfiles