Même si l'on choisit de ne pas réécrire le code existant, il est intéressant que des contraintes vérifient les mêmes conditions déjà vérifiées par la logique applicative interne. Dans cette situation, les contraintes se comportent comme un mécanisme de sécurité pour les erreurs dans la logique applicative ou pour les
Utiliser des contraintes pour assurer l’intégrité des données (2)

transactions qui entrent dans le système
sans passer par le filtre du processus de
validation d’application normal. De ce
point de vue, on peut utiliser les contraintes de la même manière que des
règles de clés en double: il incombe au
programmeur de vérifier que les enregistrements
ajoutés à un fichier ne produisent
pas de clés en double. Mais si tout le
reste échoue, la base de données empêchera
la création de clés en double et génèrera
un message d’erreur système.
C’est une bonne utilisation des
contraintes et, comme celles-ci sont très
efficaces, la pénalité de performances subie
par une double vérification de la
même condition (en supposant que le
code applicatif vérifie correctement la
condition de contrainte) est probablement
acceptable. Toutefois, cette utilisation
des contraintes ne fait rien pour
améliorer l’architecture applicative. La
deuxième difficulté en matière de
contraintes concerne la manière dont les
erreurs de contrainte sont signalées aux
applications en langage évolué (HLL,
high level language). Pour bénéficier pleinement
des contraintes, les applications
qui mettent à jour la base de données
doivent traiter les erreurs de contraintes.
Malheureusement, il n’est pas toujours
facile de déterminer quelle contrainte a
été violée par une certaine transaction et
de signaler cette information à l’utilisateur.
Ainsi, si plus d’une contrainte est associée
à un fichier particulier, l’ordre
dans lequel les contraintes sont vérifiées
est déterminé par le type de contrainte et
son ordre assigné, qui peut être complètement
arbitraire. De plus, dès qu’une erreur
de contrainte survient, le traitement
des autres contraintes s’arrête. Par conséquent,
il est difficile d’écrire un modèle
d’application iSeries standard qui présente
toutes les erreurs à la fois à l’utilisateur.
En outre, alors qu’un programme
ILE RPG peut distinguer une erreur de
contrainte d’autres types d’erreurs de fichier
(pas d’enregistrement trouvé, par
exemple) d’après le champ *STATUS
dans l’INFDS (information data structure),
il peut être difficile de savoir quelle
contrainte a causé une erreur et un appel
d’API est nécessaire pour obtenir des informations
détaillées sur l’erreur.
Cette complexité explique pourquoi la plupart des développeurs iSeries continuent
à utiliser les contraintes strictement
comme un mécanisme fail-safe
pour améliorer le code d’interception
d’erreurs existant. Mais, face à un projet
de modernisation d’applications d’envergure,
il vaut mieux investir dans la création
d’une suite de programmes de service
qui traitent les erreurs de
contraintes. Une fois cette infrastructure
créée, il est facile de l’adapter pour couvrir
les fichiers et contraintes supplémentaires.
Les contraintes appliquent le plus
haut niveau de partitionnement des applications
– les règles de gestion imposées
directement par la base de données.
Malheureusement, les techniques de traitement
des erreurs requises pour traiter
les erreurs détectées pendant l’imposition
des contraintes limitent les avantages
de celles-ci.
Téléchargez cette ressource

État des lieux de la réponse à incident de cybersécurité
Les experts de Palo Alto Networks, Unit 42 et Forrester Research livrent dans ce webinaire exclusif leurs éclairages et stratégies en matière de réponses aux incidents. Bénéficiez d'un panorama complet du paysage actuel de la réponse aux incidents et de sa relation avec la continuité de l'activité, des défis auxquels font face les entreprises et des tendances majeures qui modèlent ce domaine. Un état des lieux précieux pour les décideurs et professionnels IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Reporting RSE : un levier d’innovation !
- De la 5G à la 6G : la France se positionne pour dominer les réseaux du futur
- Datanexions, acteur clé de la transformation numérique data-centric
- Les PME attendent un meilleur accès aux données d’émissions de la part des fournisseurs
- Fraude & IA : Dr Jekyll vs. Mr Hyde, qui l’emporte ?
