Acadia: repensando la programación de bases de datos con tipos de extremo a extremo

Fuentes: Rethinking Database ProgrammingT4

Evan Czaplicki, creador de Elm, presenta Acadia, una herramienta que traslada a SQL los beneficios de los lenguajes con tipos precisos como Elm, Rust o Haskell. El proyecto surge de años de frustración con la desconexión entre los tipos definidos en la base de datos y los del código de cliente y servidor, un problema que el autor detectó tanto en su propio trabajo como en el de empresas que usan Elm.

Acadia permite definir tablas, endpoints y transacciones en un lenguaje funcional inspirado en Elm, actualmente con integración para Elm y Haskell. El compilador genera SQL de alta calidad en tiempo de compilación, evitando las habituales conversiones manuales a JSON, columnas nullable o layouts binarios improvisados. Entre sus características destacadas están: tipos personalizados almacenables de forma nativa, migraciones verificadas por el compilador (lo que elimina el miedo a tocar una base de datos en producción), mensajes de error comprensibles y tipos compartidos de extremo a extremo entre cliente, servidor y base de datos.

El lenguaje utiliza una sintaxis con map, filter y un operador de let-binding llamado ':=' para componer transacciones, similar al async/await. Todo se compila a SQL estándar compatible con SQLite y PostgreSQL, con optimizaciones automáticas y un visor del SQL generado. La motivación original se remonta a 2017, cuando Czaplicki buscaba mejor renderizado del lado del servidor en Elm; el diseño definitivo, tras explorar la idea de procedimientos almacenados, cristalizó en 2020 junto a Tereza Sokol. Tras un periodo de alpha privada, Acadia se publica ahora como alpha pública con binario, documentación y ejemplos descargables.