title

text

Алексей Фадеев
Алексей Фадеев
17:00 25 октября
90 мин

Plv8 Framework: разработка на plv8 в IDE, с ES6, отладкой, автотестами и деплоем

Многие разработчики прикладного ПО не любят выносить логику на сторону БД (в функции) из-за отсутствия удобных средств разработки, особенно командной. С plv8 ситуация осложняется тем, что функция содержит симбиоз кода SQL и JavaScript, популярные IDE такое не поддерживают. На этом мастер классе я представлю свою разработку "Plv8 Framework", позволяющую существенно облегчить создание кода на plv8.

Суть в следующем: тот же JS-код, который будет выполняться на стороне БД, можно запустить локально, прямо на машине разработчика, с помощью node.js, который работает на основе того же интерпретатора v8. Спецфункция plv8.execute подменяется на функцию из npm-библиотеки pg-native, т.е. происходит обращение к внешней СУБД. Я продемонстрирую авторский набор средств, позволяющий:
- писать js-код в вашей любимой IDE с подсветкой синтаксиса;
- отлаживать код в реальном времени (с breakpoint, watch и т.д.);
- писать автотесты (unit-тесты), с вариантами: постгрес, SQLite, моки;
- выполнять deploy кода в СУБД;
- использовать дополнительные npm-пакеты (проблема в том, что весь код функции на plv8 должен находиться в теле этой функции, т.е. в одном файле).

Инструмент можно использовать независимо от того, на чём вы разрабатываете бэкенд. Но особенную гибкость он придаёт, если вы используете языки со статической типизацией (java, C# и т.д.). Например для задач, где бэкенд является промежуточным слоем между фронтендом и СУБД, логика (или её часть) может быть вынесена в plv8/js с динамической типизацией, что может весьма облегчить процесс разработки.

Помимо возможности разрабатывать новые функции на plv8, фреймворк предоставляет набор готовых функций для выполнения CRUD-операций. Функции универсальные, не привязаны к структуре конкретной БД и могут работать на любых проектах. Их использование поможет сократить объём бэкенд разработки, на некоторых проектах - значительно.

Пожалуй, самое сложное с plv8 - установить это расширение. Но у меня хорошая новость: мои коллеги помогли подготовить докер-файлы и докер-образы для PostgreSQL версии 13 с уже установленным plv8! Теперь начать разработку на plv8 просто: нужно лишь развернуть контейнер одной командой.
Докер-файл: PostgreSQL 13 + plv8 v2.13.15
Демо-проект для участия в мастер-классе
Так же для мастер-класса пригодятся:
Node.js (желательно LTS)
IDE для js (например, бесплатная Visual Studio Code)
GraphQL Playground

слайды

Видео

Другие доклады

  • Никита Левченко
    Никита Левченко
    Юрий Плотников
    Юрий Плотников
    45 мин

    Из Oracle в Postgres по российским рельсам. Неочевидные нюансы

    Поговорим о наших подходах к выбору технических решений при проектировании архитектуры систем. Их преимущества и ограничения. Как менялась наша инженерная культура с учетом требований импортозамещения. История миграции системы с классической трехзвенной архитектурой с БД Oracle на PostgresPro. Большое внимание уделено инструментам переноса данных, а так же нюансам доработки Java/Kotlin приложений и совместимости SQL между двумя СУБД.

  • Владимир Сурдин
    Владимир Сурдин
    45 мин

    Мифы и заблуждения о Вселенной

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

  • Олег Бартунов
    Олег Бартунов
    45 мин

    Json or not Json. Плюсы и минусы использования Json в PostgreSQL

    Json сейчас является де-факто стандартом для разработчиков стартапов. Почему это происходит и что надо делать — учить разработчиков приложений, как правильно проектировать базу данных согласно канонам реляционной теории (которой Postgres очень хорошо соответствует) или сделать СУБД более дружественной для Json?

  • Владимир Слинько
    Владимир Слинько
    22 мин

    Обзор новых аппаратных возможностей платформы Intel

    Кратко о релевантных технологиях Intel: развитие CPU и в т.ч. возможностей для алгоритмов ИИ, Пирамида памяти скорость/объём > место PMEM, развитие шифрования, Программные инструменты для повышения производительности параллельных вычислений. Пара кейсов внедрения крупных проектов на PG + Intel