Net-Base Magazine

02.06.2026

Intégration de MariaDB avec Delphi et FireDAC : architecture, choix des pilotes et exploitation sans surprises

Comment intégrer proprement MariaDB depuis des applications Delphi via FireDAC : options du pilote, TLS, jeux de caractères, transactions, pooling, performances et exploitation — axé sur l'administration, la maintenance et la migration dans des systèmes en place.

02.06.2026

Du thème du magazine à la pratique des projets

Pages de services et techniques pertinentes pour l'article

Qui souhaite connecter MariaDB à Delphi et réaliser le remplacement BDE avec une connexion native vise généralement plus que «seulement» une connexion réussie. En milieu d’entreprise, ce qui compte avant tout, ce sont la fiabilité d’exploitation, une configuration claire, des déploiements reproductibles et un accès aux données qui reste stable sous charge. MariaDB est souvent utilisée comme une alternative rentable et facilement administrable dans l’écosystème MySQL — et les applications Delphi sont dans de nombreuses entreprises des solutions mûries dans le temps, proches des processus, qui doivent fonctionner de manière fiable et être développées pendant des années.

Cet article ne traite donc pas des détails de framework ni du code de démonstration, mais des décisions qui concernent réellement la direction IT et l’administration : quelle stratégie de pilote est pertinente (bibliothèques clientes natives vs. ODBC), comment éviter les problèmes d’encodage et de collation, comment planifier proprement le TLS, quels aspects de transaction et de verrouillage sont pertinents dans MariaDB, et comment garder la supervision, les mises à jour et le diagnostic maîtrisables au quotidien. L’objectif est une connexion qui non seulement «fonctionne», mais qui reste maintenable et auditable sur la durée de vie du logiciel métier.

Connecter MariaDB à Delphi et FireDAC en pratique

MariaDB est historiquement issue de MySQL et est, dans de nombreux domaines, compatible mais pas identique. Pour l’exploitation, cela signifie : de nombreux outils, concepts et pilotes clients fonctionnent de manière semblable, toutefois il existe des différences dans les fonctionnalités, les valeurs par défaut, le comportement de l’optimiseur et parfois aussi dans les types de données ou les variables système. Pour Delphi/BDE-Ablosung mit nativer Anbindung cela est surtout pertinent pour la question de quel chemin de pilote est utilisé et quelles hypothèses de dialecte SQL sont imbriquées dans l’application.

FireDAC est la couche d’accès aux données dans Delphi, capable de connecter de nombreuses bases de données de manière unifiée. FireDAC encapsule la connexion, les paramètres, les transactions et le comportement des jeux de données. Important en exploitation : FireDAC n’est pas seulement «un pilote», mais une couche qui peut utiliser, selon la base, différents modes de pilote. Pour MariaDB, cela se résume en pratique à deux voies robustes : des bibliothèques clientes natives MySQL/MariaDB ou ODBC.

Stratégie de pilote : bibliothèque client native vs. ODBC — qu’est-ce qui est préférable en exploitation ?

La décision la plus importante est de savoir si vous connectez FireDAC via une bibliothèque cliente native (issue de l’écosystème MySQL/MariaDB) ou via un pilote ODBC. Les deux voies sont techniquement valides, mais elles diffèrent en termes de déploiement, de processus de mise à jour et de profils d’erreur.

Bibliothèque client native (libmysql / MariaDB Connector/C)

Avec une connexion native, FireDAC travaille avec une bibliothèque cliente qui doit être disponible à l’exécution (typiquement en tant que DLL sous Windows ou en tant que bibliothèque partagée sous Linux). En pratique, vous rencontrerez deux variantes :

  • MySQL-Client-Library : largement répandue, mais dépendante des versions et des modes de distribution.
  • MariaDB Connector/C : souvent plus cohérente pour les serveurs MariaDB, avec son propre cycle de publication.

Point de vue exploitation : Les bibliothèques natives offrent généralement les meilleures performances et un diagnostic d’erreur le plus direct (handshake, TLS, authentification). Le coût est un composant de déploiement supplémentaire : la bonne version de la bibliothèque doit être présente sur tous les systèmes cibles et ne doit pas être «accidentellement» écrasée par d’autres logiciels.

