Net-Base Magazine

14.06.2026

Refonte de la base de données d’un logiciel Delphi développé au fil du temps : moderniser en toute sécurité sans interruption de service

La refonte d'une base de données dans un logiciel Delphi existant est moins un «projet SQL» qu'une intervention sur l'exploitation, les interfaces et la responsabilité des données. Cet article montre comment contrôler les risques, rendre les migrations testables et stabiliser le quotidien des équipes IT et métier...

14.06.2026

Du thème du magazine à la pratique des projets

Pages de services et techniques pertinentes pour l'article

Une refonte de base de données sur un Delphi-logiciel hérité est rarement une simple substitution de tables ou un « nouveau schéma ». En pratique, la base de données supporte souvent tout ce qui doit fonctionner au quotidien dans l’entreprise : pièces justificatives, données de référence, historiques, interfaces vers ERP/DMS/CRM, analyses, droits d’accès et, last but not least, l’attente que la production RESTe stable pendant la migration.

De nombreuses applications Delphi se sont développées de manière fiable sur plusieurs années. C’est précisément leur force — et en même temps la raison pour laquelle les modifications de base de données sont délicates. La logique métier ne réside pas seulement dans le code, mais aussi dans les procédures stockées, les déclencheurs, les conventions implicites et les données « qui ont toujours été comme ça ». Qui modernise sans méthode s’expose à des interruptions, des données incohérentes et des anomalies longues à diagnostiquer, parfois révélées plusieurs semaines plus tard.

Ce texte décrit une approche robuste pour la direction informatique, les administrateurs et les responsables techniques de projet : comment planifier la refonte, quelles garde-fous techniques s’avèrent efficaces, comment rendre les migrations testables et comment améliorer de manière tangible la sécurité, la maintenabilité et la capacité d’interface — sans imposer un redémarrage de type big-bang.

Pourquoi la refonte de la base de données est particulièrement critique dans les projets Delphi

Delphi constitue souvent l’ossature des logiciels métier proches des processus dans les ETI et les environnements d’entreprise spécialisés. Beaucoup de ces systèmes ont été conçus à une époque où les accès aux données étaient étroitement mêlés à l’interface utilisateur et à la logique métier. De là découlent des risques typiques :

  • Accès aux données fortement couplés : instructions SQL dispersées dans les formulaires, rapports, tâches d’arrière-plan et composants d’interface. Une modification du schéma a alors un effet simultané à de nombreux endroits.
  • Modèles de données hérités : « tables universelles », réutilisation multiple de colonnes, types de données mélangés, contraintes manquantes. Les données sont fonctionnelles, mais difficiles à valider.
  • Contrats cachés : outils externes, exports Excel, systèmes tiers ou jobs batch dépendent de noms de colonnes, d’ordres de tri ou d’identifiants, sans qu’il n’y ait de documentation.
  • Exploitation sous charge continue : la refonte ne se déroule pas en laboratoire. Il y a des utilisateurs en production, des jobs, des imports, des traitements nocturnes et des fenêtres de maintenance serrées.

Le point décisif : une refonte de base de données est un projet d’architecture. Elle touche à la responsabilité des données, aux contrats d’interface, aux processus d’exploitation et à la testabilité de manière égale.

Définir clairement les objectifs : qu’est‑ce qui doit être meilleur après la refonte ?

Sans définition d’objectifs claire, une refonte devient vite un gouffre. Sur le terrain, les catégories d’objectifs suivantes se sont avérées utiles et doivent être précisées en amont :

1) Exploitation & stabilité

Exemples : fenêtres de maintenance plus courtes, déploiements reproductibles, meilleure performance sur les transactions clés, moins de deadlocks, temps de sauvegarde/RESTore prévisibles, rollback clair.

2) Maintenabilité & évolution

Exemples : versionnage de la base de données, migrations traçables, moins de « cas particuliers » dans l’accès aux données, entités clairement définies, meilleure couverture de tests au niveau des données.

3) Sécurité & conformité

