Tired of Impedence Mismatch? Meet Quill!
With the right toolset, an impossible problem can become solvable, and with the right abstraction, the inscrutable comes within reach. Examples of these things are Calculus, Polar Coordinates, and the Rosetta Stone. Programming languages are a human construct made to solve a particular problem, but their true power comes from their faithfulness to higher mathematics.
I love SQL because it gives me the power to talk to virtually any datastore and I love Objects because they give me the ability to reason about any discrete thing. However, it is only within the union of Functional Programming, that both of them can live together in harmony; the promises of category theory ensure it.
This is exemplified by the Quill framework of which I am a maintainer, and that I have used to build traditional database applications, as well as formidable ETL and Big-Data pipelines for the Financial Sector.
No video of the event yet, sorry!
If there is one thing that can be learned from a generation of ORM frameworks, it is that treating a database like a fancy hashtable does not work, yet this is exactly what most entity-managers will do! In a proverbial sense, one can imagine that the problems of impedance mismatch are akin to those experienced when taking a Commanche helicopter and racing it around a Formula-1 race track against McLarens. Databases can beautifully optimize set-operations like
INSERT around the innate limitations of hardware resources, but a cascade of individual queries will easily choke them. We commonly refer to this issue as the N+1 Problem, and the somber consequence of it is that one has to choose between database performance and Object Oriented development.
What if there was another path? What if there was a unique way to use the immense power of Scala Functional Programming to combine the Object Oriented and Relational models, that leverages the innate strengths of databases instead of harping on their weaknesses? What if you could compose a vast amount of business logic that lives in a whole library of objects into a single update query? Even better, what if you could see, or even probe that query automatically while your code is being compiled? Finally, what if you could integrate this whole process into your existing Java toolset?
Think this is all too good to be true? Join me in an introduction to the Quill Open Source framework and find out!
- 20 min
- Postgres Conference 2020