Endatabas: An SQL Document Database with Full History

I was recently introduced to a new database called Endatabas, and the way it works is so interesting to me.

Check their very brief intro video out:

My takeaways

  • It has no schema.
  • When you insert data, the tables are autovivified.
  • The rows that you insert are documents that can be nested like a JSON object.
  • You query it with normal looking SQL.
    • Their dialect of SQL also supports some JSON-like notation that feels natural if you’re already familiar with JSON.
  • Their dialect of SQL doesn’t support DELETE but it has a special ERASE for those times you need to be GDPR compliant.
  • When you update rows, the old values are still in the database and can still be queried using special time queries that can give you the past states of the database.
  • It’s written in a combination of Rust and Common Lisp.
  • Despite its exotic build, it’s easy to run the docker container they provide.

I couldn’t stop thinking about it, so I ended up writing a Julia client library to talk to it.


The next time I feel like using SQLIte (which I also like a lot), I’m going to give Endatabas a try instead. Its ability to query past states could be very useful.