Switching storage from Cassandra to ScyllaDB
published: 2022-03-06
So far we were using Cassandra database as a storage engine - which is now changed. From now we are using Scylla DB as storage engine.
Why did we do that?
Cassandra is a very nice community maintained distributed database. It really served well for us. But it also caused some headaches in the background... We definitely experienced over the years with Cassandra... How Scylla relates to Cassandra if we compare a few things?
- Easy replacement
ScyllaDB is a drop in to be used instead of Cassandra. Actually we just had to change minimal things in Keytiles code to be able to use a Scylla cluster instead of Cassandra cluster. And 0 logic had to be changed. So we can say it was a low hanging fruit. - Performance and language
Cassandra is written in Java. While Scylla is written in C++. Even because of this Scylla is much more performant in the same machine.
(They state it on their website - now we can confirm it is 100% true!) - Management overhead
Cassandra - as any Java application - can not easily utilize the RAM resources of the machines. The size of so called "Heap" memory is strongly limited. And even though the community tried their best to get around it (making caches off-heap for example) it is still a huge management overhead to parametrize these settings all the time.
In opposed with this Scylla can just automatically optimize itself if Scylla is the only service on a machine. It works like a charm. We can be sure - without any additional management efforts - Scylla will use all resources of the machine and optimize itself. - Release speed
Getting new features, optimizations and bugfixes are happening painfully slow in Cassandra unfortunately... Years ago we started to experiment with v4.0-alpha. And in these years Cassandra community is still just discussing to release (it is in RC state) 4.1. Many features never grew out from "experimental" phase and many features left abandoned in the community.
Opposed to that ScyllaDB guys releasing much faster! Even a major release has happened just since we started to experiment with Scylla (~ 2022 January). They solved many very much needed features in production code Cassandra community is just discussing since years (for example: materialized views). - Getting meaningful help
Also much easier with Scylla. Scylla is maintained by a company. And this is their job to do. Not a free time project. They operate Slack channel you can directly ask the developers and they answer pretty fast. Even bug reports and feature requests are going through / resolved smoothly.
We are very happy with this change! Better performance, much less maintenance complexity - good trade!