Exemples : droits propres (moindre privilège / Least Privilege), piste d’audit (modifications traçables), chiffrement au repos/ en transit, séparation des mandants, accès administrateurs contrôlés.

4) Intégration & Schnittstellenfähigkeit

Exemples : API stables, souveraineté des données clairement définie, découplage du reporting et de la base de données opérationnelle, processus d’import/export robustes.

Ces objectifs influencent les décisions d’architecture : par exemple, avez-vous besoin d’une phase de transition avec exploitation parallèle, le « zero-downtime » est-il réaliste ou allez-vous utiliser une fenêtre de maintenance planifiée.

Refonte de la base de données pour un logiciel Delphi hérité : déclencheurs typiques

Dans des environnements en place, nous observons fréquemment des déclencheurs récurrents qui imposent une refonte ou la rendent du moins économiquement justifiable :

  • BDE-remplacement : La Borland Database Engine présente des risques opérationnels (pilotes, dépendances 32 bits, déploiement). Les environnements modernes privilégient plutôt un remplacement de BDE par une connexion native (Delphi-couche d’accès aux données) et des pilotes de base de données natifs.
  • Changement du système de base de données : par ex. de Firebird ou InterBase vers PostgreSQL ou SQL Server, souvent motivé par des concepts d’exploitation, des stratégies HA/backup ou la standardisation.
  • Problèmes de scalabilité : la croissance du volume de données, du nombre d’utilisateurs ou du traitement batch met à l’épreuve l’indexation, le verrouillage et les plans de requêtes.
  • Capacité multitenante ou modèle de droits : des exigences ultérieures rencontrent un modèle initialement « un locataire, un site ».
  • Projets d’interfaces : un portail client, de nouveaux services REST ou des intégrations ERP nécessitent des contrats de données clairs et stables.

Il est important de ne pas confondre le déclencheur avec la solution. « Nous passons à PostgreSQL » n’est pas un objectif, mais un moyen. L’objectif est par exemple un meilleur fonctionnement opérationnel, des droits plus clairs ou une extensibilité contrôlée.

Etat des lieux : sans inventaire des données, pas de plan fiable

Une planification solide commence par un inventaire factuel. Il ne doit pas durer des mois, mais doit faire apparaître les dépendances critiques :

Analyse technique

  • Carte du schéma : tables, vues, procédures stockées, déclencheurs, index, contraintes, séquences/mécanismes IDENTITY.
  • Chemins d’accès : où le SQL est-il exécuté ? UI, services, tâches en arrière-plan, générateurs de rapports, interfaces, importateurs.
  • Frontières de transaction : quels processus nécessitent de véritables transactions ACID (atomique, cohérent, isolé, durable) ? Où des mises à jour partielles sont-elles tolérées ?
  • Points chauds de performance : requêtes principales, temps d’attente de verrouillage, transactions longues, tâches nocturnes, tables volumineuses.

Analyse métier

  • Gouvernance des données : quel est le système principal pour quelles données ? Qu’est-ce qui provient de l’ERP, qu’est-ce qui est maintenu localement ?
  • Historique et conservation : quelles données doivent être conservées pour satisfaire les exigences d’audit ? Quelles peuvent être nettoyées/archivées ?
  • Processus critiques : clôture mensuelle, expédition, cycles de facturation, production/BDE, certificats ou preuves de contrôle.

Particulièrement pour un logiciel Delphi hérité, la gouvernance des données est souvent implicite. Si elle n’est pas clarifiée, on crée vite « tables plus propres » et on déplace simplement les problèmes vers les interfaces et l’exploitation.

Architecture cible pour l’accès aux données : découpler sans tout réécrire

Le levier le plus important pour réduire les risques est un accès aux données contrôlé. Il s’agit moins du langage de programmation que d’une logique claire de couches (souvent qualifiée d’architecture « Layer ») : UI/Client, logique métier, accès aux données. Plus ces couches sont séparées, plus la surface d’explosion lors d’une refonte du schéma diminue.

