Définition
PostgreSQL (ou Postgres) est le système de gestion de base de données relationnelle open source le plus avance au monde. Développe depuis 1986 (plus de 35 ans), il est reconnu pour sa fiabilité, sa conformité SQL, son extensibilité et ses fonctionnalités avancees.
PostgreSQL est le choix par défaut de la majorité des startups et des entreprises tech modernes.
Fonctionnalités clés
Types de données riches
- Types SQL standards (INTEGER, VARCHAR, TIMESTAMP, etc.)
- JSONB : JSON binaire indexable (NoSQL dans SQL)
- Arrays : tableaux natifs
- UUID : identifiants universels
- tsvector : full-text search integre
- PostGIS : données géospatiales
- pgvector : vecteurs pour l'IA/ML (recherche semantique)
Requêtes avancees
-- CTE (Common Table Expressions)
WITH top_customers AS (
SELECT user_id, SUM(amount) as total
FROM orders
GROUP BY user_id
HAVING SUM(amount) > 1000
)
SELECT u.name, tc.total
FROM users u
JOIN top_customers tc ON u.id = tc.user_id;
-- Window functions
SELECT name, salary, department,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank,
AVG(salary) OVER (PARTITION BY department) as dept_avg
FROM employees;
-- JSONB queries
SELECT * FROM products
WHERE metadata->>'category' = 'electronics'
AND (metadata->>'price')::int < 500;
Full-text search
-- Index GIN pour la recherche
CREATE INDEX idx_search ON articles USING GIN (to_tsvector('french', title || ' ' || body));
-- Recherche en francais
SELECT title, ts_rank(to_tsvector('french', body), query) as rank
FROM articles, to_tsquery('french', 'developpeur & python') query
WHERE to_tsvector('french', body) @@ query
ORDER BY rank DESC;
Extensions
| Extension |
Usage |
| PostGIS |
Données géospatiales |
| pgvector |
Recherche semantique (embeddings IA) |
| pg_trgm |
Recherche fuzzy, typo-tolerant |
| pg_stat_statements |
Analyse de performance des requêtes |
| TimescaleDB |
Time séries data |
PostgreSQL vs MySQL
|
PostgreSQL |
MySQL |
| Conformité SQL |
Excellente |
Bonne |
| JSONB |
Natif, indexable |
JSON (moins performant) |
| Full-text search |
Integre, multi-langue |
Integre, basique |
| Extensions |
PostGIS, pgvector, etc. |
Limitees |
| Réplication |
Logique + physique |
Binlog |
| Communauté |
Très active |
Très active |
Hébergement
| Service |
Type |
À partir de |
| Supabase |
Managed + API |
Gratuit (500 Mo) |
| Neon |
Serverless |
Gratuit (512 Mo) |
| Railway |
Managed |
5$/mois |
| AWS RDS |
Managed |
~15$/mois |
| Self-hosted |
VPS |
Coût du VPS |