Ira Remsen
Ira Remsen fue un químico estadounidense que descubrió el edulcorante artificial sacarina junto con Constantin Fahlberg. Fue el segundo presidente de la... (leer más)
En informática, un algoritmo de control de concurrencia basado en marcas de tiempo es un método de control de concurrencia sin bloqueo. Se usa en algunas bases de datos para manejar transacciones de manera segura, usando marcas de tiempo.
Se han utilizado varias formas diferentes para generar la marca de tiempo
Cada transacción (Ti{displaystyle T_{i}) es una lista ordenada de acciones (Aix{displaystyle A_{ix}). Antes de que la transacción realice su primera acción (Ai1{displaystyle A_{i1}), está marcado con el timetamp actual, o cualquier otra secuencia estrictamente ordenada: TS()Ti)=NOW()){displaystyle TS(T_{i})=NOW()}. Cada transacción también recibe un conjunto inicialmente vacío de transacciones en las que depende, DEP()Ti)=[]{displaystyle DEP(T_{i}=[], y un conjunto inicialmente vacío de objetos antiguos que actualizó, OLD()Ti)=[]{displaystyle OLD(T_{i})=[].
Cada objeto ()Oj){displaystyle (O_{j})} en la base de datos se administran dos campos de temporizador que no se utilizan más que para el control de concurrencia: RTS()Oj){displaystyle RTS(O_{j})} es el momento en que el valor del objeto fue utilizado por última vez por una transacción, WTS()Oj){displaystyle WTS(O_{j})} es el momento en que el valor del objeto fue actualizado por última vez por una transacción.
Para todos Ti{displaystyle T_{i}:
Para cancelar:
Cada vez que comienza una transacción, recibe una marca de tiempo. Esta marca de tiempo indica el orden en que debe ocurrir la transacción, en relación con las demás transacciones. Entonces, dadas dos transacciones que afectan al mismo objeto, la operación de la transacción con la marca de tiempo anterior debe ejecutarse antes que la operación de la transacción con la marca de tiempo posterior. Sin embargo, si la operación de la transacción incorrecta se presenta primero, entonces se cancela y la transacción debe reiniciarse.
Cada objeto en la base de datos tiene una marca de tiempo de lectura, que se actualiza cada vez que se leen los datos del objeto, y una marca de tiempo de escritura, que se actualiza cada vez que se modifican los datos del objeto.
Si una transacción quiere leer un objeto,
Si una transacción quiere escribir en un objeto,
Tenga en cuenta que el orden de tiempos en su forma básica no produce historias recuperables. Considerar por ejemplo la historia siguiente con las transacciones T1{displaystyle T_{1} y T2{displaystyle T_{2}:
Esto podría ser producido por un programador TO, pero no es recuperable, como T2{displaystyle T_{2} se compromete a pesar de haber leído de una transacción no comprometida. Para asegurarse de que produce historias recuperables, un programador puede mantener una lista de otras transacciones que cada transacción tiene leído en, y no permitir que una transacción se comprometa antes de esta lista consistía en sólo transacciones comprometidas. Para evitar los abortos en cascada, el programador podría etiquetar los datos escritos por transacciones no comprometidas como sucio, y nunca dejar que se inicie una operación de lectura sobre tal elemento de datos antes de que no fuera etiquetado. Para obtener una historia estricta, el programador no debe permitir ninguna operación en artículos sucios.
Este es el tiempo mínimo transcurrido entre dos marcas de tiempo adyacentes. Si la resolución de la marca de tiempo es demasiado grande (gruesa), aumenta la posibilidad de que dos o más marcas de tiempo sean iguales y, por lo tanto, permite que algunas transacciones se comprometan fuera del orden correcto. Por ejemplo, suponiendo que tenemos un sistema que puede crear cien marcas de tiempo únicas por segundo, y dados dos eventos que ocurren con 2 milisegundos de diferencia, probablemente se les dará la misma marca de tiempo aunque en realidad ocurrieron en momentos diferentes.
Aunque esta técnica no es de bloqueo, en la medida en que el Objeto no está bloqueado para el acceso simultáneo durante la duración de una transacción, el acto de registrar cada marca de tiempo en el Objeto requiere un bloqueo de duración extremadamente breve en el Objeto o su proxy.
Ira Remsen fue un químico estadounidense que descubrió el edulcorante artificial sacarina junto con Constantin Fahlberg. Fue el segundo presidente de la... (leer más)
La Quíntuple Alianza nació en el Congreso de Aix-la-Chapelle en 1818, cuando Francia se unió a la Cuádruple Alianza creada por Austria, Prusia, el Imperio... (leer más)
"Carta abierta a los aficionados" es una carta abierta de 1976 escrita por Bill Gates, el cofundador de Microsoft, a los primeros aficionados a las... (leer más)