En el control de concurrencia de bases de datos , procesamiento de transacciones ( gestión de transacciones ) y otras aplicaciones distribuidas transaccionales , la serializabilidad global (o serializabilidad modular ) es una propiedad de una programación global de transacciones . Una programación global es la programación unificada de todas las programaciones de bases de datos individuales (y otros objetos transaccionales) en un entorno de múltiples bases de datos (por ejemplo, base de datos federada ). Cumplir con la serializabilidad global significa que la programación global es serializable , tiene la propiedad de serializabilidad , mientras que cada base de datos componente (módulo) también tiene una programación serializable. En otras palabras, una colección de componentes serializables proporciona serializabilidad general del sistema, que generalmente es incorrecta. La necesidad de corrección en todas las bases de datos en sistemas de múltiples bases de datos hace que la serializabilidad global sea un objetivo principal para el control de concurrencia global (o control de concurrencia modular ). Con la proliferación de Internet , la computación en la nube , la computación en red y los dispositivos informáticos pequeños, portátiles y potentes (por ejemplo, los teléfonos inteligentes ), así como el aumento de la sofisticación en la gestión de sistemas , la necesidad de transacciones distribuidas atómicas y, por lo tanto, técnicas de serialización global efectivas para garantizar la corrección en y entre aplicaciones transaccionales distribuidas, parece aumentar.
En un sistema de base de datos federado o cualquier otro sistema multibase de datos definido de manera más vaga, que normalmente se distribuyen en una red de comunicación, las transacciones abarcan múltiples bases de datos (y posiblemente distribuidas ). Imponer la serialización global en un sistema de este tipo, donde diferentes bases de datos pueden utilizar diferentes tipos de control de concurrencia , es problemático. Incluso si cada programación local de una única base de datos es serializable, la programación global de un sistema completo no es necesariamente serializable. Los intercambios masivos de información de conflictos necesarios entre bases de datos para alcanzar la serialización de conflictos a nivel global conducirían a un rendimiento inaceptable, principalmente debido a la latencia de la computadora y la comunicación . Lograr la serialización global de manera efectiva sobre diferentes tipos de control de concurrencia ha sido una tarea abierta durante varios años.
Las dificultades descritas anteriormente se traducen en el siguiente problema:
La falta de una solución apropiada para el problema de la serialización global ha llevado a los investigadores a buscar alternativas a la serialización como criterio de corrección en un entorno de múltiples bases de datos (por ejemplo, consulte Flexibilización de la serialización global a continuación), y el problema se ha caracterizado como difícil y abierto . Las dos citas siguientes demuestran la mentalidad al respecto a fines del año 1991, con citas similares en numerosos otros artículos:
Se han propuesto varias soluciones, algunas de ellas parciales, para el problema de serialización global. Entre ellas:
Se han desarrollado algunas técnicas para la serialización global relajada (es decir, no garantizan la serialización global; véase también Serialización relajada ). Entre ellas (cada una de ellas con varias publicaciones):
Otra razón común hoy en día para la relajación de la serialización global es el requisito de disponibilidad de productos y servicios de Internet . Este requisito se responde típicamente con la replicación de datos a gran escala . La solución sencilla para sincronizar las actualizaciones de las réplicas de un mismo objeto de base de datos es incluir todas estas actualizaciones en una única transacción distribuida atómica . Sin embargo, con muchas réplicas, dicha transacción es muy grande y puede abarcar varios ordenadores y redes , por lo que es probable que algunas de ellas no estén disponibles. Por lo tanto, es probable que dicha transacción termine con un aborto y pierda su propósito. [4] En consecuencia, la replicación optimista (replicación perezosa) se utiliza a menudo (por ejemplo, en muchos productos y servicios de Google , Amazon , Yahoo y similares), mientras que la serialización global se relaja y se compromete para la consistencia final . En este caso, la relajación se realiza solo para aplicaciones que no se espera que se vean perjudicadas por ella.
Las clases de programaciones definidas por propiedades de serialización global relajada contienen la clase de serialización global o son incomparables con ella. Lo que diferencia las técnicas para propiedades de serialización global relajada (RGCSR) de las de propiedades de serialización global relajada (RCSR) que no son RGCSR es, por lo general, la forma diferente en que se manejan los ciclos globales (que abarcan dos o más bases de datos) en el gráfico de conflictos globales . No existe distinción entre ciclos globales y locales para propiedades RCSR que no son RGCSR. RCSR contiene RGCSR. Por lo general, las técnicas RGCSR eliminan los ciclos locales, es decir, proporcionan serialización local (que se puede lograr de manera efectiva mediante métodos de control de concurrencia conocidos y regulares ); sin embargo, obviamente no eliminan todos los ciclos globales (que lograrían la serialización global).