2010-11-24 7 views
2

Comment procéder pour obtenir les propriétés ACID de ma base de données - A- Atomicité, C- Cohérence, I- Isolement, D- Durabilité. Système de base de données utilisé - MySql.Comment implémenter le modèle ACID pour une base de données

+1

ACID est quelque chose que la base de données fournit pour vous, pas vraiment quelque chose que vous devez mettre en œuvre. Vous pouvez utiliser ACID pour créer une application fiable. – martineno

Répondre

14

Bien L'ACID n'est pas un modèle que vous pouvez implémenter, mais plutôt un ensemble de règles auxquelles un serveur de base de données doit se conformer pour pouvoir traiter les transactions de manière sûre.

MySQL est pas un serveur de base de données compatible ACID par la conception, mais si vous utilisez le moteur de stockage InnoDB pour vos tables (ou mieux que votre serveur de base de données du moteur de stockage par défaut en définissant l'option default-storage-engine à InnoDB (voir default-storage-engine option)) , vous serez en mesure d'effectuer des opérations transactionnelles sur votre base de données.

Je vous recommande de définir InnoDB comme moteur de stockage par défaut car il est important de ne pas mélanger des opérations sur des tables avec différents moteurs de stockage au sein d'une seule transaction (tables InnoDB et MyISAM par exemple). Sinon, vous risquez de corrompre vos données car vous ne pourrez pas annuler toutes vos opérations si vous annulez votre transaction. Cela dit, comment vous assurez-vous que vos opérations sont conformes à l'ACID? Eh bien simplement par opérations de regroupement dans les transactions pour aller d'un état cohérent de vos données à un autre, et commettre à la fin si tout s'est bien passé, ou revenir en arrière si quelque chose s'est mal passé. Pour ce faire, vous devez indiquer au serveur de base de données quand votre transaction commence en émettant une instruction START TRANSACTION, et lorsque votre transaction se termine par une instruction COMMIT ou ROLLBACK.

Il est généralement recommandé de désactiver le mode de validation automatique au début de vos scripts en utilisant la commande SET AUTOCOMMIT=0, bien que ce ne soit pas obligatoire car la commande START TRANSACTION désactive réellement le mode de validation automatique.

Gardez également à l'esprit que certaines instructions émettent une commande COMMIT implicite (essentiellement toutes les instructions DDL et d'autres, voir Statements That Cause an Implicit Commit).

Vous pourriez également être intéressé par la lecture sur les différences par rapport à la norme SQL en ce qui concerne le traitement des transactions dans MySQL Transactions and Atomic Operations.

3

Utilisez le moteur innoDB dans MySQL, créez un schéma de base de données approprié, y compris les clés étrangères, utilisez les transactions pour les requêtes associées, utilisez le matériel servergrade et laissez la base de données faire son travail.

http://en.wikipedia.org/wiki/ACID

+0

Oh ... merci. Encore une question cependant ... comment la base de données peut-elle gérer l'atomicité en cas de panne matérielle? Supposons que j'ai deux requêtes. QUERY 1, QUERY 2, que se passe-t-il en cas de panne matérielle entre ces deux requêtes? – Sussagittikasusa

+2

Il s'agit de requêtes connexes. Requête nr.2 ne sera jamais exécuté, c'est pourquoi vous avez besoin de transactions si ces requêtes sont liées: Si la première requête fait partie de la même transaction, la transaction entière n'est jamais validée et votre base de données est toujours correcte (ROLLBACK). Sans transaction, vous avez une base de données corrompue. –

+0

Oh ... c'est vrai. Encore merci. – Sussagittikasusa

-1

Si je vous understaded propertly ce n'est pas votre tâche. Est-ce la tâche des développeurs MySql (Oracle). Si le serveur de base de données prend en charge l'ACID, vous pouvez l'utiliser en choisissant le niveau d'isolation correct et en utilisant les transactions (implicites ou explicites).

Questions connexes