PostgreSQL vs Supabase vs PlanetScale : choisir sa base en 2026
Postgres self-hosted, Supabase, PlanetScale, Neon : le marché des bases en 2026 explose. Notre guide pour choisir selon votre projet et votre budget.
On gère 30+ projets clients en prod en 2026. Bases hébergées partout : Postgres self-hosted sur VPS, Supabase, PlanetScale, Neon, Turso. Voici un guide honnête pour choisir, basé sur notre vrai vécu et les vraies factures.
Le paysage 2026 en 30 secondes
- Postgres self-hosted : la base, contrôle total, coût bas, opérations à votre charge
- Supabase : Postgres managé + auth + storage + realtime, DX excellent, vendor lock-in léger
- PlanetScale : MySQL managé serverless, branching DB, énorme scale
- Neon : Postgres serverless, branching DB, scale-to-zero
- Turso : SQLite distribué edge, latence imbattable, modèle écrit-loin/lu-proche
Chacun a sa place. Voici comment choisir.
Le tableau de décision rapide
| Cas d'usage | Choix | |-------------|-------| | MVP rapide avec auth + storage | Supabase | | App SaaS B2B avec compliance lourde | Postgres self-hosted (VPS Europe) | | Massive scale (millions de users) | PlanetScale | | App avec preview environments | Neon ou PlanetScale | | App globale low-latency reads | Turso | | Projet entreprise classique | Postgres managé (RDS, Supabase, ou self-hosted) | | Edge functions avec DB | Neon, Turso, ou Supabase |
PostgreSQL self-hosted : encore le meilleur en 2026 ?
Le setup
# docker-compose.yml
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: app
volumes:
- postgres_data:/var/lib/postgresql/data
- ./backups:/backups
ports:
- "127.0.0.1:5432:5432"
volumes:
postgres_data:
Un VPS Hetzner CPX21 (3 vCPU, 4 Go RAM) à 7€/mois tient un site moyen sans broncher.
Le code applicatif
import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
import { users } from './schema';
const client = postgres(process.env.DATABASE_URL!);
const db = drizzle(client);
const result = await db.select().from(users).limit(10);
Les vrais avantages
- Coût : 7-30€/mois pour un projet moyen
- Performance : pas de network hop, latence sub-millisecond
- Souveraineté : data en Europe, conforme RGPD direct
- Pas de vendor lock-in : Postgres, c'est Postgres
Les vrais inconvénients
- Backups à votre charge (pg_dump + s3 + cron)
- HA / failover complexe à mettre en place
- Monitoring à installer (pgmetrics, pgwatch)
- Updates majeures = stress
Pour qui ?
Projets où vous contrôlez l'infra, équipe avec compétence DevOps, budget contraint. C'est notre choix par défaut chez Lenobot pour les TPE/PME.
Supabase : le "Firebase Postgres" qui s'impose
Le setup (10 minutes chrono)
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);
// Auth
const { data, error } = await supabase.auth.signInWithPassword({
email: '[email protected]',
password: '...',
});
// Query
const { data: posts } = await supabase
.from('posts')
.select('*, author:users(name)')
.eq('published', true)
.order('created_at', { ascending: false })
.limit(10);
// Realtime
supabase.channel('posts')
.on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'posts' }, (payload) => {
console.log('New post:', payload.new);
})
.subscribe();
Ce qu'on adore
- Auth + RLS intégrés, vraiment robustes
- Storage intégré (S3-compatible)
- Realtime natif via Postgres replication
- Edge Functions (Deno)
- Database branching depuis 2025
- Free tier généreux (500 MB, 2 Go bandwidth)
Les pièges
- Pricing explose si vous dépassez le free tier sans optimiser (storage egress notamment)
- Latence depuis l'Europe vers AWS US East peut piquer (utilisez la région EU)
- Vendor lock-in : RLS et fonctions edge sont spécifiques (mais le Postgres dessous reste portable)
- Self-host Supabase : possible mais lourd à maintenir
Pour qui ?
MVP rapides, projets avec auth + realtime, équipes solo ou petites. Sweet spot : 0 à 50K users.
PlanetScale : MySQL pour le très gros scale
Le setup
import { drizzle } from 'drizzle-orm/planetscale-serverless';
import { Client } from '@planetscale/database';
const client = new Client({ url: process.env.DATABASE_URL });
const db = drizzle(client);
const users = await db.select().from(usersTable).limit(10);
Ce qui les rend uniques
- Database branching : créez une branche "feature-x" comme en git, mergez via PR
- Schema migrations zero-downtime (Vitess sous le capot)
- Scale horizontal : 10K+ connections simultanées sans broncher
- No foreign keys par design (compromis pour le scale)
Le branching en pratique
pscale branch create my-app feature-add-comments
pscale connect my-app feature-add-comments # local connect
# faites vos migrations sur cette branche
pscale deploy-request create my-app feature-add-comments
# review en équipe
pscale deploy-request deploy my-app 1
Très puissant pour les équipes nombreuses.
Les inconvénients
- MySQL, pas Postgres (pas de JSONB, pas de extensions)
- Pricing entreprise (~ 39$/mois minimum sérieux)
- Pas de free tier (depuis 2024)
Pour qui ?
Apps qui scalent vraiment (100K+ users actifs), équipes qui ont besoin de DB branching strict.
Neon : le challenger Postgres serverless
Le pitch
Postgres serverless, scale-to-zero, branching de DB, pricing au usage. Comme PlanetScale mais en Postgres.
Le setup
import { neon } from '@neondatabase/serverless';
import { drizzle } from 'drizzle-orm/neon-http';
const sql = neon(process.env.DATABASE_URL!);
const db = drizzle(sql);
const users = await db.select().from(usersTable);
Les killer features
- Scale-to-zero : votre DB hibernate après 5 min d'inactivité, vous ne payez plus rien
- Branching instantané (copy-on-write)
- HTTP driver ultra rapide pour edge functions
- Free tier confortable (3 Go, 0.5 vCPU)
Les pièges
- Cold start sur scale-to-zero : 200-500ms de réveil au premier query
- Pas de Postgres extensions custom (mais les courantes sont là)
- Connection pooling spécifique à comprendre
Pour qui ?
Apps avec trafic en pic (campaigns marketing, e-commerce saisonnier), preview environments en CI, projets edge-first.
💡 Vous voulez qu'on choisisse et migre votre stack DB pour vous ? On en discute 15 minutes : rdv.lenobot.com.
Comparatif coût (vrai exemple client)
App SaaS B2B, 5K users actifs, 200K req/jour, 50 Go data, 3 Go bandwidth/mois.
| Solution | Coût mensuel | Notes | |----------|--------------|-------| | Postgres self-hosted (Hetzner CPX21) | 7€ | Backups S3 = 1€ supplémentaire | | Supabase Pro | 25$ | Free tier dépassé, OK jusqu'à 8 Go | | PlanetScale Hobby | 39$ | Plus cher mais branching | | Neon Launch | 19$ | Scale-to-zero quand inactif | | AWS RDS db.t4g.small | 35$ | + storage + IO + backups |
En coût pur, self-hosted gagne 5x. Mais ajoutez 3h/mois de DevOps à 80€/h, et le calcul change.
Les patterns qu'on déploie en 2026
Pattern 1 : Supabase + edge cache
Supabase pour la DB + Cloudflare Workers KV pour cacher les reads chauds. Latence p99 sous 50ms même depuis l'autre bout du monde.
Pattern 2 : Postgres self-hosted + read replica Neon
Write sur le Postgres maître (Hetzner), read replica via Neon pour les preview environments en CI. Le meilleur des deux mondes.
Pattern 3 : Drizzle agnostique
// /src/db/index.ts
import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
const client = postgres(process.env.DATABASE_URL!, {
max: 10,
idle_timeout: 20,
connect_timeout: 10,
});
export const db = drizzle(client);
Même code marche sur Supabase, Neon, ou Postgres self-hosted. Vous pouvez switcher en changeant DATABASE_URL.
Notre recommandation par profil
- Solo dev / MVP : Supabase, démarrez en 10 min
- Petite agence / TPE client : Postgres self-hosted sur VPS
- Startup en croissance : Supabase ou Neon, scale facile
- Scale-up sérieux : PlanetScale ou Neon Pro
- Entreprise compliance : Postgres self-hosted EU, AWS RDS Frankfurt
Le choix se fait sur 4 axes : compétence DevOps, budget, scale attendu, contrainte légale (RGPD, hébergement EU).
Prêt à choisir et déployer la bonne base de données pour votre projet en 2026 ? Notre équipe de devs seniors vous accompagne. Réservez votre appel découverte gratuit sur rdv.lenobot.com, 15 minutes pour évaluer votre projet, devis ferme sous 48h, sans engagement.
Article rédigé par L'équipe Lenobot.
Besoin d'aide avec votre projet ?
Nos experts sont prêts à vous accompagner dans votre transformation digitale.
Discutons de votre projet