For decades, the world of software development has seen the rise of applications built upon the foundation of stored procedures. These procedures, when harnessed effectively, have the potential to create truly remarkable and high-performing applications.
From a computer science standpoint, it becomes evident that stored procedures offer a logical approach to handling the interplay between programs and data. If you pause to reflect, both a program and data share a common essence—they are, at their core, data. Each can be neatly confined within the confines of a thumb drive, represented by the binary language of zeros and ones. So, what sets them apart? In essence, it's a matter of scale. Typically, a program is dwarfed by the data it operates upon. If it were the other way around, you'd merely execute the program and directly utilize the resulting data, bypassing the need to run the program separately.
Therefore, in nearly every scenario, the program is inherently smaller than the data it manipulates. Yet, in the realm of computing, a curious phenomenon often occurs. Instead of transporting the more compact program to the vast expanse of data, we find ourselves hauling the substantial data to accommodate the program's limitations.
You might wonder why such a seemingly counterintuitive approach persists. The answer lies in the complexity of building applications with stored procedures. This approach can be arduous for various reasons. In a nutshell, it boils down to the challenging development environment—an environment that offers little solace to developers seeking to craft applications with finesse.
Looking back to the 1980s and early 1990s, this approach made sense. Relational databases were still in their infancy, the tools and programming languages were rudimentary at best. It was during this era that stored procedures earned a somewhat tarnished reputation.
However, it's crucial to recognize that this unfavorable image stemmed from the technological limitations of the late 1980s, not an inherent flaw in the concept of stored procedures. There are situations where stored procedures shine brilliantly.
Enter PL.NET. We posed a fundamental question: What if we merge a modern programming environment with a well-structured stored procedure system? What kind of development experience could we create? Our belief then, as it is now, remains unwavering: it can be an exceptional developer experience.
That's precisely the mission of PL.NET. It seamlessly marries one of the world's finest relational databases, PostgreSQL, with what we firmly believe to be one of the most robust application and web development frameworks— .NET. This fusion enables us to construct applications in a manner where the code coexists harmoniously with the data, instead of requiring data to be forcibly moved to accommodate the code. Consequently, this approach empowers us to craft applications that not only perform exceptionally well but also boast robust security. Moreover, it unlocks novel application patterns, all thanks to the symbiotic relationship between the programming environment and the data, allowing computation to occur in close proximity to the data.
In this new era of software development, the code comes to the data, and with it, a world of possibilities unfolds.