Scylla Blog

Stay up to date with recent news and updates on our Company Blog, and get under the hood on our Engineering Blog.

Posts by Avi Kivity

Feb15

Adventures with Memory Barriers and Seastar on Linux

Unshared data structure

Seastar provides a programming environment that abstracts away most of the problems of multi-threaded programming using a thread-per-core model. Locks, atomic variables, memory barriers, lock-free programming, and all of the scaling and complexity that come from them are gone. In their place, Seastar provides a single facility for inter-core communications. This is, of course, great for the developer, who can easily utilize many-core machines, but there is also another side: because Seastar takes care of all inter-core communications, it can apply advanced optimizations to these communications.

This article examines these optimizations and some of the complexity involved.

Read full article

Oct5

Different I/O Access Methods for Linux, What We Chose for Scylla, and Why

When most server application developers think of I/O, they consider network I/O since most resources these days are accessed over the network: databases, object storage, and other microservices. The developer of a database, however, also has to consider file I/O. This article describes the available choices and their tradeoffs and why Scylla chose asynchronous direct I/O (AIO/DIO) as its access method.

Read full article

Feb13

Efficient full table scans with Scylla 1.6

Introduction The most common operations with ScyllaDB are inserting, updating, and retrieving rows within a single partition: each operation specifies a single partition key, and the operation applies to that partition. While less commonly used, reads of all partitions, also known as full table scans are also useful, often in the context of data analytics. This post describes how to efficiently perform full table scans with ScyllaDB 1.6 and above.

Read full article

Sep13

Running Scylla in development and test environments

Running Scylla in test environment

Scylla is designed to utilize all of the resources on the machine it runs on: disk and network bandwidth, RAM, and CPU. This allows you to achieve maximum performance with a minimal node count. In development and test, however, your nodes might be using a shared machine, which Scylla cannot dominate. This post explains how to configure Scylla for shared environments.

Read full article

Feb9

Qualifying Filesystems for Seastar and ScyllaDB

Welcome to the asynchronous world

Read full article