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.
Before organizations go into production with Scylla, they must ensure that they are getting the best possible performance so their applications and services will run optimally. One of the many ways to optimize your Scylla deployment is to choose the right compaction strategy. One of the more popular talks at Scylla Summit 2017 was on this subject. Based on that talk, I will explain what compaction is and then explore the different strategies available in Scylla.
The Scylla Summit includes many technical sessions that aren’t about Scylla at all. Alex Gallego, a principal engineer in Akamai’s Platform Group, gave one such talk, SMF: The Fastest RPC in the West. First, a bit of background on Alex. He was the founder and CTO behind the Concord.io distributed stream processing engine. Much in the same way that Scylla addressed the Java-based performance issues in Cassandra, Concord.io chose to build in C++ to deliver a stream processor with better predictability, performance, isolation, multi-tenancy, supervision, and failure recovery. As Alex explains it, “During my time at Concord.io, we saw that […]
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.
Gocqlx is an extension to the Go Scylla / Apache Cassandra driver Gocql. It aims to boost developer productivity while not sacrificing query performance. It’s inspired by Sqlx, a tool for working with SQL databases, but it goes beyond what Sqlx provides. For this blog post, we will pretend we’re a microblogging service and use the following schema: Gocql is a very popular Cassandra driver for the Go programming language. Usually working with it looks more or less like this (source: Gocql README): At first glance, it looks ok but there are some problems: Gocql does not provide you with […]
The developers of Scylla are working hard so that Scylla will not only have unparalleled performance (see our benchmarks) and reliability, but also have the features that our users want or expect for compatibility with the latest version of Apache Cassandra. The latest of these new features is Materialized Views, which will be an experimental feature in the upcoming Scylla release 2.0. Because this feature is experimental, users are invited to try it in non-production environments. The initial implementation has limitations which are discussed at the end of this blog and will be addressed in later versions of Scylla. The […]
Do you have a great NoSQL story to share? Scylla Summit 2017 is coming to San Francisco on October 24-25, and the Call for Speakers is now open. The program will cover the NoSQL ecosystem, customer success stories, product demonstrations, training sessions, integrations with enterprise applications, the latest news about Scylla, and much more. Everyone has a story on their journey to find the best database solution for their business needs. What is YOUR story? Are you a developer, engineer, designer, or product manager leveraging NoSQL technologies in your organization’s next product or service? Or are you an executive, entrepreneur, […]
ScyllaDB strives to offer its users predictable low latencies. However, in real life, things do not always go according to plan, and sometimes predictable low latencies become unpredictable big latencies. When that happens, it’s time to go into detective mode and go figure out what’s going on.