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.
Just before the holidays began we released
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
A new Docker Hub image of a Crux HTTP node built and deployed using the
Following a change to the sorting of
tx-idwe have bumped the node index version to
5which 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
evictcommand. Instead the full timeline of document versions for a given entity will be evicted by default. When attempting to re-index previous
evictcommands 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
deletehave 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
submitTxhas been added which should improve productivity when using Crux from Java. See issue #372
Upcoming priorities for the next release include:
Transaction ingestion hooks that can be used for validation and subscription processing
await-txAPI to augment and partially replace
Incremental changes to the
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:
Avisi’s database migration story for their Atlassian Marketplace apps
graph-demo, also featuring Fulcro and Pathom (using EQL as a kind of "pull syntax" for Crux!)
Ian’s Kotlin interop example
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!