PmaControl logo PmaControl
  • Accueil
  • PmaControl
    • Agents IA 13 agents on-premise
    • Nos offres Community, Cloud, On-Premise, Premium
    • Documentation Guides, API, architecture
    • Clients 28+ entreprises
    • FAQ 25 questions / 7 catégories
    Bases de données
    • MariaDB 30 articles
    • MySQL 10 articles
    • Galera Cluster 6 articles
    • MaxScale 3 articles
    • ProxySQL 2 articles
    • Amazon Aurora MySQL 0 article
    • Azure Database 0 article
    • ClickHouse 0 article
    • GCP CloudSQL 0 article
    • Percona Server 0 article
    • SingleStore 0 article
    • TiDB 0 article
    • Vitess 0 article
    Solutions
    • Support 24×7 Urgences MariaDB & MySQL
    • Observabilité SQL Monitoring, alertes, topologie
    • Haute disponibilité Réplication, failover, Galera
    • Disaster Recovery Backup, restore, RPO/RTO
    • Sécurité & conformité Audit, RGPD, SOC2
    • Migration & upgrade Zero downtime, pt-osc, gh-ost
  • Nos offres
  • Ressources
    • Documentation Guides techniques & API
    • FAQ 25 questions fréquentes
    • Témoignages Retours clients & cas d'usage
    • Blog Articles & insights
    • Roadmap Fonctionnalités à venir
    Domaines d'expertise
    • Observabilité SQL Monitoring, alertes, topologie Dot3
    • Haute disponibilité Réplication, failover, Galera
    • Sécurité & conformité Audit, RGPD, SOC2, ISO 27001
    • Disaster Recovery Backup, restore, RPO/RTO
    • Performance & optimisation Digests, EXPLAIN, tuning
    • Migration & upgrade Zero downtime, pt-osc
    Liens rapides
    • Wiki GitHub 26 pages — install, engine, plugins
    • Code source Repository GitHub officiel
    • Support 24×7 Urgences MariaDB & MySQL
    • Réserver une démo 30 min — architecture réelle
  • Support 24×7
  • Réserver une démo
Réserver une démo
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文
← Retour au blog

Le SQL est-il une API de haut niveau ?

Publié le 18 mai 2025 Par Sylvain ARBAUDIE
sql architecture api opinion
Partager X LinkedIn Facebook Email PDF
Le SQL est-il une API de haut niveau ?

La question qui dérange

Dans l'architecture logicielle moderne, tout passe par des APIs. REST, GraphQL, gRPC — les applications communiquent via des interfaces bien définies, documentées, versionnées. Mais il existe une API qui précède toutes les autres, qui est omniprésente, et que personne n'appelle vraiment "API" : SQL.

SQL est un langage déclaratif standardisé (ISO/IEC 9075) qui permet d'interagir avec des données structurées. Vous déclarez ce que vous voulez, pas comment l'obtenir. Le moteur de base de données s'occupe de l'exécution. C'est, par définition, une interface de programmation — une API.

Alors pourquoi personne ne traite SQL comme une API ?

SQL comme API : les arguments pour

Accès unifié aux données

SQL offre un point d'accès unique à des données complexes. Qu'il s'agisse de lire une ligne, de joindre dix tables, d'agréger des millions de lignes ou de modifier des données en masse, l'interface est la même : des instructions SQL envoyées via un protocole réseau (le protocole MariaDB / MySQL, par exemple).

C'est exactement ce que fait une API REST : exposer un point d'accès unifié à des ressources, avec une sémantique claire (GET = lire, POST = créer, etc.). SQL fait la même chose avec SELECT, INSERT, UPDATE, DELETE.

Optimisation intégrée

Quand vous appelez une API REST, c'est votre code backend qui décide comment exécuter la requête. Quand vous envoyez une requête SQL, c'est l'optimiseur de la base de données qui choisit le meilleur plan d'exécution.

L'optimiseur SQL analyse la requête, évalue les statistiques des tables, considère les index disponibles et génère un plan d'exécution optimal. C'est une couche d'abstraction que peu d'APIs offrent : vous dites "quoi", le système décide "comment".