Dans les environnements Delphi, une consolidation est souvent pertinente : abandon des SQL « ad-hoc » distribués au profit de points d’accès aux données centralisés. BDE-Ablosung mit nativer Anbindung peut aider, car il modélise de manière plus structurée les pilotes, la liaison des paramètres, les transactions et le pooling. Ce qui compte, ce n’est pas l’outil, mais la règle : les changements de schéma ne doivent pas devoir être répercutés à 200 endroits dans l’UI.

Étape intermédiaire pragmatique : façade de base de données

Si un grand refactoring n’est pas possible, une façade de base de données peut aider : vues ou synonymes qui reproduisent temporairement d’anciens noms/structures de colonnes pendant que le nouveau modèle est déjà mis en place en interne. Ce n’est pas un état permanent, mais un moyen éprouvé pour déployer les migrations de manière itérative.

Refactoring du schéma : quelles modifications valent la peine — et lesquelles sont dangereuses

Pendant une refonte, toutes les modifications ne se valent pas. Certaines améliorent rapidement la stabilité et la qualité des données, d’autres entraînent d’importants effets secondaires.

Améliorations « à faible risque » à fort impact

  • Ajouter des contraintes : NOT NULL, clés étrangères, index uniques. Elles permettent de détecter les erreurs plus tôt et empêchent les incohérences « silencieuses ».
  • Consolider les types de données : par ex. séparation claire des dates/heures, des montants numériques, des identifiants. Particulièrement important pour les interfaces et le reporting.
  • Indexation selon l’usage : index le long des chemins réels de filtrage et de jointure, pas selon l’intuition.
  • Introduire des champs d’audit : enregistre « qui/quoi/quand » (p. ex. ChangedAt, ChangedBy). C’est extrêmement utile pour l’exploitation et l’analyse des incidents.

Modifications à haut risque (planification ciblée)

  • Modifier la stratégie de clé primaire/ID : p. ex. passage de clés composées à des surrogate keys ou inversement. Cela impacte profondément la logique, les importations/exportations et les références.
  • Normalisation de larges domaines : pertinente sur le plan fonctionnel, mais souvent associée à des adaptations massives des écrans, rapports et interfaces.
  • Migration vers le multitenant : colonnes de mandant, Row-Level-Security, partitionnement des données — cela nécessite un concept d’autorisations propre et des jeux de tests.

Une approche éprouvée consiste à séparer la refonte en « fondation sécurité et exploitation » (contraintes, audit, gestion des versions, droits) et « optimisation du modèle fonctionnel ». Ainsi, on obtient tôt des bénéfices mesurables, sans devoir modifier immédiatement chaque processus.

Stratégie de migration : Big Bang, exploitation parallèle ou séquence étape par étape ?

Le choix de la stratégie détermine le risque, le calendrier et le concept d’exploitation. Trois schémas sont courants en entreprise :

1) Fenêtre de maintenance planifiée (migration cutover classique)

Vous mettez l’application en maintenance, migrez les données et le schéma, validez, puis basculez. Avantage : découpage clair. Inconvénient : temps d’indisponibilité et forte pression lors du cutover.

2) Exploitation parallèle avec synchronisation

Les bases de données ancienne et nouvelle fonctionnent temporairement en parallèle. Les modifications sont répliquées ou transmises via une logique de synchronisation. Avantage : moins d’indisponibilité. Inconvénient : conflits complexes, exigences accrues en matière de monitoring et de souveraineté des données.

3) Migration progressive par domaine

Vous migrez les domaines fonctionnels les uns après les autres (p. ex. d’abord les données de référence, puis les pièces, puis l’historique). Avantage : contrôlable, facile à tester. Inconvénient : les états de transition nécessitent des règles claires et parfois des adaptateurs temporaires.

«Zero-Downtime» est possible, mais rarement gratuit. Souvent, une courte fenêtre de maintenance bien préparée est plus rentable qu’une synchronisation parallèle qui dure des mois.

Assurer la testabilité : les migrations doivent être répétables et vérifiables

Une refonte de base de données échoue rarement par manque de savoir-faire SQL, mais par insuffisance de vérifiabilité. Deux principes sont centraux :

