Una transacción de base de datos clásica simplificada se puede ver como:
- leyendo artículos M
- realizar algunos cálculos basados en esas lecturas
- escribir algunos resultados de N basados en estos cálculos, que pueden incluir los elementos leídos originalmente.
Al realizar estas transacciones (simultáneamente), las propiedades ACID deben mantenerse.
Exactamente los mismos requisitos (N actualizaciones basadas en M lecturas transaccionales) existen en otros sistemas concurrentes no DBMS.
Estoy interesado en descubrir qué algoritmos existen para realizar / resolver estas transacciones, y cuáles son las fortalezas y debilidades relativas de estos algoritmos. ¿Me puede recomendar alguna lectura? Esto podría ser libros o referencias / tutoriales en línea.
Aclaración:
Entonces, por ejemplo, un algoritmo ingenuo podría ser que cada transacción tome un solo bloqueo global, en efecto forzando un solo subproceso y eliminando la concurrencia. Un algoritmo un poco más complicado sería el bloqueo de lectura / escritura de elementos individuales, con una orden para evitar el punto muerto). Etc, etc. ¿Existe una buena fuente que documente varios algoritmos para resolver este problema? Incluso una respuesta que solo apuntara a un algoritmo único con sus fortalezas y debilidades sería útil.