Crux Development Diary
Shoring Up Foundations

2019 was a pivotal year for Crux that surpassed our reasonable expectations, leaving us with an abundance of reasons to be excited for the roadmap and year ahead.

Whether you are a client, a partner, or just someone with a passion for simpler technology, we hope you find Crux to be an empowering database option for your upcoming projects.

Releasing 1.6

Just before the holidays began we released 1.6 (specifically 19.12-1.6.1-alpha) which included a broad mix of changes. If you’re looking for the complete list, see the CHANGELOG, but these are the highlights:

  • A new Docker Hub image of a Crux HTTP node built and deployed using the crux-docker module

  • Following a change to the sorting of tx-id we have bumped the node index version to 5 which means a re-index of all Crux nodes using the source transaction and document logs from Kafka (or JDBC) is required. Therefore any index backups/snapshots will need archiving otherwise restored nodes will fail to start. If you need help or guidance please get in touch. See issue #441

  • We have removed the ability to specify time ranges when using the evict command. Instead the full timeline of document versions for a given entity will be evicted by default. When attempting to re-index previous evict commands that do include time ranges, the indexer will simply stop and give you the opportunity to consider migration of document versions that you wish to keep. We intend to expand the possibilities and improve the user experience for any future implementation of time ranges for eviction. If you relied on this functionality then please let us know so we can re-prioritise the new solution. See PR#438

  • The start and end valid-time semantics for put and delete have been made consistent and intuitive. This now means that specifying an end valid-time with these operations will slice the entire section of the timeline instead of only taking effect up until the last document version within that range. See issue #326

  • Support for Java collection types with submitTx has been added which should improve productivity when using Crux from Java. See issue #372

Looking ahead

Upcoming priorities for the next release include:

  • Prometheus metrics

  • Transaction ingestion hooks that can be used for validation and subscription processing

  • A new await-tx API to augment and partially replace sync

  • Incremental changes to the evict operation behaviour

  • Ingestion performance improvements

Anyone who read our previous post may be curious for news about the Beta programme and General Availability plans - I will be covering that in a subsequent post very shortly.

We also started running our development showcases publicly which gives you an opportunity to meet the team, see what we’ve been busy thinking about and discuss new features whilst we’re still building them. Recordings are available on our YouTube channel. Follow us on Twitter or join the Zulip community chat to stay notified about upcoming showcases.

Finally, thank you to everyone that has supported the project and expressed excitement about Crux and bitemporality - your feedback is always invaluable! In particular, thank you to the wonderful contributors who have been sharing their experiences:

p.s. the banner photo of Jon speaking on the "Dealing with Data" panel was taken during Clojure/north, where Crux was first unveiled last April. Clojure/north is happening again this year 25-26th June, in Toronto. Incidentally, I hear there’s a once-in-a-lifetime conference happening in London on 10th July…

See you around!

Read more
aws   crux  
May 12, 2020
The Crux 'Document Store' Making it possible to store your documents in S3 + more
by James Henderson
crux   clojure  
Apr 06, 2020
by Johanna Antonelli
crux   clojure  
Mar 04, 2020
Metrics metrics and more metrics Know what your nodes are up to
by Tom Taylor