PLV8: Harnessing Low-Code JavaScript Capabilities with PostgreSQL

PLV8 Blog Cover.png

In the realm of IT development, innovation is key to staying ahead of the curve. PLV8, an influential PostgreSQL extension, offers a low-code approach that combines the power of JavaScript and SQL, providing IT developers with flexibility, performance, and endless possibilities. In this article, we will delve into PLV8, its advantages, and the remarkable journey of Alexey Fadeev, a prominent .NET developer and Postgres evangelist at Sibedge, who offered a simplified way to install the PLV8 extension for Postgres by using Docker Image.

Unveiling the Power of PLV8

PostgreSQL, a widely used non-commercial extensible open-source DBMS, offers a range of extensions, including PLV8. PLV8 is a procedural language built on the V8 engine, allowing developers to write JavaScript stored functions directly within the database. Over the past year, we have incorporated PLV8 into our projects, experiencing firsthand how it simplifies development across multiple tasks. Unfortunately, PLV8 remains underappreciated among developers due to the complexity of its build process, requiring advanced skills, substantial internet traffic, and temporary file storage.

Alexey Fadeev's Vision: A Simplified Installation Image

During the PGConf 2022 conference, Alexey Fadeev, a leading Sibedge .NET developer, unveiled a groundbreaking way aimed at simplifying the installation of the PLV8 extension. This approach holds immense potential for the professional community, streamlining the adoption and utilization of PLV8. Alexey has shared his journey while he was building the latest Postres distributive with PLV8 extension support, the impressive results it yielded.

Sibedge's Docker Image: A Milestone Achievement

Motivated by the need to make PLV8 more accessible, we embarked on a mission to build PLV8 ourselves, provide the assembly to our clients, and release it publicly. Initially, we shared the binary files on GitHub, significantly reducing the size of the collected SO-file by a factor of five, from 152 MB to 33 MB, using the Strip utility. However, we didn't stop there.

We took a step further and created a Postgres Docker image with PLV8 pre-installed, based on the Debian distribution. But we wanted to make the Docker image even smaller, which led us to build our own PLV8 extension for the Alpine distribution. This endeavor posed challenges as we were pioneers in this domain.

The obstacle we faced was that the assembly process from source code used a Google utility incompatible with Alpine. However, we discovered a valuable repository with a Dockerfile for building the V8 engine, which proved immensely helpful. Through perseverance and hard work, we successfully assembled and launched the PLV8 extension for Alpine. The image size was reduced from 154 MB to 85.8 MB, compared to the "pure" Postgres without PLV8, which is 77 MB.

Sharing the Fruit of Our Efforts

As a result, we proudly developed a public Docker image of Postgres with PLV8, providing a hassle-free installation process for all users. Our achievement of building the PLV8 extension for the Alpine distribution marked a significant milestone as the first in the world. Within a year, our Docker image garnered over 100K downloads from DockerHub.

Addressing the Arm64 Architecture

The demand for supporting the arm64 processor architecture arose when several people from different countries reached out to Sibedge inquiring about its feasibility. These individuals expressed interest in the compatibility of PLV8 with the arm64 architecture, specifically on new MacBooks equipped with M1 and M2 processors, which operate on this architecture. This unique requirement highlighted a crucial gap in the availability of Docker images that support this configuration.

Recognizing the significance of this demand, Sibedge took on the challenge of providing Docker images compatible with the arm64 architecture, catering to the needs of users with new MacBooks and silicon chip processors. This development ensured that PLV8 can now be seamlessly launched on these cutting-edge machines, filling a void that was previously unaddressed by the community.

Continued Support and Timely Updates

At Sibedge, we prioritize providing excellent support for our projects. We are committed to delivering the latest versions of our Docker images within a few days of the release of the corresponding Postgres updates. For example, when PostgreSQL 15.3 and 14.8 were released in May, we promptly published our updated Docker images for these versions, ensuring that our users can benefit from the latest enhancements and features.

Conclusion

Sibedge's journey in simplifying the installation process of the PLV8 extension has been met with resounding success. By addressing the complexities and challenges associated with PLV8's build process, Sibedge has created an image that streamlines the adoption and utilization of PLV8, empowering IT developers with low-code JavaScript capabilities within PostgreSQL.

With the added support for the arm64 architecture, Sibedge has catered to the needs of users with new MacBooks and silicon chip processors, expanding the reach and accessibility of PLV8. The commitment to providing timely updates and support ensures that users can stay up-to-date with the latest PostgreSQL versions and leverage the full potential of the PLV8 extension.

Discover the transformative capabilities of PLV8 by downloading our Docker images through the following commands:

Default version: https://hub.docker.com/r/sibedge/postgres-plv8
BigInt serialised version: https://hub.docker.com/r/sibedge/postgres-plv8-bigint
For more details and Docker files, visit our GitHub repository and don't forget to give us a star if our project is beneficial to you. This will help others to learn about our development: https://github.com/sibedge-llc/plv8-dockerfiles

Embrace the low-code power of PLV8 and unlock new dimensions in IT development, propelling your projects towards unprecedented success.