mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-01 12:36:56 +00:00
3a6f397fd038dbd41122da717aaf80873acce732
Takes care of reading a range from all shards that own a subrange in the range. The read happens sequentially, reading from one shard at a time. Under the scenes it uses combined_mutation_reader and foreign_reader, the former providing the merging logic and the latter taking care of transferring the output of the remote readers to the local shard. Readers are created on-demand by a reader-selector implementation that creates readers for yet unvisited shards as the read progresses. The read starts with a concurrency of one, that is the reader reads from a single shard at a time. The concurrency is exponentially increased (to a maximum of the number of shards) when a reader's buffer is empty after moving the next shard. This condition is important as we only wan't to increase concurrency for sparse tables that have little data and the reader has to move between shards often. When concurrency is > 1, the reader issues background read-aheads to the next shards so that by the time it needs to move to them they have the data ready. For dense tables (where we rarely cross shards) we rely on the foreign_reader to issue sufficient read-aheads on its own to avoid blocking.
…
…
…
…
…
…
…
…
Scylla
Quick-start
$ git submodule update --init --recursive
$ sudo ./install-dependencies.sh
$ ./configure.py --mode=release
$ ninja-build -j4 # Assuming 4 system threads.
$ ./build/release/scylla
$ # Rejoice!
Please see HACKING.md for detailed information on building and developing Scylla.
Running Scylla
- Run Scylla
./build/release/scylla
- run Scylla with one CPU and ./tmp as data directory
./build/release/scylla --datadir tmp --commitlog-directory tmp --smp 1
- For more run options:
./build/release/scylla --help
Building Fedora RPM
As a pre-requisite, you need to install Mock on your machine:
# Install mock:
sudo yum install mock
# Add user to the "mock" group:
usermod -a -G mock $USER && newgrp mock
Then, to build an RPM, run:
./dist/redhat/build_rpm.sh
The built RPM is stored in /var/lib/mock/<configuration>/result directory.
For example, on Fedora 21 mock reports the following:
INFO: Done(scylla-server-0.00-1.fc21.src.rpm) Config(default) 20 minutes 7 seconds
INFO: Results and/or logs in: /var/lib/mock/fedora-21-x86_64/result
Building Fedora-based Docker image
Build a Docker image with:
cd dist/docker
docker build -t <image-name> .
Run the image with:
docker run -p $(hostname -i):9042:9042 -i -t <image name>
Contributing to Scylla
Description
Languages
C++
72.3%
Python
26.5%
CMake
0.3%
GAP
0.3%
Shell
0.3%