ODBC (MariaDB ODBC Driver)

ODBC (Open Database Connectivity) est un concept de pilote standardisé au niveau du système d’exploitation. FireDAC peut ainsi interroger MariaDB via ODBC si un pilote ODBC approprié est installé. Cela paraît à première vue «facile à administrer», car ODBC est déjà largement déployé dans de nombreuses entreprises (p. ex. pour des outils de reporting).

Du point de vue de l’exploitation : ODBC peut simplifier le déploiement si vous distribuez déjà un paquet de pilotes standardisé via la gestion logicielle. Cependant, des couches d’abstraction supplémentaires apparaissent : les messages d’erreur sont parfois moins précis, et les mises à jour des pilotes doivent être contrôlées de manière stricte, car elles peuvent impacter d’autres applications.

Critères de décision pour les entreprises

  • Rollout-Kontrolle: Fournir la Native Library avec chaque application est souvent plus propre que de modifier ODBC au niveau système.
  • Change-Management: ODBC convient si les versions de pilotes sont gérées de façon centralisée et sont bien testées.
  • Fehlerdiagnose: Les chemins natifs sont fréquemment plus directs à déboguer (Handshake/TLS/Auth).
  • Kompatibilität: Pour les plugins d’authentification et les politiques TLS, le pilote utilisé peut être déterminant.

Dans de nombreux environnements d’entreprise stables, on privilégie pour les applications de bureau ou de service en production la Native Library (versionnée de manière ciblée et fournie avec l’application) et l’on utilise ODBC plutôt pour l’intégration d’outils tiers.

Verbindungsparameter sauber definieren: Host, Port, Timeouts, Failover

Une erreur fréquente dans des applications qui ont évolué au fil du temps est une configuration «connectée n’importe comment». Pour l’exploitation et la maintenance, vous avez besoin d’une définition claire et traçable des paramètres de connexion — et ce, par environnement (développement, test, production) sans incrustation dure dans les fichiers du programme.

Paramètres importants du point de vue de l’exploitation :

  • Host/Port : par défaut 3306, mais dans des réseaux segmentés des ports différents sont courants.
  • Connect Timeout : protège contre des tentatives de connexion «bloquées» en cas de problèmes de routage ou DNS.
  • Read/Write Timeout : empêche qu’une requête isolée bloque le processus en cas de problèmes réseau.
  • Keepalive : utile pour des phases d’inactivité prolongées, en particulier sur des liaisons WAN/VPN.
  • Failover-Strategie : en cas de réplication/cluster, vous devez définir comment les clients peuvent basculer (ou décider de ne pas basculer automatiquement).

Règle pratique : les timeouts ne sont pas un «nice-to-have», ils font partie de la sécurité d’exploitation. Sans temporisations claires, des clients ou services isolés peuvent monopoliser des ressources et provoquer des effets en cascade (p. ex. pools de threads saturés, IU non réactive, accumulation de jobs).

TLS und Zertifikate: Verschlüsselung ist ein Betriebsprojekt, kein Haken

Dans les environnements modernes, TLS (Transport Layer Security, c.-à-d. chiffrement sur le canal de transport) n’est pas optionnel. L’essentiel est que TLS ne soit pas seulement «activé», mais correctement validé : vérifier le certificat serveur, contrôler la chaîne de CA, assurer la vérification du nom d’hôte et exclure les protocoles obsolètes.

