Off-strategy SSTables are SSTables that do not conform to the invariants that the compaction strategies define. Examples of offstrategy SSTables are SSTables acquired over bootstrap, resharding when the cpu count changes or imported from other databases through our upload directory. This patch introduces a new class, sstable_directory, that will handle SSTables that are present in a directory that is not one of the directories where the table expects its SSTables. There is much to be done to support off-strategy compactions fully. To make sure we make incremental progress, this patch implements enough code to handle resharding of SSTables in the upload directory. SSTables are resharded in place, before we start accessing the files. Later, we will take other steps before we finally move the SSTables into the main directory. But for now, starting with resharding will not only allow us to start small, but it will also allow us to start unleashing much needed cleanups in many places. For instance, once we start resharding on boot before making the SSTables available, we will be able to expurge all places in Scylla where, during normal operations, we have extra handler code for the fact that SSTables could be shared. Tests: a new test is added and it passes in debug mode. Signed-off-by: Glauber Costa <glauber@scylladb.com>
Scylla
Quick-start
To get the build going quickly, Scylla offers a frozen toolchain which would build and run Scylla using a pre-configured Docker image. Using the frozen toolchain will also isolate all of the installed dependencies in a Docker container. Assuming you have met the toolchain prerequisites, which is running Docker in user mode, building and running is as easy as:
$ ./tools/toolchain/dbuild ./configure.py
$ ./tools/toolchain/dbuild ninja build/release/scylla
$ ./tools/toolchain/dbuild ./build/release/scylla --developer-mode 1
Please see HACKING.md for detailed information on building and developing Scylla.
Note: GCC >= 8.1.1 is required to compile Scylla.
Running Scylla
- Run Scylla
./build/release/scylla
- run Scylla with one CPU and ./tmp as work directory
./build/release/scylla --workdir tmp --smp 1
- For more run options:
./build/release/scylla --help
Testing
See test.py manual.
Scylla APIs and compatibility
By default, Scylla is compatible with Apache Cassandra and its APIs - CQL and Thrift. There is also experimental support for the API of Amazon DynamoDB, but being experimental it needs to be explicitly enabled to be used. For more information on how to enable the experimental DynamoDB compatibility in Scylla, and the current limitations of this feature, see Alternator and Getting started with Alternator.
Documentation
Documentation can be found in ./docs and on the wiki. There is currently no clear definition of what goes where, so when looking for something be sure to check both. Seastar documentation can be found here. User documentation can be found here.
Training
Training material and online courses can be found at Scylla University. The courses are free, self-paced and include hands-on examples. They cover a variety of topics including Scylla data modeling, administration, architecture, basic NoSQL concepts, using drivers for application development, Scylla setup, failover, compactions, multi-datacenters and how Scylla integrates with third-party applications.
Building a CentOS-based Docker image
Build a Docker image with:
cd dist/docker/redhat
docker build -t <image-name> .
This build is based on executables downloaded from downloads.scylladb.com, not on the executables built in this source directory. See further instructions in dist/docker/redhat/README.md to build a docker image from your own executables.
Run the image with:
docker run -p $(hostname -i):9042:9042 -i -t <image name>