Les migrations comme versionnement, pas comme travail manuel

Plutôt que des «modifications sur simple demande», les modifications de schéma doivent être des migrations versionnées : numérotées de manière univoque, avec dépendances, et exécutables de façon identique en Test/Stage/Prod. Cela facilite les audits, les rollbacks et le travail en équipe.

Validation par des contrôles métier

Les contrôles techniques (comptage des lignes (Row Counts), intégrité des clés étrangères) ne suffisent pas. Il faut des plausibilités métier : totaux sur les pièces, comptes ouverts, stocks, chaînes de statut. Ces contrôles doivent pouvoir être automatisés, au minimum sous forme de rapports/requêtes répétables.

Une pratique éprouvée est le «Migration-Runbook» : une liste de contrôle par cutover avec horaires, responsables, requêtes de vérification, critères d’abandon et plan de retour en arrière.

Exploitation & administration : Backup, Recovery, Monitoring comme composante du projet

Une refonte modifie non seulement les tables, mais aussi les routines d’exploitation. C’est pourquoi l’administration doit être impliquée tôt :

  • Stratégie Backup/RESTore : sauvegarde complète, incrémentielle, point-in-time recovery. Les tests de RESTauration sont plus importants que la simple création des backups.
  • Monitoring : métriques de base de données (locks, slow queries, CPU/IO), durées des jobs, taux d’erreur dans les interfaces. Sans baseline, le «mieux» n’est pas mesurable.
  • Fenêtres de maintenance et entretien des index : rebuild/REINDEX, mise à jour des statistiques, vacuum/autovacuum (pour PostgreSQL). Cela doit être adapté au volume de données.
  • Modèle de droits et de rôles : séparation des App-User, comptes de service, admins. Pas de comptes «tout-puissants» dans les applications.

Particulièrement si vous partez d’une configuration historiquement «laxiste», le concept de droits est souvent une révélation : de nombreuses applications fonctionnent avec des droits trop larges parce que c’était pragmatique auparavant. Lors de la refonte, c’est l’occasion de mettre cela au propre.

Prendre en compte les interfaces : la base de données est rarement le seul système

Dans un logiciel d’entreprise ayant évolué, les interfaces sont généralement la partie sous-estimée. Une refonte de base de données modifie implicitement les contrats de données : IDs, types de données, logique de statut, instants d’enregistrement.

Si un portail client, un DMS ou un ERP consomme des données, il doit être clair s’il accède directement à la base de données (à éviter) ou via des interfaces définies (API, fichiers, ETL). API signifie «Application Programming Interface», et en production elle représente un contrat stable : entrées, sorties, cas d’erreur, gestion des versions.

Pour Delphi-environnements, une démarche vers une couche de services est souvent judicieuse : pas parce que «Microservices» sonne à la mode, mais parce que vous centralisez les accès aux données et la validation. Cela réduit la surface d’impact lors de futures modifications des données.

Un contexte de lien interne utile serait par ex. un article sur la construction d’intégrations et de flux de données robustes, ou sur la modernisation Delphi sans perte de la logique métier – les deux répondent à la même intention de recherche.

Qualité des données et nettoyage : la partie la plus difficile est souvent les données héritées

Beaucoup de systèmes fonctionnent malgré des données non propres : enregistrements maîtres en double, références invalides, « comptes de regroupement », textes libres au lieu de codes. Un nouveau schéma rend ces problèmes visibles — et c’est une bonne chose, à condition de l’anticiper.

Approche éprouvée

  • Profilage avant migration : Quelles valeurs apparaissent réellement ? Quels champs sont vides en pratique ? Où se situent les valeurs aberrantes ?
  • Définir les règles : Qu’est-ce qui sera autorisé à l’avenir ? Qu’est-ce qui sera corrigé automatiquement ? Qu’est-ce qui doit être nettoyé manuellement ?
  • Concept d’archivage : Tout n’a pas besoin de rester dans la base opérationnelle. Les historiques peuvent être transférés vers des structures séparées, tant que les analyses et les audits continuent de fonctionner.

