datascript

Immutable database and Datalog query engine for Clojure, ClojureScript and JS
2018-05-14T08:10:44.000022Z

@eslachance datascript is not organized around tables, but around attributes. There’s single “entities” space which stores ids, and any entity can have any attributes attached. If you need different “tables”, that would be namespaced attributes. E.g. one entity would have :guild/name and :guild/score attached, anothrer one would have :user/name and :user/email. That would create two entities of different “kind”, purely because of the types of attributes attached. There’s also a possiblity to “mix” entities or have shared attributes (e.g. everyone can have :name with no regard to entity type). I understand this sounds unconventional, but it’s actually quite a nice model to work with. It’s even more powerful in couple of ways that traditional tables