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
Слайды
Fadeev-plv8framework.pptxВидео
Видео доступно участникам мероприятия, выполнившим вход в личный кабинет
Другие доклады
-
Руслан Усманов Федеральное казначейство Заместитель начальника управления
ПУР КС - подсистема “Электронного бюджета” Федерального казначейства РФ, реализованная на полностью импортозамещённом ПО
Создание полностью импортозамещенной компоненты государственной информационной системы на примере ПУР КС - подсистемы "Электронного бюджета", ключевой государственной интегрированной информационной системе управления общественными финансами. В презентации представлена архитектура подсистемы, история оптимизации производительности и описание мониторинга. Докладчик расскажет о плюсах и сложностях использования импортозамещённой системы для госсектора, а также о нюансах, которые стоит учесть ведомствам при внедрении open source решений и решений российских разработчиков.
-
Григорий Смолкин Postgres Professional инженер по эксплуатации
Бекап 1.5K кластеров с помощью pg_probackup
Без резервного копирования эксплуатация PostgreSQL недопустима. Постоянный рост количества кластеров PostgreSQL в эксплуатации создает всё новые и новые проблемы и вскрывает узкие места в выбранной схеме резервного копирования. Мы обсудим наш опыт эксплуатации pg_probackup в этих условиях.
-
Александр Никитин ЗАО ЦФТ Администратор баз данных
Работа с запросами с точки зрения DBA
Работа с запросами может внести огромный вклад в производительность сервера БД. В своём докладе я расскажу о том, какие инструменты мы используем, а также разберу некоторые примеры, которые встречались в нашей практике. Доклад будет интересен администраторам и разработчикам, которые хотели бы познакомиться с приёмами, которые мы используем в повседневной работе.
-
Пётр Девянин ГК Astra Linux Научный руководитель
Обеспечение доверия к системному ПО на примере ОС Astra Linux
Разработка безопасного системного ПО (например, ОС или СУБД), достижение доверия к нему – сложная научно-техническая задача. В докладе будет показано, как ее удается решать для сертифицированной по высшим классам защиты ОС Astra Linux. При этом будут раскрыты основные направления этой деятельности, начиная с участия в формировании профильных национальных стандартов, далее разрабатывая и верифицируя формальную модель управления доступом, как основу составляющего поверхность атаки собственного механизма защиты ОС, затем применяя методы и технологии статического и динамического анализа программного кода, и завершая сбором и аналитической обработкой данных, получаемых в ходе анализа программного кода ОС, с исправлением найденных в нем ошибок в рамках практики непрерывной интеграции.