# Endatabas: An SQL Document Database with Full History

**URL:** https://discourse.julialang.org/t/endatabas-an-sql-document-database-with-full-history/109230
**Category:** General Usage
**Tags:** database
**Created:** [January 25, 2024, 2:15am UTC](https://discourse.julialang.org/t/endatabas-an-sql-document-database-with-full-history/109230 "2024-01-25T02:15:37Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![g-gundam](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/g-gundam/32/47593_2.png) [@g-gundam](https://discourse.julialang.org/u/g-gundam)
#### Post date: [January 25, 2024, 2:15am UTC](https://discourse.julialang.org/t/endatabas-an-sql-document-database-with-full-history/109230/1 "2024-01-25T02:15:37Z")

</div>

I was recently introduced to a new database called **[Endatabas](https://www.endatabas.com/)**, and the way it works is so interesting to me.

Check their very brief intro video out:

[![](https://global.discourse-cdn.com/julialang/original/3X/5/4/5473345a7c0de64256c8847daf35b31ef7b348fe.jpeg "Endatabas (endb) Q3 2023 Phone-friendly Demo") ](https://www.youtube.com/watch?v=oDHGjUMqPvI)

## 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.

**[Endatabas.jl](https://github.com/g-gundam/Endatabas.jl)**

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.
