Crux - bi-temporal schema-less document database
Crux is a general purpose database with graph-oriented bitemporal indexes. Datalog, SQL & EQL queries are supported along with Java, HTTP & Clojure APIs. The Datalog query interface that can be used to express complex joins and recursive graph traversals.
Follow the Crux Earth Assignment Tutorial, in either the self-contained Next-Journal environment or as your own Clojure project. Install Crux as a library in a Clojure project or use the pre-built dockker image.
Experiment with the Crux-labs workshop project, which contains examples of using Crux.
- Library dependency (clojars)
- Reference Documentation
- Community discussions (Zulip)
- GitHub discussions
Unbundled architectural overview
Crux follows an unbundled architectural, decoupled components communicating via an immutable log and document store.
crux-rocksdb is the high performance default data store, with a range of storage options available for embedded usage and cloud scaling.
Crux embraces the transaction log as the central point of coordination when running as a distributed system. Use of a separate document store enables simple eviction of active and historical data to assist with technical compliance for information privacy regulations.
This design makes it feasible and desirable to embed Crux nodes directly within your application processes, which reduces deployment complexity and eliminates round-trip overheads when running complex application queries.