Featured Blog Texture

Blog

Engineering

RAFT 2

Engineering

Raft is so fetch: The Raft Consensus Algorithm explained through "Mean Girls"

Raft is a consensus algorithm used in distributed systems to ensure that data is replicated safely and consistently. That sentence alone can be confusing. Hopefully the analogy in this post can help people understand how it works. In honor of national Mean Girls day (“on October 3rd he asked me what day it was”), I present the Raft Consensus Algorithm as explained through the movie Mean Girls. (For a great, more technical overview of Raft, we recommend The Secret Lives of Data).

Mikael Austin

Mar 13, 2024

DataReplication ChristinaChung-1

Engineering

A brief history of high availability

I once went to a website that had “hours of operation,” and was only “open” when its brick and mortar counterpart had its lights on. I felt perplexed and a little frustrated; computers are capable of running all day every day, so why shouldn’t they? I’d been habituated to the internet’s incredible availability guarantees. However, before the internet, 24/7 high availability wasn’t “a thing.” Availability was desirable, but not something to which we felt fundamentally entitled. We used computers only when we needed them; they weren’t waiting idly by on the off-chance a request came by. As the internet grew, those previously uncommon requests at 3am local time became prime business hours partway across the globe, and making sure that a computer could facilitate the request was important.

jessica headshot

Jessica Edwards

Mar 23, 2023

performance

Engineering

High-performance JSON parsing in Go

JSON is a ubiquitous data interchange format supported by many systems, including CockroachDB. Historically, at CockroachDB, the majority of our efforts around JSON focused on supporting various JSON functions, operators, and inverted indexes while our JSON parser did not receive much attention. And for a good reason. If you are reading this blog, then you probably already appreciate Golang. There are many aspects to like in Go, and one of them is an excellent collection of standard (and third party) libraries. Becase Go ships with a “jack-of-all-trades” JSON parser out of the box (encoding/json library), it made sense for CockroachDB to use a standard parser when converting strings to internal JSON representation. However, at some point, we began to wonder if the time had arrived for us to invest in finding a better, more performant alternative.

Yevgeniy Miretskiy

Mar 6, 2023

kubernetes part2 zoevandijk-1

Engineering

Why CockroachDB runs managed services on Kubernetes

*Note: this post originally ran in 2020, at the very beginning of our managed service/multi-tenant engineering journey. If you want an update on what kind of deployment models CockroachDB offers and what our current capabilities are check out our latest release blog. There’s this really fun game I like to play. You get a bunch of SREs in a room and you see how quickly you can rile them up. Here are some things to say next time you’re in a room of SREs:

Josh Imhoff

Josh Imhoff

Oct 20, 2022

cockroachdb-roachfest-announcement-blog-header

Engineering

Product

Company

CockroachDB Serverless is generally available and more product updates

When we set out to build a better relational database seven years ago, we envisioned a solution that was scalable, highly available, and always consistent, because as we said then, “we’d rather spend time quickly building and iterating products, not engineering solutions to database shortcomings.” Today, after developing a database that delivers those capabilities and has been battle-tested by thousands of customers, we’re still following the same northstar. But we’ve extended that vision.

Nate Stewart

Nate Stewart

Sept 21, 2022

multi-region-how-by-rebekka-dunlap-1

Engineering

VLDB 2022: CockroachDB engineers present "A Demonstration of Multi-Region CockroachDB"

The latest research paper from CockroachDB’s engineering team, “A Demonstration of Multi-Region CockroachDB”, will appear in the Demonstration Track of the VLDB 2022 conference in Sydney, Australia (as well as remotely), on September 5-9. This paper complements our recent full paper, Enabling the Next Generation of Multi-Region Applications with CockroachDB, which appeared earlier this year in SIGMOD 2022.

Rebecca Taft

Augt 26, 2022

SQLSmith Header IMG 2

Engineering

How to use indexes for better workload performance

Indexes are a crucial part of your database schema. They improve workload performance by helping the database locate data without having to scan every row of a table. Although it might be tempting to create an index for every column that your workload uses to filter data, it’s important to consider the performance tradeoffs of indexes. While indexes greatly improve the performance of read queries that use filters, they do come with a cost to write performance: data has to be written for all indexes present on the table.

Marylia Gutierrez

Marylia Gutierrez

Augt 23, 2022

cdc-tuning-feature

Product

Engineering

SQL query tuning with DB Console

Observability is how you understand the current state of your database: how it is behaving, plus any potentially problematic things you should be paying attention to — and identifying improvements based on this information.

Marylia Gutierrez

Marylia Gutierrez

Augt 1, 2022

evolve-business-by-zach-meyers-1

Product

Engineering

Interactive demo of CockroachDB using D3

Cockroaches first evolved more than 300M years ago, and yet the O.G. is still recognizable. "Modern" cockroaches are about 200M years old; that they're still with us, largely unchanged, is quite impressive from an evolutionary perspective.

 Spencer Kimball

Spencer Kimball

May 20, 2022

cap-theorem2-1

Engineering

What are the limits of the CAP theorem?

*Note: This blog was originally published in 2017. Everything is still true today. It is being updated to include additional capabilities in CockroachDB. Namely, bounded staleness reads. The CAP theorem is a fundamental part of the theory of distributed systems. It states that in the presence of partitions (i.e. network failures), a system cannot be both consistent and available, and must choose one of the two.

Ben Darnell

Ben Darnell

May 5, 2022