Posts

Showing posts from June, 2022

Seeing is Believing: A Client-Centric Specification of Database Isolation

Image
This paper presents a new way to reason about transaction-isolation based on application-observable states, in lieu of prior history-based approaches. This approach maps more naturally to what applications can observe, and facilitates comparing isolation guarantees. It also frees isolation definitions from implementation-specific details (timestamps, replicas) and opens the way to find alternate implementations. The paper provides a dense but rewarding read. If you call history-based approaches as operational reasoning on transaction isolation semantics, you can think of the proposed state-based approach as opening the way for invariant-based reasoning for this. So there is a lot of potential to be realized for this work. The paper already illustrates some of these benefits: State-based modeling shows that several well-known guarantees, previously thought to be distinct, are in fact equivalent, and that many previously incomparable flavors of snapshot isolation can be organized in a c

Enabling the Next Generation of Multi-Region Applications with CockroachDB (Sigmod 22)

This paper describes how CockroachDB (CRDB) simplifies cross-region deployments by providing the user with high-level declarative SQL-like statements for expressing data access locality and availability goals. The paper also describes a new transaction management protocol that provides local, strongly consistent reads from any database replica (see the Global Transactions section at the end, just before the Evaluation). If you lack the basics on CRDB, the earlier Sigmod 2020 paper is a better place to start.   Motivating example Consider a ride-sharing company called movr. Fig. 1a shows two tables from movr’s database schema. Fig. 1b shows some of the challenges associated with converting them to multi-region. The schema must be modified to add a partitioning column since no natural partitioning column exists. The application logic and DML must also be modified to use this new column. Partitioning is not viable for the promo_codes table, which has no locality of access. Instead th

Popular posts from this blog

Hints for Distributed Systems Design

Learning about distributed systems: where to start?

Making database systems usable

Looming Liability Machines (LLMs)

Foundational distributed systems papers

Advice to the young

Linearizability: A Correctness Condition for Concurrent Objects

Scalable OLTP in the Cloud: What’s the BIG DEAL?

Understanding the Performance Implications of Storage-Disaggregated Databases

Designing Data Intensive Applications (DDIA) Book