College of Computing and Informatics
Humanitarian
ScQuilL solves the current problems with Query languages into Object-oriented paradigm implementations, by creating an abstraction layer above traditional query languages (most notably SQL), meta-programming in the third iteration of the Scala language.
Quill is a Language Integrated Query (LINQ) system written in the Scala programming language. Its goal is to provide a flexible, composable, and user-friendly DSL to access a variety of databases, both traditional and distributed. Quill aims to create an abstraction layer above traditional query languages (most notably SQL) and provide features such as polymorphism and encapsulation to enhance the query paradigm. Such features have become increasingly necessary as corporate SQL codebases have vastly grown in complexity. Traditionally, an abstraction of SQL into Object-Oriented paradigms has fallen to the domain of Option-Relational Mapping (ORM) Systems. Unfortunately, these systems suffer from intractable impedance-mismatch issues. These issues make them difficult to use today, and entirely unfit for future-facing use cases such as Big Data, where fine-grained control over joins and execution frequency is a sine-qua-non. In response to these issues, Quill offers immunity to traditional impedance-mismatch problems as well as the ability to generate SQL queries during compile-time so that the developer is in full control of the entire data retrieval process. This capability is based upon Philip Wadler's ground-breaking work published in "A Practical Theory of Language Integrated Query." As the Scala language upon which Quill is written enters into its third major iteration (currently under the pseudonym "Dotty"), many of the language features are being reimagined from the ground up. This undertaking by the EPFL institute in Lausanne, Switzerland is rapidly approaching a commercial-grade release of Scala 3.0. Due to the differences in the meta-programming system of this new language, many of the internals of Quill must be rewritten in an entirely new paradigm. This presents some challenges and many opportunities. Once it is extended to Scala 3, Quill will have many new capabilities including the ability to share transpiled code with normal application code and the ability to recursively generate queries. This will allow Quill to express advanced business-logic constructs (during compile-time!) that are currently difficult or even impossible to express on the JVM!