I’ve been working with Ecto for the past year on an Elixir project and I really like it. The Ecto.Query module ships a DSL that exposes a declarative, SQL-based syntax for composing queries. You’re still not writing SQL directly (although you can), but I’ve found the structure of Ecto queries to very closely match the SQL equivalent. In general, it feels a lot more like writing SQL than anything else. Coming from ORMs in Ruby (ActiveRecord) and Node.js (Bookshelf/Knex), I much prefer Ecto’s DSL over chains of method calls.