Contrôle d'accès granulaire

SQL intègre un système de contrôle d'accès natif. Les GRANT et REVOKE permettent de contrôler finement qui peut faire quoi sur quelles données. C'est l'équivalent d'un système d'autorisation intégré à l'API.

GRANT SELECT (product_name, price) ON catalog.products TO 'api_user'@'%';

Cet utilisateur peut lire le nom et le prix des produits, mais pas les coûts internes ni les marges. Le contrôle d'accès est au niveau de la colonne.

Standardisation

SQL est un standard ISO. Malgré les variations entre les implémentations (MariaDB, MySQL, PostgreSQL, Oracle), le cœur du langage est commun. Un développeur qui connaît SQL peut interagir avec n'importe quelle base relationnelle.

C'est un avantage que peu d'APIs ont. REST n'est pas un standard strict (c'est un style architectural), GraphQL est un standard plus récent, gRPC est lié à Protocol Buffers. SQL a plus de 40 ans de standardisation.

SQL comme API : les arguments contre

Expertise requise

SQL est puissant mais complexe. Écrire un SELECT simple est accessible à tout développeur. Écrire une requête performante avec des jointures complexes, des CTEs récursifs et des window functions demande une expertise significative.

Une bonne API REST/GraphQL abstrait cette complexité : le consommateur n'a pas besoin de savoir comment les données sont organisées physiquement. Avec SQL, le consommateur doit comprendre le schéma, les relations et les contraintes de performance.

Injection SQL

Le risque d'injection SQL est le talon d'Achille de SQL-en-tant-qu'API. Si le consommateur construit ses requêtes par concaténation de chaînes, les données sont en danger.

# DANGEREUX — injection SQL possible
query = f"SELECT * FROM users WHERE name = '{user_input}'"

# SÉCURISÉ — requête paramétrée
query = "SELECT * FROM users WHERE name = %s"
cursor.execute(query, (user_input,))

Les APIs REST/GraphQL n'ont pas ce problème fondamental : l'interface est séparée des données par construction.

Pas de gestion des connexions

SQL ne gère pas la notion de session HTTP, de rate limiting, de pagination standardisée, ni de versioning d'API. Le protocole MariaDB / MySQL gère les connexions, mais il n'y a pas d'équivalent aux headers HTTP, aux codes de statut 4xx/5xx, ni aux mécanismes de cache HTTP.

Ces fonctionnalités doivent être implémentées au-dessus de SQL, via des proxies (MaxScale, ProxySQL) ou des couches applicatives.

Couplage au schéma

Exposer SQL directement couple le consommateur au schéma physique de la base. Si vous renommez une colonne, ajoutez une table ou modifiez une relation, toutes les requêtes SQL du consommateur doivent être mises à jour. Une API REST ou GraphQL isole le consommateur de ces changements via une couche d'abstraction.

Le verdict : oui, mais...

SQL est fonctionnellement une API de haut niveau. Il remplit les critères essentiels : interface standardisée, accès déclaratif aux données, optimisation intégrée, contrôle d'accès.

Mais c'est une API qui nécessite de l'expertise pour être utilisée correctement, qui expose des risques de sécurité si elle est mal utilisée, et qui ne fournit pas les mécanismes de gestion modernes (versioning, rate limiting, pagination).

La meilleure approche est probablement hybride :

  • SQL comme API interne entre les services backend et la base de données, avec des vues et des procédures stockées comme couche d'abstraction
  • REST/GraphQL comme API externe pour les consommateurs qui n'ont pas besoin de connaître le schéma physique

SQL n'est pas mort. SQL n'est pas un outil du passé. C'est une API — la plus ancienne, la plus puissante, et la plus sous-estimée de l'écosystème logiciel.


Cet article a été initialement publié sur Medium.

Partager X LinkedIn Facebook Email PDF
← Retour au blog

Commentaires (0)

Aucun commentaire pour le moment.

Laisser un commentaire

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Mentions légales GitHub Contact
N'attendez pas l'incident pour comprendre votre architecture. © 2014-2026 PmaControl — 68Koncept