6. FULLY COMPATIBLE
❏ Uses Cassandra SSTables
❏ Use your existing drivers
❏ Use your existing CQL queries
❏ Use your existing cassandra.yaml
❏ Manage with nodetool or other JMX console
❏ Use your existing code with no change
❏ Copy over a complete Cassandra database
❏ Works with the Cassandra ecosystem (Spark etc.)
8. WHAT WOULD YOU DO WITH 1 MILLION TPS?
Shrink your cluster by a factor of 10X
Handle 10X traffic spikes on Black Friday
Model your data instead of using Cassandra as K/V
Get the most out of your data - Run more queries
Maintain your clusters while serving
Stop using caches in front of the database
10. SCYLLA IS QUITE DIFFERENT
Shard-per-core, no locks, no threads, zero-copy
Based on the Seastar C++ application framework
Efficient, unified DB cache (not using Linux page cache)
CQL-oriented storage engine
Exploit all hardware resources - NUMA, multiqueue NICs, etc
11. SCYLLA DB: ARCHITECTURE COMPARISON
Kernel
Cassandra
TCP/IPScheduler
queuequeuequeuequeuequeue
threads
NIC
Queues
Kernel
Traditional stack Scylla sharded stack
Memory
Lock contention
Cache contention
NUMA unfriendly
Application
TCP/IP
Task Scheduler
queuequeuequeuequeuequeuesmp queue
NIC
Queue
DPDK
Kernel
(isn’t
involved)
Userspace
Application
TCP/IP
Task Scheduler
queuequeuequeuequeuequeuesmp queue
NIC
Queue
DPDK
Kernel
(isn’t
involved)
Userspace
Application
TCP/IP
Task Scheduler
queuequeuequeuequeuequeuesmp queue
NIC
Queue
DPDK
Kernel
(isn’t
involved)
Userspace
Core
Database
TCP/IP
Task Scheduler
queuequeuequeuequeuequeuesmp queue
NIC
Queue
DPDK
Kernel
(isn’t
involved)
Userspace
No contention
Linear scaling
NUMA friendly
12. Scylla has its own task scheduler
Traditional stack Scylla stack
Promise
Task
Promise
Task
Promise
Task
Promise
Task
CPU
Promise
Task
Promise
Task
Promise
Task
Promise
Task
CPU
Promise
Task
Promise
Task
Promise
Task
Promise
Task
CPU
Promise
Task
Promise
Task
Promise
Task
Promise
Task
CPU
Promise
Task
Promise
Task
Promise
Task
Promise
Task
CPU
Promise is a
pointer to
eventually
computed value
Task is a pointer
to a lambda
function
Scheduler
CPU
Scheduler
CPU
Scheduler
CPU
Scheduler
CPU
Scheduler
CPU
Thread
Stack
Thread
Stack
Thread
Stack
Thread
Stack
Thread
Stack
Thread
Stack
Thread
Stack
Thread
Stack
Thread is a
function pointer
Stack is a byte
array from 64k to
megabytes
Context switch cost is
high. Large stacks pollutes
the caches No sharing, millions of
parallel events
16. ❏ Implement missing CQL features
❏ Complete nodetool support
❏ Spark integration, other connectors
❏ Thrift support
❏ Authentication and encryption
Work in progress