Scylla is an open-source distributed NoSQL database. It is compatible with Apache Cassandra, and uses the same protocols (Cassandra Query Language and Thrift) and same file formats (SSTable). It is optimized for workloads that requires low latency and high throughput, in addition to Apache Cassandra's high availability, scalability and fault-tolerance guarantee. Scylla uses a shared-nothing model and shard-per-core architecture, where each thread executes on its own CPU core, memory, and multi-queue network interface controller. Cross-core communication is carried out by explicit message passing, using an event-driven asynchronous programming model, Seastar.[05]
- Source Code
- https://github.com/scylladb/scylladb[02]
- Tech Docs
- https://docs.scylladb.com[03]
- Developer
- Country of Origin
- IL
- Start Year
- 2014 [18]
- Project Types
- Commercial, Open Source
- Written in
- C++
- Derived From
- Cassandra
- Compatible With
- Cassandra
- Operating System
- Linux
- License
- AGPL v3
Scylla is an open-source distributed NoSQL database. It is compatible with Apache Cassandra, and uses the same protocols (Cassandra Query Language and Thrift) and same file formats (SSTable). It is optimized for workloads that requires low latency and high throughput, in addition to Apache Cassandra's high availability, scalability and fault-tolerance guarantee. Scylla uses a shared-nothing model and shard-per-core architecture, where each thread executes on its own CPU core, memory, and multi-queue network interface controller. Cross-core communication is carried out by explicit message passing, using an event-driven asynchronous programming model, Seastar.[05]
History[06][05][07]
Scylla project is started in 2014 by an Israel startup Cloudius Systems (rebranded as ScyllaDB Inc.), lead by Avi Kivity and Dor Laor. It is a C++ rewritten implementation of Apache Cassandra in Java, and is released as open source in 2015. The current (late 2018) version is 3.0.
Checkpoints[08]
Scylla supports non-blocking checkpoints through per-node backup procedures, which include full backup/snapshots and incremental backup. Snapshots are taken by the snapshot operation provided by the nodetool utility, while the incremental backup option can be configured in the configuration file. Automatic unnecessary backup cleaning is not implemented.
Compression[09]
Scylla uses Apache Cassandra chunked compression on SSTable files. Three dictionary-based compression algorithms are provided: LZ4 (default), Snappy, and DEFLATE. Data needs to be decompressed before being processed during query execution.
Concurrency Control[10][11]
Scylla does not support ACID transactions as in RDBMS. However, CQL has a BATCH statement that allows multiple update statements belonging to a given partition key be applied in isolation (note that batches are not a full analogue for SQL transactions). Besides, in UPDATE, INSERT, and DELETE statements, modifications belonging to the same partition key are performed atomically and in isolation. Scylla implements Multi-version Concurrency Control (MVCC) for partition mutation.
Query Interface[14][15]
Scylla uses Cassandra Query Language (CQL) as the Query Interface. Besides, drivers for the following languages are provided: C++, C#, Go, Java, Node.js, PHP, Python, Ruby, and Rust.
System Architecture[16][17]
Scylla uses a shared-nothing model. Nodes in the cluster are organized in a decentralized consistent hashing ring and data is partitioned into shards by the key across all nodes. Scylla uses a shard-per-core architecture, where each thread for a shard executes on its own CPU core, memory, and multi-queue network interface controller. Cross-core communication is carried out by explicit message passing. Scylla also uses replicas for fault-tolerance.
JanusGraph
Citations
18 sources- ScyllaDB For Real-Time AI scylladb.com
- GitHub - scylladb/scylladb: NoSQL data store using the Seastar framework, compatible with Apache Cassandra and Amazon DynamoDB · GitHub github.com
- Welcome to ScyllaDB Documentation | ScyllaDB Docs scylladb.com
- ScyllaDB - Wikipedia wikipedia.org
- ScyllaDB | Modern NoSQL Database Architecture scylladb.com
- scylladb/version.hh at master · scylladb/scylladb · GitHub github.com
- NoSQL Database Company for Data Intensive Apps - ScyllaDB scylladb.com
- Backup your Data | ScyllaDB Docs scylladb.com
- SSTable Compression | ScyllaDB Docs scylladb.com
- scylladb/partition_version.hh at 8210f4c982396aba127cfc2511998c502bed39b5 · scylladb/scylladb · GitHub github.com
- Data Manipulation | ScyllaDB Docs scylladb.com
- Data Definition | ScyllaDB Docs scylladb.com
- Data Manipulation | ScyllaDB Docs scylladb.com
- ScyllaDB scylladb.com
- ScyllaDB CQL Drivers | ScyllaDB Docs scylladb.com
- ScyllaDB Ring Architecture - Overview | ScyllaDB Docs scylladb.com
- ScyllaDB Architecture - Fault Tolerance | ScyllaDB Docs scylladb.com
- Initial commit github.com