Skip to content
← All issues

Readyset Weekly: Issue 46

What to Consider Before You Shard Your Database

Sharding is often presented as the inevitable next step once a database outgrows a single node. But many teams underestimate the complexity it introduces and adopt it before fully exploring the tradeoffs and simpler scaling alternatives.

  • Sharding solves capacity limits but adds operational complexity: Splitting data across nodes increases total storage and write throughput, but it introduces shard routing, cross-shard coordination, and more complex operational workflows.
  • Query flexibility becomes constrained: Joins, aggregates, and transactions that span shards become difficult or expensive. Many teams end up restructuring schemas and application logic around the shard key to avoid cross-shard queries.
  • Rebalancing data is harder than expected: As workloads evolve, shard distributions often become uneven. Redistributing data between shards can be slow, operationally risky, and difficult to perform without service disruption.
  • Many workloads hit read scaling limits first: In many systems, repetitive read queries become the bottleneck before write throughput. Reducing or offloading read load can significantly extend how far a single database can scale and delay the need for sharding.
  • Several alternatives can extend the life of a single database: Read replicas, partitioning, caching layers, and query optimization can provide substantial headroom while preserving SQL semantics and avoiding the complexity of sharding.

Sharding can be powerful, but it's also an expensive architectural decision. Eliminating redundant query work often delivers the biggest gains and can significantly extend how far a single database can scale.

🔍 What We're Watching in the Database Ecosystem

Building for trillions of agents

Aaron Levie shares that software is entering an agent-first era, where trillions of autonomous agents may become the primary users of software rather than humans. This shift pushes infrastructure toward API-first systems, agent-friendly tooling, and new compute, identity, and data platforms designed to support persistent, autonomous workloads at massive scale.

MySQL vs PostgreSQL Internals (Part 1): Buffer Pool Design and Implementation

This post compares MySQL's InnoDB buffer pool and PostgreSQL's shared buffers, showing how both systems cache disk pages in memory but make different engineering trade-offs in lookup structures, eviction policies, and background flushing. While both follow LRU-like strategies, MySQL favors explicit linked lists for precise control, whereas PostgreSQL relies on array-based structures and clock-sweep heuristics to reduce coordination overhead.

Rust: The Unlikely Engine Of The Vibe Coding Era

This article argues that AI-assisted development is making Rust more attractive because strict compilers act as guardrails for LLM-generated code. In this workflow, Rust's type system and borrow checker catch hallucinated or unsafe code at compile time, making strongly typed languages increasingly appealing for AI-generated infrastructure code.

In Case You Missed It

Best of Both Worlds: Introducing Readyset Shallow Cache

This month we introduced Readyset Shallow Cache, a new caching layer designed to expand Readyset's query coverage. While Readyset's Deep Cache delivers sub-millisecond performance for operational queries that require real-time freshness, Shallow Cache accelerates the rest of your workload with near-100% query support and zero ramp-up time. If you'd like to test shallow cache on your workload, reach out to hello@readyset.io.

Get Readyset Weekly in your inbox

One email a week — what shipped, what we learned, and what is worth reading.