Pièges typiques avec Delphi/FireDAC en exploitation :

  • Zertifikatspfad und Berechtigungen: Les services s’exécutent souvent sous des comptes dédiés ; les fichiers CA / magasins de certificats doivent être accessibles depuis ces comptes.
  • Hostname vs. Zertifikat-CN/SAN: Si les clients se connectent via des noms d’alias (DNS-CNAME, VIP), le certificat doit couvrir ces noms.
  • Certificats intermédiaires : Des chaînes incomplètes fonctionnent dans certains outils, mais échouent dans d’autres environnements.
  • « Chiffré, mais non vérifié » : Un contournement anti-pattern fréquent consiste à désactiver la vérification. C’est risqué en exploitation et doit être évité.
  • Pour les responsables IT, il est important ici de définir : qui déploie les certificats, comment fonctionne le renouvellement et comment vous surveillez la validité. Le chiffrement n’est pas uniquement une préoccupation applicative, il concerne les processus PKI (Public Key Infrastructure) et les fenêtres de changement.

    Jeux de caractères, collations et « caractères spéciaux corrompus » : éviter systématiquement les causes

    Un classique lors des migrations de bases de données et des nouvelles connexions sont des caractères spéciaux erronés ou des tris « bizarres ». La cause n’est presque jamais « Delphi ne peut pas UTF-8 », mais un mélange de valeurs par défaut d’encodage, de définitions de tables/colonnes et du handshake client.

    Ce à quoi vous devez prêter attention :

    • Paramètres par défaut du serveur vs. définition du schéma : Ne vous fiez pas aux valeurs par défaut globales. Définissez explicitement le jeu de caractères et la collation au niveau de la base de données et des tables.
    • Variante UTF-8 : Dans les environnements MariaDB/MySQL, utf8mb4 est le choix robuste (Unicode complet incluant les caractères sur 4 octets). L’ancien « utf8 » ne couvre pas tout.
    • Handshake client : Le pilote doit savoir dans quel encodage il envoie/reçoit. Si client et serveur négocient différemment, des erreurs de données silencieuses apparaissent.
    • Tri (Collation) : La collation influence les comparaisons et ORDER BY. Pour le multilingue ou les jeux de données mixtes, une décision réfléchie est nécessaire.

    En exploitation, l’important n’est pas tant la collation « correcte » en théorie que la cohérence : la définir une fois, la documenter et la contrôler lors des migrations avec des requêtes de vérification. Dans les applications métier proches des processus, les changements de tri sont souvent détectés tardivement (p. ex. dans les listes, les exports ou la logique des doublons).

    Authentification et droits utilisateurs : droits minimaux, rôles clairs

    MariaDB propose différents mécanismes d’authentification (basés sur mot de passe, parfois via plugins). Pour les applications, il est essentiel d’utiliser un compte DB dédié et d’aligner les droits strictement sur le besoin. « Droits DBA pour l’application » est un risque inutile.

    Pratique recommandée en environnements d’entreprise :

    • Comptes séparés par application/service (et, le cas échéant, par locataire/environnement).
    • Least Privilege : uniquement SELECT/INSERT/UPDATE/DELETE sur les objets nécessaires, pas de droits globaux.
    • Pas de droits DDL dynamiques (CREATE/ALTER) dans les applications en production, sauf si cela fait partie d’un processus de migration contrôlé.
    • Rotation des mots de passe avec une mise à jour planifiable (p. ex. accès valides en parallèle pour de courtes fenêtres de transition).

    Si l’application exécute des tâches en arrière-plan (importations, interfaces, traitement par lot), il est souvent pertinent d’utiliser des comptes séparés pour ces processus. Cela améliore l’auditabilité et limite l’impact en cas de compromission des identifiants.

    Transactions, isolation et verrouillage : planifier plutôt que « la base de données est parfois lente »

    Dans de nombreuses applications existantes Delphi, les modifications de données ont évolué au fil du temps : mises à jour isolées sans frontières transactionnelles claires, hypothèses « optimistes » ou verrous trop larges. MariaDB se comporte différemment selon la Storage Engine ; en pratique InnoDB est généralement utilisé (transactions, Row-Level-Locks, crash-recovery).

    Pour les responsables IT et de projet, les points suivants sont déterminants :

    • Limites de transaction: Une opération métier (p. ex. enregistrer une commande) devrait appartenir à une transaction définie. Des limites floues génèrent des états intermédiaires difficiles à reproduire.
    • Niveau d’isolation: Détermine quels « états intermédiaires » sont visibles. Un niveau d’isolation trop élevé peut augmenter les verrous et les temps d’attente, un niveau trop bas peut produire des résultats métiers incorrects.
    • Verrouillage / interblocages: Les interblocages ne sont pas un « bug de la base de données », mais un indicateur de chemins d’accès concurrents. Il est crucial que l’application les détecte, les consigne proprement et réessaye de manière contrôlée (Retry) – toutefois avec des limites.
    • Transactions longues: Des transactions ouvertes pendant des interactions UI ou des processus longs sont une cause fréquente de verrous et de problèmes de performance.

    En pratique, il convient d’avoir : des transactions courtes, un ordre d’exécution clair pour les mises à jour (pour réduire les interblocages), et une journalisation qui, en cas d’erreur, permette de reconstituer les opérations SQL concernées et le contexte, sans consigner de données sensibles en clair.

    Performance : index, paramètres, allers-retours et pièges typiques FireDAC

    Si, après la migration vers MariaDB, « tout semble un peu plus lent », cela tient rarement à MariaDB en tant que produit, mais à une combinaison de conception des requêtes, d’indexation et du comportement du client. FireDAC offre de nombreux leviers — l’enjeu est de les garder maîtrisables en production.

    Vérifier les index et la réalité des requêtes

    Pour l’exploitation, il est essentiel d’identifier les requêtes principales et de les évaluer via des plans EXPLAIN. Causes typiques de charges inattendues :

    • index composés manquants ou incorrects (index multi-colonnes adaptés à l’utilisation en WHERE/ORDER BY)
    • recherches LIKE sans stratégie appropriée (p. ex. préfixe vs. recherche en texte intégral)
    • fonctions appliquées aux colonnes dans les clauses WHERE (l’index n’est pas utilisé)
    • forte variance des valeurs de paramètres (le choix du plan varie)

    Cela relève moins d’une « optimisation développeur » que d’une discipline opérationnelle : vérifier régulièrement les requêtes critiques, contrôler les régressions après les releases, et aligner la logique SQL avec les exigences métier.

    Réduire les allers-retours et choisir consciemment le comportement de fetch

    Aller-retour signifie : un cycle requête/réponse entre l’application et la base de données. De nombreux petits allers-retours sont souvent insignifiants sur LAN, mais coûteux via VPN ou en cas de forte parallélisme. FireDAC peut récupérer les données par blocs (options de fetch) et offre des opérations batch/array. Il est important de ne pas activer ces options de façon « globale » et agressive, mais de décider au cas par cas selon le type d’usage (listes, écrans de détail, export, job d’interface).

    Utiliser des paramètres plutôt que du SQL en clair

    Les requêtes paramétrées préviennent non seulement l’injection SQL, mais améliorent aussi le caching des plans et réduisent les problèmes d’encodage. Pour l’exploitation, cela se traduit par : moins de « cas particuliers », moins d’erreurs difficiles à expliquer liées à certains caractères, et plus de stabilité pour les requêtes récurrentes.

    Pooling de connexions et parallélisme : Desktop, service, serveur de terminaux

    Dans les environnements d’entreprise, le mode d’utilisation est déterminant : un client desktop unique n’est pas comparable à 50 utilisateurs parallèles sur un serveur de terminaux ou à un Windows-/Windows- et Linux-services, qui exécute des jobs en arrière-plan. « Trop de connexions » entraîne non seulement des limites, mais aussi une charge inutile due aux handshakes et à la mémoire.

    Points importants à considérer :

    • Par processus vs. par thread : FireDAC-Verbindungen sind des ressources ; planifiez combien d’opérations DB parallèles sont réellement nécessaires.
    • Pooling : un pool réduit la surcharge de connexion, mais exige un « nettoyage » soigné (terminer les transactions, réinitialiser les paramètres de session).
    • État de session : si vous définissez des variables par session (p. ex. SQL_MODE, fuseau horaire), elles doivent être cohérentes dans le contexte du pool.
    • Serveur de terminaux : de nombreux utilisateurs partagent le même serveur, mais pas le même processus. Cela influence la façon dont le nombre de connexions évolue en montée en charge.

    Du point de vue exploitation, il doit exister un objectif clair : combien de connexions actives en pointe sont acceptables, quelles limites s’appliquent côté DB et comment l’application se comporte sous charge (backpressure plutôt que « tout en même temps »).

    Scénarios d’erreur issus de la pratique : ce qu’il faut détecter tôt

    De nombreux problèmes n’apparaissent pas lors du test développeur, mais dans l’interaction entre réseau, droits, mises à jour et corpus de données. Classes d’erreurs typiques :

    • « Can’t connect » : DNS, pare-feu, port incorrect, routes manquantes, timeouts de connexion trop courts.
    • Échec du TLS-Handshake : certificats expirés, CA incorrecte, nom d’hôte incompatible, politique de protocoles trop stricte ou trop laxiste.
    • « Access denied » : droits non alignés avec les masques d’hôte (utilisateur@hôte), rotation de mots de passe sans déploiements coordonnés.
    • Problèmes d’encodage : jeu de caractères par défaut incohérent, données mixtes issues d’importations anciennes.
    • Deadlocks / lock waits : transactions longues, ordres de mise à jour différents, index manquants sur colonnes FK.

    Recommandation : définissez pour chaque classe d’erreur une check-list de diagnostic (quels logs, quelles valeurs d’état DB, quelles vérifications réseau). Cela réduit nettement le MTTR (Mean Time to Repair), sans que vous n’ayez à chercher « dans le brouillard » en cas d’incident.

    Migrations et exploitation mixte : de MySQL ou systèmes legacy vers MariaDB

    Dans les projets, l’intégration de MariaDB apparaît souvent dans un contexte de modernisation : des versions MySQL hors support, la consolidation d’un serveur de bases de données, ou l’extraction d’une application d’un accès aux données legacy (p. ex. BDE). Techniquement ces étapes sont réalisables — les risques se jouent dans les détails.

    Points importants pour une trajectoire sûre :

    • Vérifier les types de données : notamment date/heure, échelles DECIMAL, colonnes texte, logique NULL/valeurs par défaut.
    • Dialecte SQL et fonctions : de petites différences dans les fonctions ou les paramètres de strict mode peuvent modifier la logique métier.
    • Procédures stockées / vues : si utilisées, la compatibilité et le processus de déploiement doivent être clairement définis.
    • Fuseaux horaires : le fuseau serveur et celui de la session influencent le comportement de TIMESTAMP/DATETIME ; pour les audits et les interfaces, la cohérence est essentielle.
    • Plan de bascule : synchronisation des données, fenêtre de gel, option de rollback et monitoring pendant les premiers jours.

    Surtout pour des solutions logicielles proches des processus, une approche « Big Bang » est rarement nécessaire. Une approche par étapes est souvent pertinente : d’abord établir la compatibilité des pilotes et de la configuration, ensuite vérifier le modèle de données et les requêtes, puis migrer les modules progressivement. Ces travaux peuvent s’articuler avec des sujets internes de modernisation, par exemple lorsqu’une Delphi modernisation ou un BDE-remplacement sont menés en parallèle.

    Monitoring, Logging und Wartung: Was Betrieb und Revision erwarten

    Wenn eine Delphi-Anwendung produktiv auf MariaDB zugreift, sollte die Datenbankanbindung nicht „unsichtbar“ sein. Für Administration und Compliance sind Nachvollziehbarkeit und minimale Angriffsfläche wichtig.

    Was Sie auf Datenbankseite im Blick behalten sollten

    • Verbindungszahlen und Spitzen: korreliert mit Release-Wechseln, Terminalserver-Last oder Job-Zeitfenstern.
    • Slow Query Log: zeigt, wo reale Zeit verloren geht (nicht nur CPU, auch Locks).
    • Lock-Wartezeiten: Hinweise auf konkurrierende Operationen und fehlende Indizes.
    • Replikationsstatus (falls genutzt): Verzögerungen sind relevant für Auswertungen und Failover.

    Was die Anwendung liefern sollte

    • Korrelations-IDs: damit DB-Fehler einem fachlichen Vorgang zugeordnet werden können.
    • Technisches Logging mit SQL-Kontext (welcher Use-Case, welche Query-Klasse), aber ohne sensitive Inhalte im Klartext.
    • Konfigurations-Transparenz: welche Treiberversion, welche TLS-Policy, welche Serveradresse – für Supportfälle entscheidend.

    Das Ziel ist nicht „mehr Log“, sondern brauchbares Log: schnell eingrenzbar, datenschutzkonform und für 2nd-Level-Support verwertbar.

    Sicherheit und Hardening: Praktische Maßnahmen, die in Delphi-Projekten oft fehlen

    Eine stabile Anbindung heißt auch: keine unnötigen Angriffsflächen. Neben TLS und minimalen Rechten spielen folgende Punkte eine Rolle:

    • Secrets-Handling: Passwörter nicht in Klartext-Konfigurationsdateien ohne Schutz. In Windows-Umgebungen kann DPAPI/Protected Storage helfen; unter Linux sind RESTriktive Dateirechte und Secret-Stores üblich.
    • SQL-Injection-Schutz: konsequent parameterisieren, auch bei Suchmasken und dynamischen Filtern.
    • Patch-Prozess: Treiber/Client-Libraries sind Teil der Angriffsfläche. Versionierung und Rollout sind genauso wichtig wie Server-Patches.
    • Netzsegmentierung: DB-Server nicht „für alles“ erreichbar, sondern nur aus den Subnetzen der Applikationsserver/Clients.

    Für Entscheider ist hier relevant: Sicherheit entsteht weniger durch Einzellösungen, sondern durch einen wiederholbaren Prozess (Änderungen testen, kontrolliert ausrollen, überwachen).

    Checkliste: So wird die MariaDB-Anbindung mit FireDAC langfristig wartbar

    Die folgende Checkliste ist bewusst betriebsnah formuliert und eignet sich als Grundlage für Projektabnahme oder Betriebsdokumentation:

    1. Treiberweg festgelegt (native Library oder ODBC) inkl. Versionierungs- und Update-Strategie.
    2. Konfiguration externalisiert (Umgebungen getrennt, keine Hardcodes, nachvollziehbare Defaults).
    3. TLS sauber umgesetzt (Verifikation aktiv, Zertifikatskette vollständig, Renewal-Prozess definiert).
    4. Zeichensatzstrategie (utf8mb4, Collations dokumentiert, Migration geprüft).
    5. DB-Rollen und Rechte (Least Privilege, getrennte Accounts, Rotation planbar).
    6. Transaktionsdesign (klare Grenzen, kurze Laufzeiten, Deadlock-Handling definiert).
    7. Monitoring/Logging (Slow Queries, Lock-Wait, Korrelations-IDs, datenschutzkonform).
    8. Last- und Verbindungsmodell (Pooling, Parallelität, Limits, Terminalserver-/Service-Szenarien).

    Fazit: „Funktioniert“ reicht nicht – eine gute Anbindung ist eine Betriebsentscheidung

    MariaDB peut être intégrée de manière fiable avec Delphi et FireDAC, si la connexion est considérée comme partie intégrante de l’architecture globale : le choix du pilote, le TLS, les jeux de caractères, les droits, les transactions et le monitoring doivent être cohérents. Qui décide et documente proprement ces points dès le départ réduit nettement les surprises en exploitation — en particulier dans des applications d’entreprise évoluées et proches des processus, où la stabilité et la maintenabilité priment sur des contournements à court terme.

    Si vous souhaitez structurer votre connexion MariaDB dans le cadre d’une modernisation, d’une remplacement BDE ou d’une consolidation des accès aux données, discutez avec nous de vos contraintes et du chemin de migration le plus pertinent :

    Dans le contexte métier, les connexions FireDAC MariaDB et Delphi MariaDB jouent également un rôle important lorsque les intégrations, les flux de données et le développement doivent s’articuler proprement.

    Discuter d’un projet ou d’une modernisation avec Net-Base.

    Étape suivante

    Lorsque ce sujet devient un projet concret, l'architecture, l'existant et l'exploitation doivent être examinés ensemble dès le départ.

    Nous n'intervenons pas seulement sur des questions ponctuelles, mais aussi lorsque des fragments de code source, des problématiques liées aux systèmes legacy ou des concepts de portail doivent se transformer en un projet d'entreprise robuste.

    • L'état des lieux, l'état cible et les risques techniques sont évalués conjointement.
    • REST, l'accès aux données, les portails et le déploiement ne sont pas repoussés en tant que conséquences ultérieures.
    • Vous identifiez tôt quelle voie est viable sur le plan économique et opérationnel.

    Partager l'article

    Partager directement cette publication

    LinkedIn, X, XING, Facebook, WhatsApp et e-mail sont immédiatement disponibles. Pour Instagram, nous préparons directement le lien et un court texte.

    Courriel

    Instagram s'ouvre dans un nouvel onglet. Le lien et le court texte sont préalablement copiés dans le presse-papiers.