Firebird Documentation IndexLivre Blanc Firebird en Entreprise → Conformité ACID et Firebird
Firebird Home Firebird Home Prev: Firebird est il “Prêt pour l'entreprise”?Firebird Documentation IndexUp: Livre Blanc Firebird en EntrepriseNext: Qui utilise Firebird?

Conformité ACID et Firebird

Atomicité
Cohérence
Isolement
Durabilité

Les quatre principes ACID sont l'atomicité, la cohérence, l'isolement et la durabilité.

Atomicité

L'atomicité garanti qu'il n'y a que deux résultats possibles pour une tâche (que l'on nomme transaction) qui implique des changements de multiples ensembles de données interdépendants : soit toutes les étapes ont été réalisées correctement et le résultat peut être validé dans la base comme une seule entité ou, si l'une des étapes n'a pas été réalisée, toutes les autres étapes doivent être défaites (“rolled back”), laissant l'état de la base inchangé.

L'atomicité est manifestement d'une extrême importance dans les systèmes financiers, où des balances non équilibrées du fait d'échecs partiels seraient une catastrophe. Les tableurs et les bases de données qui ne supportent pas les transactions ne peuvent pas être atomiques.

Firebird est entièrement “piloté par les transactions”: rien ne peut arriver en dehors du contexte d'une transaction.

Cohérence

La Cohérence est la capacité du moteur de bases de données à protéger la base de tous les changements d'état qui pourraient laisser un ensemble de données désynchronisé par rapport à un autre ensemble de données. Par exemple, le système doit être capable de reconnaître qu'une facture est liée à un client et aux éléments facturés. Il doit être capable d'éviter, par exemple, la suppression d'un client s'il existe encore des factures pour ce client, et la suppression d'une facture qui a des éléments associés.

L'implémentation pratique de telles dépendances est faite par la déclaration de contraintes d'intégrité référentielles (“foreign keys”) renforcée par des déclencheurs automatiquement générés. (Les déclencheurs sont automatiquement générés ou définis dans des blocs de code qui s'exécutent quand un enregistrement est inséré, modifié ou supprimé.) Le système de bases de données qui dépend du code d'une application pour gérer des règles de cohérence ne sont pas conformes à la règle de cohérence ACID. Firebird respecte parfaitement les règles d'intégrité définies par la norme.

Firebird garanti aussi la cohérence quand une seule transaction est exécutée pour effectuer des changements sur plusieurs bases à la fois, c'est ce que l'on appelle le “two-phase commit”. Les systèmes qui peuvent accéder à plusieurs bases à la fois de manière concurrente sans la possibilité de synchroniser les changement dans toutes les bases ne respectent pas le principe de cohérence.

Note

Firebird ne gère pas les déclaration d'intégrité référentielle multi-bases. Chaque base impliqué dans une transaction multi-bases est responsable de ses propres contraintes référentielles.

Isolement

L'isolement décrit la possibilité du moteur de bases de données de permettre à chaque utilisateur (ou transaction) d'opérer comme s'il était le seul utilisateur (ou la seule transaction). Le mécanisme d'isolement doit être capable de garder la base cohérente pour chaque transaction tant qu'elle est en cours, indépendamment de tout changement intervenant dans d'autres transactions. Les systèmes de gestion de bases de données qui sont conformes à ce principe offre en général différents niveaux d'isolement, qui sont définis dans les normes ISO/ANSI SQL.

En plus du niveau d'isolement décrit ci-dessus (Concurrency ou Repeatable Read), qui doit être supporté, Firebird supporte aussi Read Committed (quand une transaction peut voir le travail validé par les autres transactions) et, à contrario, Consistency ou Table Stability (quand une transaction qui peut écrire dans la base bloque l'accès aux tables qu'elle utilise aux autres transactions capables d'écrire ).

Durabilité

La durabilité garanti que la base va garder trace des changements en cours de manière que l'état de la base ne soit pas affecté si une transaction est interrompue. De sorte que, même si le serveur de base de données est débranché en plein milieu d'une transaction, les serveurs de base de données conformes à la norme ACID doivent remettre la base dans un état cohérent à leur redémarrage.

Journal des Transactions

La durabilité est l'un des principes les plus difficile à respecter. Les autres systèmes de base de données qui se disent ACID gèrent traditionnellement cela en enregistrant les transactions non validées dans un journal des transactions. Cependant, l'utilisation d'un journal de transaction n'a jamais totalement garanti la durabilité, puisque le fichier journal lui même peut être lui même corrompu logiquement ou physiquement par l'événement qui a interrompu la transaction.

Certains des SGBD qui reposent sur une solution de fichier journal pour satisfaire à la durabilité essaient de réduire les risques en utilisant des “write-ahead log” pour enregistrer les informations avant d'essayer de valider les changements. Si ce type de journal survit sans dommage, il peut être possible de retrouver le travail non validé quand le système se remet en marche et utiliser cette information pour remettre la base dans un état stable et la remettre dans l'état où elle était avant le problème. De tels systèmes sont caractérisés par la nécessité d'avoir de longues “procédure de remise en état” après des erreurs réseau ou des pannes électriques.

Certains produits SGBD sophistiqués sont notoirement connus pour leurs problèmes liés à la restauration à l'aide des journaux générés lors de l'interruption des transactions. L'instabilité de ces moteurs de bases de données est telle que, même sur des sites avec des équipements moyens, il est nécessaire d'employer des équipes pour surveiller en permanence le serveur pour éviter les problèmes et corriger les incohérences avant que les problèmes ne se propagent trop loin et assurer l'intégrité des données.

L'Architecture Multi-Générationelle de Firebird

L'architecture de Firebird permet de se passer de fichiers journaux car elle garde la version précédente de chaque enregistrement modifié ou supprimé, pas seulement le temps que la transaction existe, mais tant que toutes les transactions qui étaient “intéressées” par cet enregistrement, quelle qu'en soit la raison, aient fini leur travail. Le terme utilisé pour cela est “architecture multi-générationelle”, ou MGA.

MGA était une spécificité unique d'InterBase pendant environ 10 ans jusqu'à ce que cela soit imité par Oracle. Une fois que le code source de Firebird a été disponible, PostGreSQL l'a copié. Plus récemment, Microsoft a introduit MGA dans la dernière évolution de SQL Server.

Journal des transactions et Firebird

Firebird n'a pas besoin de journal de transaction pour effectuer des réparations et il n'a pas de fonctionnalité de journaux de transactions dans son moteur. Toutefois, si une entreprise à besoin d'enregistrer des journaux pour des besoins d'audit, d'excellents outils existent et sont disponibles chez des distributeurs tiers de solutions logicielles.

Prev: Firebird est il “Prêt pour l'entreprise”?Firebird Documentation IndexUp: Livre Blanc Firebird en EntrepriseNext: Qui utilise Firebird?
Firebird Documentation IndexLivre Blanc Firebird en Entreprise → Conformité ACID et Firebird