Une transaction de base de données classique simplifiée peut être considérée comme:
- lecture de M éléments
- effectuer un calcul basé sur ces lectures
- écrire quelques résultats N basés sur ces calculs, qui peuvent inclure les éléments lus à l'origine.
Lors de l'exécution de ces transactions (simultanément), les propriétés ACID doivent être conservées.
Exactement les mêmes exigences (N mises à jour basées sur M lectures de manière transactionnelle) existent dans d'autres systèmes concurrents non SGBD.
Je suis intéressé à découvrir quels algorithmes existent pour effectuer / résoudre ces transactions, et quelles sont les forces et les faiblesses relatives de ces algorithmes. Pourriez-vous recommander une lecture? Il peut s'agir de livres ou de références / tutoriels en ligne.
Clarification:
Ainsi, par exemple, un algorithme naïf peut faire en sorte que chaque transaction prenne un seul verrou global, forçant en fait le thread unique et supprimant la concurrence. Un algorithme un peu plus compliqué serait les verrous de lecture / écriture des éléments individuels, avec un ordre pour éviter le blocage). Etc, etc. Existe-t-il une bonne source documentant divers algorithmes pour résoudre ce problème. Même une réponse qui n'indiquerait qu'un seul algorithme avec ses forces et ses faiblesses serait utile.