Keep your business-critical data in time

Crux is an open source document database with bitemporal graph queries.

Open
General-purpose DBMS with an unbundled architecture
Time
Interactive history for application users and developers
Store
Declarative graph queries across semi-structured data
THE DESIGN
Unbundled Database
Crux is an open source (MIT License) database with an architecture turned inside out, allowing you to combine pluggable components and avoid lock-in across the underlying technologies.

Get started with a basic configuration embedded within your application and upgrade when needed to use Apache Kafka and RocksDB for storing, indexing and querying across terabytes of documents in a scale-out cluster.
Bitemporal Time Machine
Record the true history of your business whilst also preserving an immutable transaction record - this is the essence of bitemporality. Unlock the ability to efficiently query through time, as a developer and as an application user. Crux enables you to create retroactive corrections, simplify historical data migrations and build an integrated view of out-of-order event data.

Bitemporality is built-in to the very core of Crux, which means it is managed by default, to keep your life simple and give you full control over the history of your data.
Transactional Document Graph
Crux is a document-oriented database that makes your data available for graph-like Datalog queries without the need for an upfront schema. Widely proven durable storage technologies such as Apache Kafka are used to safely persist your data whilst providing ACID transaction guarantees at scale.

Datalog gives you a simple format to express powerful and complex questions about your entire database. Your questions are answered using facts extracted from all of your implicitly interrelated and interconnected documents.
THE API
Transact with Documents
Clojure
			    (crux/submit-tx
 node
 [[:crux.tx/put
   {:crux.db/id :john-mccarthy
    :first-name "John"
    :last-name "McCarthy"
    :birth-date "04-09-1927"}]])
			    Example coming soon! 
			    Example coming soon! 
Transact with Documents
Four simple transaction operations enable you to work with your data as documents:
Put, Delete, CAS, Evict

Your documents are automatically indexed as a graph of entities for use during queries. Each operation also supports additional temporal coordinates for modifying the history of document versions. No schema is necessary and your documents only require an ID field.
Query the Graph
Clojure
			    (crux/q
 db
 '{:find [?last-name]
   :where [[?person :first-name "John"]]
           [?person :last-name ?last-name]]})
			    Example coming soon! 
			    Example coming soon! 
Query the Graph
Declarative queries expressed in Datalog enable you to efficiently analyse your graph of semi-structured documents, powered by a lazy join algorithm and recursive rules. This simple format is expressive and facilitates the composition of complex questions about your entire database.

Datalog is a credible alternative to SQL, with long-established industry usage and broad academic interest. At its core is the unification of logic variables that pattern-match over a database of facts and predicates using recursive rules.
Evict for Compliance
Clojure
			    (crux/submit-tx
 db
 [[:crux.tx/evict :john-mccarthy]])
			    curl -H "X-Header: Value" https://www.keycdn.com/ -v
			    public class Factorial
 {
     public static void main(String[] args)
     {
	 final int NUM_FACTS = 100;
	 for(int i = 0; i < NUM_FACTS; i++)
	     System.out.println( i + "" + factorial(i));
     }
     public static int factorial(int n)
     {	int result = 1;
	 for(int i = 2; i <= n; i++)
	     result *= i;
	 return result;
     }
}
Evict for Compliance
Legal regulations often pose a challenge when designing systems around immutable data, therefore the ability to efficiently "evict" individual document versions is provided as a core feature.

Comprehensive auditing and data eviction facilities help you to facilitate your organisation's compliance with data protection policies and requirements relating to the retention of sensitive data.
SUPPORT LOCATIONS
NORTH AMERICA
EUROPE
ASIA
For more information crux@juxt.pro
TRUSTED BY
Avisi develop enterprise add-ons for the Atlassian Marketplace. In addition to embedding Crux across their products they have released modules such as `crux-xodus`.
Leading vehicle parts distributor Oscaro use Crux to correlate price updates from suppliers and maintain accurate ERP records across over a million SKUs.
JUXT is a registered Confluent partner and our Kafka Connector for Crux (source and sink) has been independently validated and published on Confluent Hub.