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
Répondre
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.
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.
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
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. –
Oh ... c'est vrai. Encore merci. – Sussagittikasusa
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).
- 1. Django - comment spécifier une base de données pour un modèle?
- 2. Comment implémenter dynamiquement le modèle de proxy?
- 3. VB.Net Comment implémenter le modèle singleton pour l'accès via WCF
- 4. Comment implémenter l'indépendance de base de données avec Entity Framework
- 5. iPhone Implémenter une liste de favoris sans données de base?
- 6. Modèle de base de données pour les données semi-structurées
- 7. Comment implémenter une vue de base commune pour iPhone?
- 8. Modèle de délégué pour la base de données distante Rails?
- 9. Comment identifier une base de données comme modèle valide?
- 10. comment implémenter minheap using le modèle
- 11. Comment implémenter la fonctionnalité de base de données efficacement?
- 12. Comment implémenter C# enum pour le champ de base de données énuméré char (1)?
- 13. Implémenter IExtensibleDataObject sur une classe de base
- 14. Quel modèle de conception implémenter pour utiliser une API REST?
- 15. Avant de démarrer le modèle de base de données
- 16. NullReferenceException lorsque vous utilisez ObjectBuilder pour implémenter le modèle MVP
- 17. comment implémenter ce modèle d'observateur?
- 18. Modèle de conception de base de données pour l'héritage/overrides
- 19. Deux classes de modèle - une table de base de données
- 20. Modèle de migration de base de données pour Java?
- 21. modèle de base de données de propriétés
- 22. Création d'un modèle AR pour la base de données Drupal
- 23. Combien de types doivent implémenter le modèle Repository?
- 24. Modèle de base de données d'application d'adhésion
- 25. Comment puis-je implémenter le modèle de commande en Java?
- 26. Comment implémenter une base de données MySQL dans une page Web?
- 27. Comment surveiller une base de données pour de nouvelles entrées?
- 28. Comment implémenter le modèle Post/Redirect/Get dans asp.net WebForms?
- 29. Comment implémenter MapThread avec le mappage de liste de base?
- 30. Comment lier le contenu Web dans une base de données avec un modèle de jeu imbriqué?
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