ScyllaDB
A C++ rewrite of Cassandra — same CQL, 10× lower latency.
ScyllaDB is a high-performance, drop-in compatible reimplementation of Apache Cassandra written in C++ using a shared-nothing, shard-per-core architecture. It speaks CQL, runs on Kubernetes, scales linearly, and delivers single-digit millisecond p99 latencies on workloads where Cassandra struggles.
Deploy with Pier
- 1 Open the Pier dashboard and click Add service.
- 2 Pick ScyllaDB from the template list.
- 3 Choose the version, set a service name, and Pier provisions the container, storage, and ports automatically.
- 4 Attach a domain if you want HTTPS. Traefik auto-provisions the Let's Encrypt certificate.
What is ScyllaDB?
ScyllaDB is a from-scratch C++ rewrite of Apache Cassandra that started in 2015 with one goal: keep the data model, drop Cassandra’s JVM tax. The shard-per-core architecture means each CPU core owns a slice of data with no shared mutable state — no thread context switches, no GC pauses, no cross-core synchronization.
The user-facing result: same CQL, same drivers, same schemas — but 10× lower p99 latency, often half the hardware. Discord migrated 177 nodes of Cassandra to 72 nodes of ScyllaDB and dropped p99 by an order of magnitude.
How Pier deploys it
Pier uses the official scylladb/scylla Docker image, mounting
/var/lib/scylla as the data volume. The default version is latest
(Scylla 6.x at time of writing); 5-stable, 6-stable are pinned variants.
Cluster mode supports 2–5 nodes; production deployments typically want 3+ per datacenter. Pier exposes 9042 (CQL) and 9180 (shard-aware) ports.
Backups use snapshot tarballs and can ship to any S3-compatible storage.
When NOT to use ScyllaDB
For OLTP with strong consistency and rich joins — Postgres. For ad-hoc analytics — ClickHouse. For documents with flexible schemas — MongoDB. For in-memory cache/queue — Redis/Valkey. Scylla shines when partition-keyed access + write throughput + predictable tail latency are the hard requirements.
Key features
Drop-in CQL compatibility
Same CQL protocol, same drivers, same data model as Cassandra. Migrate via cqlsh dumps or live streaming with sstableloader.
Shard-per-core architecture
Each CPU core owns a shard. No cross-core locks, no thread context switching — predictable latency under heavy load.
10× lower p99 latency
Single-digit milliseconds at the 99th percentile where Cassandra is in the tens or hundreds. Better tail latency = better user experience.
Lower hardware footprint
Often runs the same workload on 1/3 the hardware of Cassandra. Cost savings compound across multi-node clusters.
Same masterless design
No primary, no failover. Every node is equal. Tunable consistency from ONE to ALL.
Modern operational tooling
Built-in observability via Prometheus, dynamic core scheduling, automatic memory management, hinted handoff.
Use cases
User profiles and session stores
Per-user records served by partition key at single-digit ms p99 — fits AdTech, social, gaming use cases perfectly.
Time series and IoT at scale
High-throughput sensor / telemetry ingest; same model as Cassandra time-series patterns with better latency.
Recommendation systems backing store
Pre-computed user / item recommendations served at high concurrency with predictable tail latency.
Ad-tech serving & bidding
Real-time bid responses need sub-10ms p99 — Scylla's per-core architecture wins where general-purpose DBs fall over.
Cassandra cost-reduction migration
Existing Cassandra clusters often migrate to Scylla and cut node count by 60–70% with better SLOs.
Code examples
CREATE KEYSPACE app
WITH replication = {
'class': 'NetworkTopologyStrategy',
'datacenter1': 3
};
USE app;
CREATE TABLE sessions (
user_id UUID,
token TEXT,
created TIMESTAMP,
last_seen TIMESTAMP,
PRIMARY KEY ((user_id), token)
); INSERT INTO sessions (user_id, token, created, last_seen)
VALUES (?, ?, toTimestamp(now()), toTimestamp(now()))
USING TTL 86400; -- expire in 24h CONSISTENCY LOCAL_QUORUM;
SELECT * FROM sessions WHERE user_id = ?; CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("scylla-host", 9042))
.withAuthCredentials("user", "pass")
.withKeyspace("app")
.build(); How it compares
| vs Apache Cassandra | ScyllaDB is wire- and CQL-compatible. Same data model, same drivers. Scylla wins on latency and density; Cassandra has the bigger ecosystem and longer track record. |
| vs DynamoDB | Both are wide-column with similar APIs (DynamoDB has its own SDK). Scylla has a DynamoDB-compatible Alternator API. Self-hosted vs AWS-managed; Scylla wins on cost predictability. |
| vs Redis / Valkey | Redis is in-memory with optional persistence; Scylla is durable disk-first. Use Redis for cache + ephemeral data, Scylla for durable wide-column at scale. |
| vs MongoDB | Mongo is document-oriented with rich query language. Scylla is partition-keyed wide-column. Mongo wins on ad-hoc queries; Scylla wins on predictable latency and write throughput. |
Frequently asked questions
Is ScyllaDB really a drop-in replacement for Cassandra?
Open source or proprietary?
Default ports?
Cluster size?
Migrate from Cassandra to ScyllaDB?
Backups?
Performance gain vs Cassandra?
Related services
Deploy on your VPS
ScyllaDB is a high-performance, drop-in compatible reimplementation of Apache Cassandra written in C++ using a shared-nothing, shard-per-core architecture. It speaks CQL, runs on Kubernetes, scales linearly, and delivers single-digit millisecond p99 latencies on workloads where Cassandra struggles.
Deploy this service →