TL;DR
Qué: Una plataforma MySQL serverless con branching y cambios de esquema no bloqueantes.
Por qué: Branching estilo Git para bases de datos, migraciones sin tiempo de inactividad, escalabilidad infinita.
Quick Start
Registrarse: Ve a planetscale.com y crea una cuenta.
Instalar CLI:
brew install planetscale/tap/pscale # macOS
# or
scoop install pscale # Windows
Crear base de datos:
pscale auth login
pscale database create myapp --region us-east
Conectar:
pscale shell myapp main
Crear tabla:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE
);
Cheatsheet
| Comando | Descripción |
|---|---|
pscale database create name | Crear base de datos |
pscale shell db branch | Conectar a rama |
pscale branch create db name | Crear rama |
pscale deploy-request create db branch | Crear solicitud de despliegue |
pscale connect db branch | Proxy de conexión local |
pscale password create db branch name | Crear contraseña de conexión |
Gotchas
Flujo de trabajo con ramas
# Crear rama de desarrollo
pscale branch create myapp add-orders
# Conectar a la rama
pscale shell myapp add-orders
# Hacer cambios de esquema
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
total DECIMAL(10,2)
);
# Crear solicitud de despliegue
pscale deploy-request create myapp add-orders
# Desplegar a producción (via UI o CLI)
pscale deploy-request deploy myapp 1
Cadenas de conexión
# Generar cadena de conexión
pscale password create myapp main production-password
# Usar en aplicación
DATABASE_URL="mysql://user:password@host/database?ssl=true"
Uso con frameworks
// Prisma
// schema.prisma
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
relationMode = "prisma" // Required for PlanetScale
}
// Drizzle
import { drizzle } from 'drizzle-orm/planetscale-serverless';
import { connect } from '@planetscale/database';
const connection = connect({
url: process.env.DATABASE_URL
});
const db = drizzle(connection);
Sin claves foráneas (usar a nivel de aplicación)
// PlanetScale no soporta claves foráneas para migraciones en línea
// Manejar relaciones en el código de aplicación
// Con Prisma relationMode: "prisma"
model User {
id Int @id @default(autoincrement())
orders Order[]
}
model Order {
id Int @id @default(autoincrement())
userId Int
user User @relation(fields: [userId], references: [id])
}
Next Steps
- PlanetScale Documentation - Documentación oficial
- PlanetScale Tutorials - Recursos de aprendizaje
- Branching Guide - Flujo de trabajo
- Prisma + PlanetScale - Integración