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.
fuente
Respuestas:
El libro Sistemas de información transaccional de Weikum y Vossen cubre gran parte del área, tanto en términos teóricos como prácticos, desde diferentes perspectivas, no solo transacciones. Tiene aproximadamente 1000 páginas, por lo que lo mantendrá ocupado durante un fin de semana o dos. Por otro lado, tiene casi 10 años, por lo que puede haber algo más actualizado disponible. Otros libros en la línea incluyen Control de concurrencia y recuperación en sistemas de bases de datos de Bernstein, P., Hadzilacos, V. y Goodman, N, Addison-Wesley, 1987, Procesamiento de transacciones: conceptos y técnicas de Jim Gray y Andreas Reuter, y Principios de procesamiento de transaccionespor Philip A. Bernstein y Eric Newcomer, 2009. No he visto el último, pero al ser el más reciente, podría ser un buen lugar para comenzar, aunque su solución puede encontrarse en textos anteriores. Un viaje a la biblioteca puede valer la pena.
Un texto monumental en esta área es Atomic Transactions por Nancy Lynch et al. Presenta una cuenta formal y pruebas de varios de los tipos de algoritmos que le interesan. Es bastante formal y tedioso, por lo que puede no ser de su agrado.
Una gran cantidad de trabajo reciente se dedica a la memoria transaccional de software , que aplica las ideas de transacción a aplicaciones de subprocesos múltiples. Hay decenas de publicaciones sobre este tema cada año: la página de wikipedia ofrece muchas referencias.
fuente