The crew behind distributed NoSQL database Couchbase Server have released a beta of version 6.5 of their project, looking for comments on new features such as distributed ACID transactions as well as query and eventing enhancements.
When incorporating earlier releases, users had to model cases needing multi-document ACID in their application. In v6.5 of Couchbase Server however, the database tier itself supports atomic, consistent, isolated, durable transactions across documents, buckets and nodes, making devs life a little easier. Couchbase will now for example change all (or none at all) impacted documents within the boundary of a transaction and make sure writes are only visible when durably replicated and persisted.
The new version works on a “read committed” level of isolation, meaning that statements can only read committed data. This is meant to prevent so called dirty reads, in which a statement has access to data modified by a transaction, that wasn’t yet committed at the time of reading.
Devs who want to have bucket operations performed from inside a function can make use of the native cURL support that was redesigned for reliability and security as part of the current release. Eventing functions are now also able to change documents on a source bucket, accommodating use cases such as cascade updates or the deletion of dependent documents.
Since not everyone is on the NoSQL-boat yet, the Couchbase team added a developer preview for collections to their project. Those are meant to entice friends of relational databases to make the switch by offering a way of keeping similar documents together (almost like tables would do) and grouping related collections in scopes.
In terms of queries, version 6.5 comes with window functions equivalent to those in the RDBMS ANSI standard for complex queries, and functionality for fuzzy text search. It also includes developer previews for user-defined functions, as well as for a cost-based optimiser and an index advisor that are meant to improve query performance.
Apart from that, the SDK made a jump to v3.0, which features simplified asynchronous programming as well improved high availability and observability. A complete list of features can be found in a blog post.