Check out the new Scylla Release!
The Scylla team is pleased to announce the release of Scylla 2.0, a production-ready Scylla major release. Scylla is an open source NoSQL database compatible with Apache Cassandra, with superior performance and consistently low latency. From now on, critical bugs will be fixed in 2.0 and 1.7 release series only. If you are still using open source Scylla 1.6 or earlier release – you are encouraged to upgrade. We will continue to fix bugs and add features on the master branch toward 2.1 and beyond. Please make sure to read the system impacts and known issue sections below before you upgrade.
Get Scylla 2.0
Upgrade from Scylla 1.7 to Scylla 2.0
Experimental Materialized Views
Heat Weighted Load Balancing
Improved Performance for CPU-bound workloads
Native support for EC2 i3 instances
Please let us know if you encounter any problems.
- Counters. Now production ready and are enabled by default.
- Materialized Views (MV). Experimental. In many use cases, the same information record needs to be queried based on more than one key. For example, user data includes name and id fields, and needs to be queried once by name and once by id. Prior to the introduction of Materialized Views, the only way to implement this in Scylla was using denormalization, maintaining two tables and synchronizing them from within your application. With Materialized Views (MV), Scylla automates this process for you and allows for fast lookups of data in each view using the standard read path. More on MV support and limitations in Scylla 2.0 here.
- Row Cache. In Pre 2.0 releases, Scylla cached full partitions only and we chose not to cache partitions larger than 10MB. With the introduction of the row cache, Scylla can cache a single CQL row out of a large partition, removing this limitation. This change will significantly improve Scylla performance for use cases with large partitions such as Time Series.
- Heat Weighted Load Balancing. When a Scylla node restarts for any reason (upgrade, config update, error), it starts with an empty cache. This means the node read path will always hit disk until it’s cache is repopulated. During this time, this node will be slower, and as a result, can slow down the entire cluster. Heat Weighted Load Balancing solves this issue by optimizing the node selection in the coordinator based on the heat of each node. A hot node, with a good cache-hit-ratio, will get more reads requests than a cold node with the same data and a lower cache hit ratio. After some time, the cold node will become hot, and the load balancing will become uniform again. #1455. More on Heat Weighted Load Balancing here
- Improved Performance for CPU-bound workloads. More here.
- DNS resolution. You can now use DNS names (FQDN), not only IPs, in scylla.yaml for seed nodes, listen_address, broadcast_address and broadcast_rpc_address #2357.
- Docker experimental flag. You can now use “–experimental 1” with Docker to use experimental features (like MV).
- Ext4 support. Scylla now supports the ext4 file system in production, not just in dev mode. Using XFS is still recommended for best performance #2381.
- Native support for EC2 i3 instances. Scylla AMI is now optimized to get the most from i3 instances. Among others, Scylla now takes advantage of the NVMe, i3.16xlarge instance’s network devices, and more.
- CPU isolation. Experimental. Improve latency using isolation between background tasks like memtable flushes and compaction and foreground tasks like CQL read/write. More here.
Scylla Impacts – read carefully:
- Driver support. Older versions of Cassandra drivers will no longer be supported. With the introduction of MV, Scylla has moved to Cassandra 3.0 system tables. This means old Cassandra drivers, which can not work with Cassandra 3.0, will stop working with Scylla.
To ensure your application will work properly after a Scylla upgrade, we highly recommend upgrading your Cassandra driver before upgrading to Scylla 2.0. The latest drivers are backward compatible and will work with all Scylla1.x releases, past and future.
At the very least, your Cassandra driver should be in the list below or later.
– C++ : 2.3+
– C#: 3.0+
– Java: 3.0+
– Node.js: 3.0+
– PHP: 1.2+
– Python: 3.5+
– Ruby: 3.0+
– GoCQL commit 8d27cdeae224463cadc1ee973386862baaf6662e (Mar 1, 2016) or later.
- Upgrade procedure. You can only upgrade to Scylla 2.0 from Scylla 1.7.4 or later. Upgrade from earlier Scylla release is not supported.
- Counter Migration. Scylla does not support Counter SSTables created by Cassandra 2.0 or older. Note that if you upgraded from Cassandra 2.0 to 2.1, you may still have old Counters in the sstables.
The proper way to migrate Counters data from Cassandra to Scylla is to run a major compaction on the Cassandra node, and use sstableloader to load the sstable to Scylla.
If you are using experimental Counters in 1.7.4, read the notes on upgrading to 1.7.5, they apply to 1.7.4 to 2.0 upgrade as well.
- Deprecated partitioners. Byte-ordered and random partitioners were deprecated in 2.0 and will be removed in a future version. Please email [email protected] if you use or are planning to use these partitioners.
Slow gossip propagation in Scylla 2.0 may cause an issue when adding a node to a large cluster. To reduce this risk, it is recommended to set ring_delay_ms value to 120000 ms (2 minutes) in scylla.yaml of the new node. The default is 30000 (30s). #2861 #2855.
Metrics updates from 1.7
Scylla Grafana Monitoring project now includes Scylla 2.0 dashboard by default.
The following metric names have changed:
scylla_cache_evictions To scylla_cache_partition_evictions
scylla_cache_hits To scylla_cache_partition_hits
scylla_cache_insertions To scylla_cache_partition_insertions
scylla_cache_merges To scylla_cache_partition_merges
scylla_cache_misses To scylla_cache_partition_misses
scylla_cache_removals To scylla_cache_partition_removals
scylla_cache_total To scylla_cache_bytes_total
scylla_cache_used To scylla_cache_bytes_used
The following metrics are no longer available:
The following metrics are new in Scylla 2.0:
For a description of each metric, go to http://scylla-ip:9180/metrics
Noteworthy Bug Fixes
- CQL: Dropping a table doesn’t drop its dropped columns #2633, #2634
- CQL: “enabled” compaction attribute on schema is ignored #2547
- CQL: metadata describes counter columns as bigint #2569
- CQL: no support for Cannot SELECT MAX(TEXT) #2459
- CQL: Cannot create table with non-alphanumeric UDT #2491
- CQL: tracing not working on big clusters #2243
- Security: unauthorized user can drop system_auth #2346
- Docker: Scylla docker write Reactor stalled report on every activation #2162
- Scylla install: Installation on Ubuntu/Debian systems fails if a “scylla” user already exists #2389
- Scylla install: no support for installing specific, not latest, Scylla patch version on CentOS #2642
- Scylla install: scylla_cpuscaling_setup doesn’t work on AWS/GCE because these VMs doesn’t support cpufreq #2051
- Scylla install: on Ubuntu16.04, device /dev/md0 is renamed to /dev/md127 after reboot #2502
- Systemd: scylla-server.service should start after network-online.target instead of network.target #2337
- Streaming: on some cases, streaming reads may block user reads #2663
- Streaming: repair can fail due to reads overloads #2659
- Multi-DC: inter_dc_tcp_nodelay configuration parameter ignored #6
- Gossip: bootstrapping node might be overwhelmed with streaming, delay the update the gossip heartbeat and appears to be down #2150
- Scylla: On large nodes reporting metrics via Prometheus may effect requests latency #2475
- Repair: Do not allow repair until node is in NORMAL status #2723