Introduction
L'automatisation de l'outil Hermitage nous permet de comparer les différences de transactions entre MySQL et MariaDB. Les niveaux d'isolation des transactions, tels que Read Uncommitted, Read Committed, Repeatable Read et Serializable, sont définis en termes d'anomalies de transaction comme Read Skew et Lost Updates.
Contexte Technique
La norme SQL officielle définit ces niveaux d'isolation, mais elle est ambiguë et permet certains comportements incorrects. Par exemple, les écritures sales (Dirty Writes) sont autorisées par la norme, mais aucun système de base de données majeur ne les permet. Les lectures sales (Dirty Reads) sont autorisées par les bases de données avec des niveaux d'isolation Read Uncommitted, comme MySQL et MariaDB.
Pour tester ces comportements, nous utilisons un outil open-source appelé Monastery, qui nous permet d'exécuter des expériences de pensée sur plusieurs bases de données et niveaux d'isolation. L'une de ces expériences consiste à simuler une situation de location de chaussures dans une salle de bowling, où deux transactions concurrentes tentent de réserver une paire de chaussures.
Analyse et Implications
L'analyse des résultats de ces expériences nous permet de comprendre les différences de comportement entre MySQL et MariaDB en termes de transactions et d'isolation. Nous pouvons voir que les deux bases de données ont des comportements différents en fonction du niveau d'isolation choisi. Par exemple, avec le niveau d'isolation Read Uncommitted, les lectures sales sont autorisées, ce qui peut entraîner des résultats incohérents.
Ces résultats ont des implications importantes pour les développeurs et les administrateurs de bases de données, car ils doivent comprendre les risques et les limites des différents niveaux d'isolation pour choisir le niveau approprié pour leur application.
Perspective
À l'avenir, il sera important de continuer à tester et à analyser les comportements des différentes bases de données et niveaux d'isolation pour mieux comprendre les risques et les limites de chaque choix. Cela nous permettra de développer des applications plus robustes et plus fiables, capables de gérer les transactions de manière efficace et sécurisée.