Project:M36 proposes unifying a relational algebra engine with what is commonly considered to be the application layer. Typically, the developer is faced with the “forced choice problem” whereby a developer must make an arbitrary choice between adding business logic via SQL or the application layer language (such as Python) and living with the consequences. Unifying the layers removes this arbitrariness as well as:
- eliminating type impedance mismatches, e.g between SQL INTEGER and Haskell Integer
- enabling algebraic data types to be stored and queried as proper database values
- allowing Haskell functions to be part of and versioned with the database schema
- eliminating the need to learn the baggage of an inconsistent, database-specific language
- centralizing access control within the database
- and more!
Project:M36 v1.2.5 introduces loading of standard Haskell modules (with some minimal scaffolding) into a relational database to be used as business logic from queries directly.
Read more about the motivations and benefits of this architecture.