Elixir's Ecto: Functional-Relational Data Access Done Right
Relational databases provide a challenge for functional programmers: they're inherently mutable, but they're still the best choice for many applications due to their guarantees and performance. Fortunately, functional languages like Elixir - and the frameworks built around them - are re-inventing the way we do SQL, and the results are all positive. Join us and learn about Ecto, Elixir's answer to functional-relational data access. If you're sick of leaky abstractions, you'll love how it exposes the database for what it is. If you're building for the web, you'll love how its incorporation into the Phoenix web framework is modernizing web development. If you've had a bad experience with database abstractions in the past, you won't want to use anything else. Just don't call it an ORM.
Outline/Structure of the Talk
This talk shows how after 20 years of tire fire ORMs and spaghetti SQL concatenation, the data access world has realized dramatic improvements lead by functional languages and frameworks, with Elixir and Ecto in the vanguard. I talk about the "right" level of abstraction and how past technologies have missed the mark. I discuss macros, transaction management, performance footguns, validation, error handling and (naturally) state management. Far from the typical "what is library X", this talk explores concepts, paradigm shifts, and the all important "why" with productivity and correctness as the goals. It provides value for any functional programmer using SQL, and might just win some converts to Elixir from the audience.
The audience will learn how functional programming languages - and Elixir in particular - are improving the way we do data access in our applications. They'll see that the newest generation of functional application frameworks offers huge benefits in how we interface with relational databases compared to past technologies, and will leave motivated to try it for themselves and see.
Any functional programmer who uses a relational database
Prerequisites for Attendees
- Knowledge of functional programming fundamentals (immutable data, higher-order functions)
- Knowledge of relational database fundamentals (one-to-many relationships, many-to-many-relationships, basic SQL)