Bolivarian Republic Of Venezuela
Ministry Of People's Power For University Education
Polytechnic University Of The West Mariscal Sucre
Caracas .-
TRANSACCIONES
DEFINICIÓN:
Teacher:
Martín Hernández
Members:
López Miriam Exp. Nº: 13582945
López Yenire Exp. Nº: 19288271
Nuñez Michael Exp. Nº: 16086679
Computing 7121
English
May 2010 Caracas
Las transacciones fueron originalmente desarrolladas para ser utilizadas dentro de
los sistemas de base de datos, donde se usaba para ayudar en el mantenimiento de los
datos de las aplicaciones y que dependían de la consistencia de la información almacenada.
Las transacciones son mecanismos que ayudan a simplificar la construcción de
sistemas confiables mediante procesos que proporcionan soporte uniforme para invocar y
sincronizar operaciones como:
Operaciones de comparación de datos
Aseguramiento de la seriabilidad de las transacciones con otras
Atomicidad en su comportamiento
Recuperación de fallas.
Manejo de transacciones
Se considera el manejo de transacciones cuando un dispositivo móvil inicia una
transacción hacia la base de datos o hacia un servidor fijo. La transacción puede ejecutarse
en el servidor o en el dispositivo móvil.
PROPIEDADES DE LAS TRANSACCIONES
Atomicidad
Una transacción es tratada como una unidad de operación. Por lo tanto todas las
acciones de la transacción se llevan a cabo o ninguna de ellas se realiza. La atomicidad
requiere que si una transacción se interrumpe por una falla, sus resultados parciales deben
ser deshechos. Se efectúan todas las transacciones, pero en caso de fallas no se realiza
ninguna. Una transacción debe concluir comprometida o abortada. En el caso del
compromiso se instalan todas las actualizaciones y en el aborto se descartan todas las
actualizaciones.
Consistencia
Una transacción es un programa correcto que lleva la base de datos de un estado
consistente a otro con la misma característica. Gracias a esto, las transacciones no violan las
reglas de integridad de una base de datos.
Aislamiento
Durante la ejecución de una transacción, esta no debe revelar sus resultados a otras
transacciones concurrentes antes de su compromiso. Si varias transacciones se ejecutan
concurrentemente, los resultados deben ser los mismos que si ellas se hubieran ejecutado en
forma secuencial (Seriabilidad). La seriabilidad consiste en asegurarse que los cambios
siguen un orden adecuado.
Durabilidad
Es la propiedad de las transacciones que asegura que una vez que una transacción
realiza su compromiso, sus resultados son permanentes y no pueden ser borrados de la base
de datos, se asegura que los resultados de una transacción sobrevivirán a fallas del sistema.
Estructura de las Transacciones.
La estructura de una transacción usualmente viene dada según el modelo de la
transacción, estas pueden ser planas (simples) o anidadas.
• Transacciones planas:
Consisten en una secuencia de operaciones primitivas encerradas entre las palabras clave
BEGIN y END. Por ejemplo:
BEGIN _TRANSACTION Reservación
....
END.
• Transacciones Anidadas:
Consiste en tener transacciones que dependen de otras, estas transacciones están
incluidas dentro de otras de un nivel superior y se las conoce como subtransacciones. La
transacción de nivel superior puede producir hijos (subtransacciones) que hagan más fácil
la programación del sistema y mejoras del desempeño.
En las transacciones anidadas las operaciones de una transacción pueden ser así mismo
otras transacciones. Por ejemplo:
BEGIN _TRANSACTION Reservación
..........
BEGIN _TRANSACTION Vuelo
........
END.( Vuelo )
......
BEGIN _TRANSACTION Hotel
........
END
......
END.
Una transacción anidada dentro de otra conserva las mismas propiedades que las de
su padre, esto implica, que puede contener así mismo transacciones dentro de ella. Existen
restricciones obvias en una transacción anidada: debe empezar después que su padre y debe
terminar antes que el. El compromiso de una subtransaccion es condicional al compromiso
de su padre, si el padre de una o varias subtransacciones aborta, las subtransacciones hijas
también serán abortadas. Las transacciones anidadas brindan un nivel mas alto de
concurrencia entre transacciones. Ya que una transacción consiste de varias transacciones
es posible tener mayor concurrencia dentro de una sola transacción.
Así también, es posible recuperarse de de fallas de forma independiente de cada
subtransaccion. Esto limita el daño a una parte mas pequeña de la transacción, haciendo que
el costo de la recuperación sea el menor.
Estados de una Transacción
Activa el estado inicial; la transacción permanece en este estado durante su ejecución.
Parcialmente comprometida después de ejecutarse la última instrucción.
Fallida tras descubrir que no puede continuar la ejecución normal.
Abortada después de haber retrocedido la transacción y restablecido la base de datos a su
estado anterior al comienzo de la transacción. Comprometida tras completarse con éxito.
La ejecución concurrente de transacciones mejora la productividad y la utilización del
sistema, y también reduce el tiempo de espera de las transacciones. Reiniciar la transacción,
pero sólo si la transacción se ha abortado a causa de algún error hardware o software que no
lo haya provocado la lógica interna de la transacción.
Una transacción reiniciada se considera una nueva transacción.
Cancelar la transacción. Normalmente se hace esto si hay algún error interno lógico que
sólo se puede corregir escribiendo de nuevo el programa de aplicación, o debido a una
entrada incorrecta o debido a que no se han encontrado los datos deseados en la base de
datos.
Problemas de concurrencia
El propósito del control de concurrencia es mantener la consistencia de la BD
cuando ésta es actualizada por múltiples usuarios. Existen casos en los que las
transacciones ejecutadas aisladamente originan nuevos estados consistentes, sin embargo
las mismas transacciones ejecutadas concurrentemente pueden originar efectos como
pérdidas de operaciones y/o violación de restricciones de integridad; a
continuación se ilustran algunos casos típicos de anomalías.
Planificación de Transacciones: Representan el orden cronológico en el que se ejecutan
las instrucciones
de diferentes
transacciones
concurrentes.
Cualquier
planificación
válida debe
constar de todas
las instrucciones
de la transacción y
en el mismo
orden. Ej:
Ti Tj
Leer(A)
Leer (B)
Escribir (B)
Escribir(C)
Leer(C)
Planificación Secuencial: se produce cuando las instrucciones de cada transacción están
juntas y solo inician cuando terminan las de la transacción anterior. Ej.:
Ti Tj
Leer(A)
Escribir (B)
Leer(C)
Leer (B)
Escribir(C)
Ti Tj
Leer (B)
Escribir (C)
Leer (A)
Escribir (B)
Leer (C)
Concurrencia
En computación, la concurrencia es la propiedad de los sistemas que permiten que
múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan
interactuar entre sí.
Los procesos concurrentes pueden ser ejecutados realmente de forma simultánea,
sólo cuando cada uno es ejecutado en diferentes procesadores. En cambio, la concurrencia
es simulada si sólo existe un procesador encargado de ejecutar los procesos concurrentes,
simulando la concurrencia, ocupándose de forma alternada en uno y otro proceso a
pequeñísimos intervalos de tiempo. De esta manera simula que se están ejecutando a la vez.
Conflictos en la concurrencia
En los sistemas de tiempo compartido (aquellos con varios usuarios, procesos, tareas,
trabajos que reparten el uso de CPU entre estos) se presentan muchos conflictos debido a
que los procesos compiten por los recursos del sistema. Los programas concurrentes a
diferencia de los programas secuenciales tienen una serie de conflictos muy particulares
derivados de las características de la concurrencia:
Violación de la exclusión mutua: En ocasiones ciertas acciones que se realizan en un
programa concurrente no proporcionan los resultados deseados. Esto se debe a que existe
una parte del programa donde se realizan dichas acciones que constituye una región
critica, es decir, es una parte del programa en la que se debe garantizar que si un proceso
accede a la misma, ningún otro podrá acceder. Se necesita pues garantizar la exclusión
mutua.
Bloqueo mutuo o deadlock: Un proceso se encuentra en estado de deadlock si esta
esperando por un suceso que no ocurrirá nunca. Se puede producir en la comunicación
de procesos y mas frecuentemente en la gestión de recursos.
Correctitud
En teoría de la computación, la corrección de un algoritmo, también
llamada correctitud (como adaptación de la palabra inglesa correctnes), corresponde a una
propiedad que distingue a un algoritmo de un procedimiento efectivo.
Un algoritmo es correcto, si:
1. Resuelve el problema computacional para el cual fue diseñado.
2. Para cada entrada, produce la salida deseada.
3. Termina en un tiempo de ejecución finito.
Si cualquiera de estos tres puntos no se cumple, entonces estamos hablando de
un algoritmo incorrecto, que para efectos prácticos, carece de utilidad, al no ser más que
un procedimiento efectivo, es decir, una secuencia ordenada y determinista de pasos.
Seriabilidad
Consiste en asegurarse que los cambios siguen un orden adecuado. Con el fin de
garantizar la seriabilidad de las transacciones se recomienda:
• Asignar un orden a los items a bloquear y requerir que todas las transacciones efectúen
los bloqueos respetando el orden.
• Requerir que en una transacción todos los bloqueos precedan a todos los desbloqueos
(teorema de ejecución en dos fases).
Algoritmos de control de concurrencia: Los algoritmos de control de concurrencia deben
sincronizar la ejecución de transacciones concurrentes bajo el criterio de correctitud. La
consistencia entre transacciones se garantiza mediante el aislamiento de las mismas.
Los algoritmos pesimistas sincronizan la ejecución concurrente de las transacciones en
su etapa inicial de su ciclo de ejecución. El grupo de algoritmos pesimistas consiste de
algoritmos basados en candados, algoritmos basados en ordenamiento por estampas de
tiempo y algoritmos híbridos.
Los algoritmos optimistas retrasan la sincronización de las transacciones hasta su
terminación. El grupo de los algoritmos optimistas se clasifican por basados en
candados y basados en estampas de tiempo.
Algoritmo de bloqueo
También reciben el nombre de candado. En realidad, un bloqueo es una variable
asociada con un ítem de la Base de Datos; utilizada para almacenar el estado de ese ítem
con respecto a posibles operaciones que le puedan ser aplicadas. Usamos los bloqueos
como un medio de sincronizar los accesos de transacciones concurrentes a los items de la
Base de Datos.
TRANSACTIONS
DEFINITION
The transactions were originally developed for use within the database systems,
where it was used to assist in maintaining data and applications that depended on the
consistency of the stored information.
Transactions are mechanisms that help simplify the construction of reliable systems
through processes that provide uniform support for invoke and synchronize operations as:
Operations Data Comparison
Ensuring the serializability of transactions with other
Atomicity in behavior
Failover
Transaction Management
It considers the management of transactions when a mobile device initiates a transaction to the database or to
a fixed server. The transaction can be executed on the server or mobile device.
PROPERTIES OF TRANSACTIONS
Atomicity
A transaction is treated as a unit operation. Thus all actions of the transaction are
performed or none of them is performed. Atomicity requires that if a transaction is
interrupted by a failure, its partial results must be undone. All transactions are made, but in case of
failures do not perform. A transaction must conclude committed or aborted. In the case of commitment all
updates are installed on abortion and all updates are discarded.
Consistency
A transaction is a correct program that takes the database from a consistent state to
another with the same characteristic. Because of this, transactions do not violate the rules of
integrity of a database.
Isolation
During the execution of a transaction, it should not reveal their results to other
concurrent transactions before its commitment. If several transactions are executed
concurrently, the results should be the same as if they had been executed sequentially
(serializability). Serializability is to ensure that the changes follow a proper order.
Durability
It is the property of transactions ensures that once a transaction completes its commitment, its results
are permanent and can not be deleted from the database, ensure that the results of a transaction survive system
failures.
Transaction Structure
The structure of a transaction usually is given on the model of the transaction, they can be flat (simple)
or nested.
• Transactions flat:
Consist of a sequence of primitive operations enclosed between the keywords
BEGIN y END. Por ejemplo:
BEGIN _TRANSACTION Reservación
....
END.
• Nested Transactions:
It contains a dependent on other transactions; these transactions are included within other
higher-level and are referred to as subtransactions. The top-level transaction can produce children
(subtransactions) to make programming easier and improved system performance.
Nested transactions in the operations of a transaction can be likewise other transactions. For example:
BEGIN _TRANSACTION Reservación
..........
BEGIN _TRANSACTION Vuelo
........
END.( Vuelo )
......
BEGIN _TRANSACTION Hotel
........
END
......
END.
A nested inside another transaction retains the same properties as those of his father,
this implies that it may contain and transactions within it. There are obvious restrictions in a
nested transaction: should start after his father and must end before that. The commitment
of subtransactions is conditional upon the commitment of his father if the father of one or
more subtransactions aborts, the daughters will also be aborted subtransactions. Nested
transactions offer a higher level of concurrency between transactions. Since a transaction
consists of several transactions may be more competition within a single transaction.
Also, you can recover from failure independently of each subtransactions. This
limits the damage to a smaller part of the transaction, making the cost of recovery is less.
Transaction Status
Enables: the initial state, the transaction remains in this state for its implementation.
Partially committed after executing the last instruction.
Failed: after discovering they can not continue normal execution.
Aborted: receded after the transaction and the database restored to its previous state at the
beginning of the transaction. Committed after a successful completion.
The concurrent execution of transactions improves productivity and system utilization, and also
reduces the waiting time of transactions
Restart the transaction, but only if the transaction has been aborted because of some hardware or software
error that has not caused the internal logic of the transaction.
A restarted transaction is considered a new transaction. Cancel the transaction. Usually done that if
there is a logical internal error can be corrected only rewriting the application program, or because of an
incorrect entry or because they have not found the desired data into the database.
Concurrency Problems
The purpose of concurrency control is to maintain the consistency of the database
when it is updated by multiple users. There are cases in which transactions executed in
isolation rise to new states consistent, however the same transactions executed concurrently
can cause effects such as loss from operations and / or violation of integrity constraints, and
then illustrates some typical cases of anomalies.
Transaction Transaction Transaction Transaction
READ
WRITE
READ
WRITE
READ
READ
PRINT
PRINT
Inconsistent output
READ
WRITE
WRITE
READ
READ
READ
WRITE
WRITE
Introduction of inconsistencies in the BD
Transaction Transaction
READ
READ
WRITE
WRITE
READ
READ
READ
PRINT
PRINT
WRITE
Operating loss Not reproduction of readings
Transaction Transaction
Transaction Planning: They represent the chronological order in which instructions are
executed in different concurrent transactions. Any valid planning should include all
instructions of the transaction and in the same order. Example
Ti Tj
Read (A)
Read (B)
Write (B)
Write(C)
Read (C)
Sequential Planning: This occurs when the instructions for each transaction are started
together and only when they finish the previous transaction. Example:
Ti Tj
Read (A)
Write (B)
Read (C)
Read (B)
Write(C)
Ti Tj
Read (B)
Write (C)
Read (A)
Write (B)
Read (C)
Concurrence
In computing, concurrency is a property of systems that allow multiple processes to
be executed at the same time, and that potentially interact with each other.
Concurrent processes can be executed simultaneously really, only when each is run on
different processors. Instead, concurrency is simulated if only one processor responsible for
executing concurrent processes, simulating the crowd, seized alternately in either process
very small time intervals. In this way simulates that are running at once.
Conflicts in the concurrence
In time-sharing systems (those with multiple users, processes, jobs, jobs that share
the CPU utilization between these) presents many conflicts because the processes are
competing for system resources. Concurrent programs unlike sequential programs have a
very specific series of conflicts resulting from the characteristics of the concurrence:
Violation of mutual exclusion: Sometimes certain actions that are performed in a
concurrent program does not provide the desired results. This is because there is a part of
the program where such actions are performed is a critical region, ie is a part of the
program in which we must guarantee that if a process accesses the same, no one else can
access. Is therefore required to ensure mutual exclusion.
Deadlock or deadlock: A process is in a state of deadlock if it is waiting for an
event that will never happen. May occur in the communication process and more frequently
in resource management.
Correctness
In theory of computation, the correction of an algorithm, also called correctness (as
an adaptation of the English word correctnes) corresponds to a property that distinguishes
an algorithm of an effective procedure.
An algorithm is correct if:
1. Solves the computational problem for which it was designed.
2. For each entry, produces the desired output.
3. Ends in a finite run time.
If any of these three points are not met, then we are talking about a wrong
algorithm, which for practical purposes, useless, to be nothing more than an effective
procedure, ie an orderly sequence of steps.
Serializability
Is to ensure that the changes follow a proper order.
In order to ensure serializability of transactions is recommended:
• Assign an order to block items and require that all transactions carried out in compliance
with the order blocks.
• Require that a transaction all locks precede all unlocks (theorem implemented in two
phases).
Concurrency control algorithms: The concurrency control algorithms to synchronize
concurrent execution of transactions under the criterion of correctness. The consistency
between transactions is ensured by isolating them.
Pessimistic algorithms synchronize the concurrent execution of transactions in its
initial stage of its implementation cycle.Π The pessimistic group of algorithms consists
of algorithms based on locks, computer-based algorithms for time stamps and hybrid
algorithms.
Optimistic algorithms delay the timing of the transaction to completion. The groups of
optimistic algorithms are classified based on locks and based on time stamps.
Locking algorithm.
They are known to lock. In fact, a lockout is a variable associated with an item from
the database, used to store the state of that item with respect to possible operations that may
be applied. We use locks as a means to synchronize concurrent access to transaction items
in the database.