Important : le nettoyage des données est un processus métier. L’informatique peut implémenter les règles techniquement, mais la décision sur les corrections admissibles doit être portée par le métier.

Performance après la refonte : pas seulement plus rapide, mais plus prévisible

Un objectif fréquent est « améliorer la performance ». Dans la pratique, la « prévisibilité » est encore plus importante : durées d’exécution stables, pas de pics soudains, pas de deadlocks lors des clôtures mensuelles.

Mesures techniques éprouvées :

  • Transactions courtes : Les actions de l’interface ne doivent pas maintenir des transactions de plusieurs minutes, en particulier en environnement multi-utilisateur.
  • Index ciblés : Basés sur des requêtes réelles, avec surveillance après la mise en production.
  • Séparation opérationnel vs. reporting : La charge de reporting peut perturber les processus opérationnels. Réplicas de lecture, pipelines ETL ou tables de reporting séparées sont des contre-mesures typiques.
  • Jobs batch planifiables : Tâches avec durées clairement définies, journalisation, mécanismes de reprise et d’alerte.

Une refonte est réussie lorsque ce ne sont pas seulement des requêtes isolées qui sont plus rapides, mais que l’exploitation produit moins de « surprises ».

Plan de gestion des risques et de rollback : la voie de secours doit être prête avant le démarrage

Le rollback n’est pas un signe de pessimisme, mais une gestion professionnelle des risques. Un plan robuste répond à :

  • Quand interrompre ? Critères d’arrêt clairs (p. ex. échec des contrôles de validation, dépassement d’un seuil de durée).
  • À quoi revient-on ? Snapshot/sauvegarde de l’ancienne base de données, version d’application définie, état de configuration.
  • Comment communiquer ? Qui informe le département métier, qui décide, qui documente ?

Particulièrement en cas de fonctionnement parallèle ou de migration progressive, le rollback est souvent plutôt un « rollforward » : vous corrigez et poursuivez la migration. Cela aussi nécessite un plan, afin qu’un incident ne devienne pas un problème récurrent.

Organisation du projet : rôles, responsabilités, points de décision

Une refonte de base de données est réussie quand les responsabilités sont claires :

  • Direction technique (architecture) : Vision cible, garde-fous, revue des migrations.
  • DBA/Administration : Concept d’exploitation, sauvegarde/reprise, monitoring, référence de performance.
  • Responsabilité métier des données : Règles de qualité des données, validation métier pour l’acceptation.
  • Release Management : Environnements de test, staging, Cutover-Runbook, communication sur les changements.

Les jalons décisionnels se sont avérés efficaces : après l’inventaire, après la migration prototype, après les tests de performance, avant le cutover. Cela rend le projet pilotable, même si de nouvelles informations émergent en cours de route.

Conclusion : modernisation disciplinée plutôt que prise de risques par activisme

Une refonte de la base de données d’un logiciel Delphi existant est réalisable si vous la concevez comme un projet d’architecture et d’exploitation : avec un inventaire précis, des objectifs clairs, des migrations versionnées, une validation solide et un concept réaliste de cutover et de rollback. Le gain technique est souvent plus important que « seulement » un nouveau schéma : une meilleure qualité des données, des interfaces plus stables, une exploitation maîtrisable et une base sur laquelle les étapes de modernisation (p. ex. services, portails, nouveaux clients) deviennent nettement moins risquées.

Si vous souhaitez préparer votre refonte de manière structurée – de la BDE-remplacement à la FireDAC-migration jusqu’à la migration vers PostgreSQL ou SQL Server – parlez-nous des démarches, des risques et d’une feuille de route de migration réaliste :

Dans le contexte métier, la Delphi modernisation et la migration des données jouent également un rôle important lorsque les intégrations, les flux de données et le développement doivent s’articuler de manière cohérente.

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

Étape suivante

Lorsque le sujet devient un projet réel, 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 reportés à des phases ultérieures.
  • Vous identifiez tôt quelle voie est viable économiquement et opérationnellement.

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 le 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.