The Scylla team is pleased to announce the availability of Scylla Open Source 3.3.0, a production-ready release of our open source NoSQL database. Scylla 3.3 is focused on bug fixes and stability.
Scylla 3.3 includes major new or modified experimental features, including Lightweight Transactions (LWT), Change Data Capture (CDC), our Amazon DynamoDB Compatible API (Alternator) and Lua language based User Defined Functions (UDFs). These features are experimental and you are welcome to try them out and share feedback. Once stabilized they will be promoted to General Availability (GA) in a followup Scylla release (see more below).
Scylla is an open source, Apache-Cassandra-compatible NoSQL database with superior performance and consistently low latencies. Find the Scylla Open Source 3.3 repository for your Linux distribution here.
Please note that only the last two minor releases of Scylla Open Source project are supported. Starting today, only Scylla Open Source 3.3 and 3.2 will be supported; Scylla Open Source 3.1 will no longer be supported.
New features in Scylla 3.3
- Snapshot enhancement: a table schema, schema.cql, is now part of each Scylla snapshot created with “nodetool snapshot”. Schema is required as part of the Scylla backup restore procedure. #4192
- Connection virtual table #4820
The new table system.clients table provides information about CQL clients currently connected to Scylla.
Client Information includes: address, port, type, shard, protocol_version and username
- Stability: Large collections are now more resistant to memory fragmentation
- Stability: scylla-kernel-conf package which tunes the kernel for Scylla’s needs. It now tunes vm.swappiness, to reduce the probability of the kernel swapping out Scylla memory and introducing stalls.
- Export system uptime via REST endpoint /system/uptime_ms
Metrics changes Scylla 3.2 to Scylla 3.3
Full list of metrics is available here
For Scylla 3.3 Dashboard, make sure to use Scylla Monitoring Stack release 3.2
Experimental features in Scylla 3.3
User Defined Functions (UDFs) #2204
Scylla now has basic support for Lua based UDFs. Scylla UDFs serve a function similar to Apache Cassandra’s UDFs, to provide server-side calculated functions, but are implemented with Lua
CREATE FUNCTION twice(val int) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE Lua AS 'return 2 * val'; SELECT twice(key) from tbl;
Please note that UDFs are under development, and are still missing integration with RBAC, Scylla Tracing and Scylla monitoring, and more performance improvements. More on UDAFs and UDAs here.
The following experimental features were already available in Scylla 3.2, and we continue to improve and stabilize them toward production in one of the following Scylla releases:
Lightweight Transactions (LWT) (Experimental) #1359
Lightweight transactions (LWT), also known as Compare and Set (CAS), add support for conditional INSERT and UPDATE CQL commands. Scylla supports both equality and non-equality conditions for lightweight transactions (i.e., you can use <, <=, >, >=, != and IN operators in an IF clause).
Updates from Scylla 3.2:
- LWT performance optimization: lightweight transactions query phase was optimized to reduce the number of round trips.
- LWT safety: allow commitlog to wait for specific entries to be flushed to disk
You can learn more on LWT in Scylla and LWT optimizations from the latest LWT Webinar (registration required)
Change Data Capture (CDC) (Experimental) #4985
Change Data Capture is a feature that enables users to monitor data in a selected table and asynchronously consume the change events. You can enable CDC per table.
Updates from Scylla 3.2:
- Better support for schema changes
- Support for rolling upgrade
Note that CDC has an impact on performance, as each update to a CDC enabled table is written to two tables (the original table and the CDC table). Enabling the preimage option affects performance further, as it includes read-before-update. CDC is still under continuous development, and the API and syntax are likely to change.
To learn more about the CDC capabilities register for our upcoming webinar on March 26th, 2020.
Scylla Alternator: The Open Source DynamoDB-compatible API (Experimental)
Project Alternator is an open-source implementation for an Amazon DynamoDB™-compatible API. The goal of this project is to deliver an open source alternative to Amazon’s DynamoDB, deployable wherever a user would want: on-premises, on other public clouds like Microsoft Azure or Google Cloud Platform, or still on AWS (for users who wish to take advantage of other aspects of Amazon’s market-leading cloud ecosystem, such as the high-density i3en instances). DynamoDB users can keep their client code unchanged. Alternator is written in C++ and is included in Scylla 3.3.
Updates from Scylla 3.2:
- Correct support for all operators for the “Expected” parameter (previously some were unimplemented, some cases had bugs). #5034
- The DescribeTable operation now returns the table’s schema.
- Produce clear errors on unimplemented features (previously, some of them were silently ignored).
For the latest Alternator status: https://github.com/scylladb/scylla/blob/master/docs/alternator/alternator.md
Want to learn more about what you can do with Scylla? Tune in to discover the capabilities of Change Data Capture (CDC) in Scylla in our upcoming webinar on March 26th, 2020: