Just released v0.16.1 of the meta-DSL library Molecule (Github | Gitter | Docs) that makes it intuitive and type-safe in Scala to access the Datomic accumulate-only database where you can also query data back in time.
Molecule is a “meta-DSL” in that it generates boilerplate code from your initial schema definition so that
you can intuitively use the tokens of your domain as the core building blocks of queries and transactions:
Await.result( // Asynchronously get Person data and related Address Person.name.age.Address.street.getAsync, 1 second ) === List( ("Lisa", 20, "Broadway"), ("John", 22, "Fifth Avenue") )
Hope you’ll give it a spin! Any feedback is welcome.
Highlights of Molecule:
- Intuitively use your domain terms as query tokens
- Fully implemented Sync/Async APIs
- Model any RDBMS, Graph, Document, KV-store etc.
- Datalog queries for Datomic built at compile time
- Nested queries of hierarchical data
- Atomic transaction functions
- Add meta data to transactions
- Cross-cutting associative relationships
- Developed and tested over the last 4 years (reached some maturity)
- Fully documented (Docs)
Highlights of Datomic:
- Fully transactional, cloud-ready, distributed database
- Elastic scaling
- Built-in caching - extremely low latency
- Built-in auditing - query entire history of data
- ACID-compliant transactions
- Flexible and sound data model