Академический Документы
Профессиональный Документы
Культура Документы
CARRERA
INGENIERIA EN
SISTEMAS
COMPUTACIONALES
PRCTICA No.
05
NOMBRE DE LA ASIGNATURA
TBD
LABORATORIO DE
NOMBRE DE LA
PRCTICA
CENTRO DE COMPUTO
DURACIN (HORA)
Transacciones
2 Horas
1. INTRODUCCIN
Una transaccin es una unidad nica de trabajo. Si una transaccin tiene xito, todas las modificaciones de los datos
realizadas durante la transaccin se confirman y se convierten en una parte permanente de la base de datos. Si una
transaccin encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.
Un ejemplo habitual de transaccin es el traspaso de una cantidad de dinero entre cuentas bancarias. Normalmente se
realiza mediante dos operaciones distintas, una en la que se decrementa el saldo de la cuenta origen y otra en la que
incrementamos el saldo de la cuenta destino. Para garantizar la consistencia del sistema (es decir, para que no aparezca o
desaparezca dinero), los dos operaciones deben ser atmicas, es decir, el sistema debe garantizar que, bajo cualquier
circunstancia (incluso una cada del sistema), el resultado final es que, o bien se han realizado las dos operaciones, o bien
no se ha realizado ninguna.
2. OBJETIVO (COMPETENCIA)
Conocer la forma de realizar una transaccin en el DBMS de MySQL, utilizando el lenguaje de programacin JAVA y la
interfaz API JDBC.
Elabor
Pgina 1 de
8
3. FUNDAMENTO
Una transaccin en un sistema de gestin de bases de datos ( SGBD), es un conjunto de rdenes que se ejecutan
formando una unidad de trabajo, es decir, en forma indivisible o atmica.
Un SGBD se dice transaccional si es capaz de mantener la integridad de los datos, haciendo que estas transacciones no
puedan finalizar en un estado intermedio. Cuando por alguna causa el sistema debe cancelar la transaccin, empieza a
deshacer las rdenes ejecutadas hasta dejar la base de datos en su estado inicial (llamado punto de integridad), como si la
orden de la transaccin nunca se hubiese realizado.
Para esto, el lenguaje de consulta de datos SQL (Structured query language), provee los mecanismos para especificar
que un conjunto de acciones deben constituir una transaccin.
COMMIT TRAN: Le indica al motor que puede considerar la transaccin completada con xito.
ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer la base al punto de integridad.
En un sistema ideal, las transacciones deberan garantizar todas las propiedades ACID; en la prctica, a veces alguna de
estas propiedades se simplifica o debilita con vistas a obtener un mejor rendimiento.
OPERACIONES PRINCIPALES:
COMMIT
En una transaccin, la operacin Commit (accin de cometer o asignar) se refiere a la idea de hacer que un conjunto de
cambios "tentativos, o no permanentes" se conviertan en permanentes.
Una sentencia COMMIT en SQL finaliza una transaccin de base de datos dentro de un Sistema Gestor de Base de Datos
Relacional (RDBMS) y pone visibles todos los cambios a otros usuarios. El formato general es emitir una sentencia
BEGIN WORK, una o ms sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia
ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emiti BEGIN WORK. Una sentencia
COMMIT publicar cualquiera de los savepoints(puntos de recuperacin) existentes que puedan estar en uso.
Elabor
Pgina 2 de
8
ROLLBACK
En una transaccin, un rollback es una operacin que devuelve a la base de datos a algn estado previo. Los Rollbacks
son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada
a una copia limpia incluso despus de que se han realizado operaciones errneas. Ellas son cruciales para la recuperacin
de crashes de un servidor de base de datos; realizando rollback(devuelto) cualquier transaccin que estuviera activa en el
tiempo del crash, la base de datos es restaurada a un estado consistente.
En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde la ltima sentencia BEGIN WORK,
o START TRANSACTION sean descartados por el sistema de gestin de base de datos relacional (RDBMS), para que el
estado de los datos sea "rolled back"(devuelto) a la forma en que estaba antes de que aquellos cambios tuvieran lugar.
En muchos lenguajes de SQL, ROLLBACKs son especficos de la conexin. Esto significa que si se hicieron dos
conexiones a la misma base de datos, un ROLLBACK hecho sobre una conexin no afectar a cualesquiera otras
conexiones. Esto es vital para el buen funcionamiento de la Concurrencia
Los ResulSet pueden tener o no desplazamiento y pueden ser sensibles o no a los cambios en la base de datos que pueden
producir otros usuarios o procesos.
Tipos de ResultSet:
TYPE_FORWARD_ONLY
TYPE_SCROLL_INSENSITIVE
TYPE_SCROLL_SENSITIVE
else
System.out.println("Esta base de datos admite scroll");
Elabor
Pgina 3 de
8
Permite todo tipo de movimientos, y adems permite ver los cambios que se realizan sobre los datos que
contiene.
4. PROCEDIMIENTO (DESCRIPCIN)
EQUIPO NECESARIO
MATERIAL DE APOYO
Elabor
Pgina 4 de
8
DESARROLLO DE LA PRCTICA
Para comprender mejor las transacciones en base de datos, editar y compilar el siguientes programa. Considerar
previamente la creacin de la base de datos y configuraciones necesarias.
Programa 1:
Elabor
Pgina 5 de
8
Programa 2:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
public class Transaction
{
Connection connection;
public Transaction()
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection
("jdbc:mysql://192.168.1.25/accounts?user=spider&password=spider");
}
catch (Exception e)
{
System.err.println("Unable to find and load driver");
System.exit(1);
}
}
public void doWork()
{
try
{
java.util.Date now = new java.util.Date();
connection.setAutoCommit(false);
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = statement.executeQuery("SELECT * FROM acc_add
WHERE acc_id = 1034055 and ts = 0");
rs.next();
rs.updateTimestamp("ts", new Timestamp(now.getTime())); //cantidad de segundos
Elabor
Pgina 6 de
8
// Timestamp es el nmero de segundos que han transcurrido desde las 0 horas del 1 de enero de 1970 GMT.
rs.updateRow();
rs.moveToInsertRow();
rs.updateInt("add_id", rs.getInt("add_id"));
rs.updateInt("acc_id", rs.getInt("acc_id"));
rs.updateString("name", rs.getString("name"));
rs.updateString("address1", "555 East South Street");
rs.updateString("address2", "");
rs.updateString("address3", "");
rs.updateString("city", rs.getString("city"));
rs.updateString("state", rs.getString("state"));
rs.updateString("zip", rs.getString("zip"));
rs.updateTimestamp("ts", new Timestamp(0));
rs.updateTimestamp("act_ts", new Timestamp(now.getTime()));
rs.insertRow();
connection.commit();
rs.close();
statement.close();
connection.close();
} catch (Exception e) {
try {
connection.rollback();
} catch (SQLException error) {
}
e.printStackTrace();
}
}
public static void main(String[] args) {
Transaction trans = new Transaction();
trans.doWork();
}
}
Elabor
Pgina 7 de
8
CLCULOS Y ACTIVIDADES
1.
Realizar la creacin de una base de datos para el ejemplo 1, utilizando MySQL GUI Tools o JDBC SQL.
2.
Agregar 5 registros a la base de datos previamente creada utilizando una herramienta MySQL.
3.
4.
Realizar la creacin de una base de datos para el ejemplo 2, utilizando MySQL GUI Tools o JDBC SQL.
5.
Agregar 5 registros a la base de datos previamente creada utilizando una herramienta MySQL. Considerar los
requerimientos de datos para el ejemplo 2.
6.
5. RESULTADOS Y CONCLUSIONES
Describir en este apartado los resultados obtenidos, utilizar pantallas de salida, describiendo cada una de ellas.
6. ANEXOS
Anexar la informacin que utiliz para profundizar en el tema de la prctica.
7. BIBLIOGRAFIA Y REFERENCIAS
Anotar la bibliografa utilizada, Internet, manuales, etc.
Elabor
Pgina 8 de
8