stringtranslate.com

Thomas escribe la regla

En informática , particularmente en el campo de las bases de datos , la regla de escritura de Thomas es una regla de control de concurrencia basada en marcas de tiempo . Se puede resumir en ignorar escrituras obsoletas .

Indica que, si una transacción más reciente ya ha escrito el valor de un objeto, entonces una transacción menos reciente no necesita realizar su escritura ya que la más reciente eventualmente lo sobrescribirá.

La regla de escritura de Thomas se aplica en situaciones en las que se asigna un orden lógico predefinido a las transacciones cuando comienzan. Por ejemplo, a una transacción se le puede asignar una marca de tiempo que aumenta monótonamente cuando se crea. La regla evita que los cambios en el orden en el que se ejecutan las transacciones creen diferentes resultados: los resultados siempre serán consistentes con el orden lógico predefinido.

Por ejemplo, considere una base de datos con 3 variables (A, B, C) y dos operaciones atómicas C:= A (T1) y C:= B (T2). Cada transacción implica una lectura (A o B) y una escritura (C). El único conflicto entre estas transacciones es la escritura en C. El siguiente es un cronograma posible para las operaciones de estas transacciones:

Si (cuando se crean las transacciones) a T1 se le asigna una marca de tiempo que precede a T2 (es decir, según el orden lógico, T1 viene primero), entonces solo la escritura de T2 debería ser visible. Sin embargo, si la escritura de T1 se ejecuta después de la escritura de T2, entonces necesitamos una forma de detectar esto y descartar la escritura.

Un enfoque práctico para esto es etiquetar cada valor con una marca de tiempo de escritura (WTS) que indica la marca de tiempo de la última transacción para modificar el valor. Hacer cumplir la regla de escritura de Thomas solo requiere verificar si la marca de tiempo de escritura del objeto es mayor que la marca de tiempo de la transacción que realiza una escritura. Si es así, la escritura se descarta.

En el ejemplo anterior, si llamamos a TS(T) la marca de tiempo de la transacción T y a WTS(O) la marca de tiempo de escritura del objeto O, entonces la escritura de T2 establece WTS(C) en TS(T2). Cuando T1 intenta escribir C, ve que TS(T1) < WTS(C) y descarta la escritura. Si una tercera transacción T3 (con TS(T3) > TS(T2)) escribiera en C, obtendría TS(T3) > WTS(C), y se permitiría la escritura.

Referencias

©