One million queries per second with MySQL
Discover how PlanetScale handles one million queries per second (QPS) with horizontal sharding in MySQL
Zero downtime Laravel migrations
Learn how to run no downtime non-blocking schema migrations in your production Laravel app with PlanetScale.
How product design works at PlanetScale
Learn about the lightweight and highly collaborative process our product design team follows to ship quickly at PlanetScale.
Introducing FastPage: Faster offset pagination for Rails apps
Introducing FastPage, a new gem for ActiveRecord that speeds up deep pagination queries.
How to kill Sidekiq jobs in Ruby on Rails
Learn how PlanetScale uses a custom middleware to kill our Sidekiq jobs in production without relying on deploys.
Database DevOps
Learn how PlanetScale enables databases to seamlessly fit into the DevOps lifecycle.
Ruby on Rails: 3 tips for deleting data at scale
Learn how to delete data in large Rails apps with destroy_async, delete, destroy, and scheduled cron jobs.
The Slotted Counter Pattern
Handle MySQL increment counter bursts with the Slotted Counter Pattern
Behind the scenes: How we built Password Roles
Learn how we leveraged Vitess ACLs and VTTablet to build our password roles functionality
Temporal Workflows at scale with PlanetScale - Part 1
Learn how to create a more reliable workflow with Temporal and PlanetScale
How do database indexes work?
Learn how database indexes work under the hood and how they can be used to speed up queries
Consensus algorithms at scale: Part 8 - Closing thoughts
In the final installment of the consensus algorithm series, we pull everything together with some final thoughts.
Consensus algorithms at scale: Part 7 - Propagating requests
In part 7 of the Consensus algorithm series, we combine everything we've worked at to cover propagating requests
Identifying slow Rails queries with sqlcommenter
Learn how to use sqlcommenter with Rails
Consensus algorithms at scale: Part 6 - Completing requests
In part 6 of the Consensus algorithms series, we look at how to handle request completions
The operational relational schema paradigm
An exploration of the current landscape of schema change methodology and what the future should look like.
Feature storytelling with Framer Motion
Learn how we used Framer Motion to create our schema revert feature’s narrative animation.
Consensus algorithms at scale: Part 5 - Handling races
In part 5 of our consensus algorithms series, we discuss how we handle race conditions and forward progress requirements.
Consensus algorithms at scale: Part 4 - Establishment and revocation
In part 4 of the consensus algorithms series, we look at how algorithm leaders are established and revoked.
Generics can make your Go code slower
Go 1.18 is here, and with it, the first release of the long-awaited implementation of Generics is finally ready for production usage. Generics are a frequently requested feature that has been highly contentious throughout the Go community.
Why we chose NanoIDs for PlanetScale's API
Learn why PlanetScale used NanoID to generate obscure and URL friendly identifiers.
Behind the scenes: How schema reverts work
Learn how we used VReplication to allow for migration reverts with data retention.
How we made PlanetScale’s background jobs self-healing
How to build self-healing background jobs into your application with background queueing systems, like Sidekiq.
Introduction to Laravel caching
Learn how to speed up your Laravel applications with caching.
Using entropy for user-friendly strong passwords
When implementing user authentication with passwords, throw out the password rules you know.
How our Rails test suite runs in 1 minute on Buildkite
Learn how we use minitest and FactoryBot with parallel tests to get our Rails test suite to run in 1 minute on Buildkite.
NoneSQL, All the DevEx
Databases will win based on superior developer experience, not what is under the hood.
Building PlanetScale with PlanetScale
How PlanetScale uses Database Branching™ and non-blocking schema changes to build PlanetScale.
The promises and realities of the relational database model
The relational model is one of the oldest surviving models in computer science but it has some drawbacks that need to be addressed.
Horizontal Sharding for MySQL Made Easy
For developers building out a web application, a transactional datastore is the obvious and proven choice, but with success comes scale limitations.
Pitfalls of isolation levels in distributed databases
The more loosely coupled components are in a distributed system, the better it scale
Consensus algorithms at scale: Part 3 - Use cases
Consensus Use Cases
Orchestrator failure detection and recovery: New Beginnings
how the new integration adds new failure detection and recovery scenarios, making orchestrator’s operation goal-oriented.
Consensus algorithms at scale: Part 2 - Rules of consensus
The Rules of Consensus
Consensus algorithms at scale: Part 1 - Introduction
This is a multi-part blog series and will be updated with links to the corresponding posts.
Learn Horizontal Scaling on PlanetScaleDB with Vitess — Rate Puppies in a Rust app with Sharded MySQL Database
Rate Puppies in a Rust app with Sharded MySQL Database
ACID Transactions are not just for banks - the Vitess approach
Build systems that do not lose data. Vitess prevents asynchronous failure in two ways: (1) ensuring that the changes are saved locally on storage, with the redo log and binary logs safely written to disk and (2) making use of semi-synchronous replication.