Tema 12

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

Bases de Datos II

Ingeniería de Sistemas Cotecnova


¿Cómo realizar transacciones con procedimientos almacenados?
Se puede utilizar el manejo de
errores para decidir si se hace
ROLLBACK de una transacción. En
el siguiente ejemplo se van a
capturar los errores que se
produzcan de tipo SQLEXCEPTION
y SQLWARNING.
¿Cómo realizar transacciones con procedimientos almacenados?
En lugar de tener un manejador para cada tipo de error, se puede tener uno común para todos los casos.
DELIMITER $$
CREATE PROCEDURE transaccion_en_mysql()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
-- ERROR, WARNING
ROLLBACK;
END;
START TRANSACTION;
-- Sentencias SQL
COMMIT;
END
$$
Cursores
Los cursores permiten almacenar un conjunto de filas de una tabla en una estructura de datos que se puede recorrer de
forma secuencial.
Los cursores tienen las siguientes propiedades:
• Asensitive: El servidor puede o no hacer una copia de la tabla de resultados.
• Read only: son de sólo lectura. No permiten actualizar los datos.
• Nonscrollable: sólo pueden ser recorridos en una dirección y no es posible saltarse filas.
Cuando se declara un cursor dentro de un procedimiento almacenado debe aparecer antes de las declaraciones de los
manejadores de errores (HANDLER) y después de la declaración de variables locales.
Operaciones con cursores
Se pueden realizar las siguientes operaciones:
• DECLARE (Declarar): El primer paso que se debe hacer para trabajar con cursores es declararlo. La sintaxis para declarar un cursor es: DECLARE
cursor_name CURSOR FOR select_statement

• OPEN (Abrir): Una vez declarado el cursor, se debe abrir: OPEN cursor_name
• FETCH: Una vez que el cursor está abierto se pueden obtener cada una de las filas con FETCH. La sintaxis es la siguiente:
FETCH [[NEXT] FROM] cursor_name INTO var_name [, var_name] ...

• Cuando se está recorriendo un cursor y no quedan filas por recorrer se lanza el error NOT FOUND, que se corresponde con el valor
SQLSTATE «02000». Por eso cuando se esté trabajando con cursores será necesario declarar un handler para manejar este error.
DECLARE CONTINUE HANDLER FOR NOT FOUND ...

• CLOSE: Cuando se ha terminado de trabajar con un cursor, se debe cerrar. CLOSE cursor_name
Ejemplo cursor
DROP DATABASE IF EXISTS test; CREATE TABLE t3 (
CREATE DATABASE test; data VARCHAR(16),
USE test;
i INT UNSIGNED
-- Paso 2
);
CREATE TABLE t1 (
id INT UNSIGNED
INSERT INTO t1 VALUES (1, 'A’);
PRIMARY KEY,
INSERT INTO t1 VALUES (2, 'B');
data VARCHAR(16)
INSERT INTO t2 VALUES (10);
);
CREATE TABLE t2 (
INSERT INTO t2 VALUES (20);

i INT UNSIGNED
);
Ejemplo cursor
pregunta
• Explique con sus palabras cómo funciona el código del cursor anterior.
Solución utilizando un bucle
REPLICACIÓN
La replicación de bases de datos es el proceso de crear y mantener múltiples copias de una base de datos en diferentes ubicaciones o servidores. El principal objetivo de la replicación es mejorar la disponibilidad de los
datos, distribuir la carga de trabajo y mejorar el rendimiento general del sistema de base de datos. También proporciona redundancia y tolerancia a fallos al garantizar que los datos se repliquen en varios nodos, ya sea de
forma síncrona o asíncrona.
La replicación de bases de datos es un proceso continuo. La replicación continua garantiza que los cambios en la base de datos principal se propaguen rápidamente a las réplicas, lo que garantiza datos actualizados en las
demás instancias.
Modelo Maestro – Esclavo
En la replicación Maestro – Esclavo todas las actualizaciones que
se llevan a cabo sobre el servidor Maestro, son replicadas
automáticamente en el Esclavo. Este tipo de replicación es útil
cuando se necesita realizar operaciones de selección, inserción,
actualización o eliminación de datos en el Maestro, mientras que
el servidor Esclavo está pensado únicamente para realizar
operaciones de selección. Si en el Esclavo se realiza cualquier otra
operación que no fuera de selección de datos, estos cambios no
se verían reflejados en el Maestro, cosa que sí ocurre a la inversa.
Beneficios de la replicación de los datos
• Disponibilidad: permite que ante un fallo se puede utilizar el servidor de respaldo para continuar con el funcionamiento.
• Fiabilidad: garantiza la integridad de la información sin sustituir el proceso de Backup.
• Rendimiento: La replicación de los datos también trae consigo una mejora en el rendimiento a la hora de realizar las
consultas, ya que las distintas peticiones se van repartiendo entre los servidores donde se encuentran las bases de datos.
• Soporte de Usuarios: Al estar la carga repartida entre varios servidores, el sistema de base de datos admite un mayor
número de usuarios accediendo a la información.
Diferencia entre replicación de datos y replicación de BD
• La replicación de datos se refiere a copiar datos específicos de un dispositivo de almacenamiento a otro, a menudo con
fines de respaldo. Este proceso garantiza que, en caso de falla de hardware o pérdida de datos, los datos replicados se
puedan utilizar para restaurar los datos originales.
• Por otro lado, la replicación de bases de datos implica replicar una toda base de datos, incluidos su esquema, tablas y
procedimientos almacenados, a múltiples servidores. A diferencia de la replicación de datos, que se centra únicamente en
copiar datos, la replicación de bases de datos tiene como objetivo crear copias idénticas de toda la estructura de la base
de datos y su contenido.
Replicación de bases de datos VS duplicación
• La replicación de bases de datos implica la creación de múltiples copias de una base de datos. Como se mencionó anteriormente,
distribuye la carga de trabajo y mejora el rendimiento al permitir que las aplicaciones y los usuarios accedan a los datos desde la
réplica más cercana.
• La clara ventaja de la replicación de bases de datos sobre la duplicación radica en la flexibilidad que ofrece en términos de
distribución de datos y opciones de configuración. Ofrece la capacidad de replicar selectivamente objetos o subconjuntos de datos
específicos dentro de una base de datos. Esta característica proporciona más granularidad y control sobre qué datos se replican, lo
que permite a los usuarios adaptar el proceso de replicación para satisfacer necesidades específicas.
• Por otro lado, la duplicación implica crear una copia exacta de la base de datos en otro servidor, conocido como servidor espejo. El
servidor espejo permanece sincronizado con el servidor principal mediante una transferencia de datos continua. En caso de una falla
en el servidor primario, el servidor espejo puede asumir el control sin problemas.
Desafíos comunes de replicación de bases de datos
• Consistencia de los datos: Garantizar la coherencia de los datos entre réplicas puede resultar complicado, especialmente en
escenarios en los que los datos cambian con frecuencia. Sincronizar y propagar cambios requiere algoritmos y técnicas
sofisticados para evitar conflictos y mantener la coherencia.
• Retraso de replicación: Como la replicación a menudo implica propagar cambios a réplicas remotas, puede haber un ligero
retraso entre la base de datos principal y las réplicas. Minimizar el retraso en la replicación puede ser una alta prioridad,
especialmente en escenarios donde los datos en tiempo real son críticos. El uso de la replicación de bases de datos
sincrónica puede ayudar a mantener los retrasos en la replicación al mínimo.
Desafíos comunes de replicación de bases de datos
• Latencia de conexión: La replicación de datos en ubicaciones geográficamente distribuidas puede verse afectada por la
latencia de la red. Garantizar una transferencia de datos eficiente y minimizar la latencia se vuelve fundamental para
mantener un sistema de replicación confiable y con capacidad de respuesta.
• Escalabilidad: A medida que aumentan el volumen de datos y el número de transacciones, garantizar la escalabilidad del
sistema de replicación se convierte en un desafío. Escalar para adaptarse a una carga de trabajo creciente, como durante
una oferta navideña, y al mismo tiempo mantener el rendimiento y la capacidad de respuesta es un equilibrio delicado.
• La resolución de conflictos: Cuando se producen actualizaciones simultáneas en la base de datos principal y en la réplica,
se necesita un mecanismo para determinar qué actualización prevalece. Elegir la estrategia incorrecta puede provocar la
pérdida de datos o información corrupta.
Tutorial replicación
• Ejecutar XAMPP como administrador en Servidor Maestro y Esclavo.
• Desactivar Firewall (Recomendable)
• https://www.youtube.com/watch?v=HysVLy3C8Sw&ab_channel=Leizo194

También podría gustarte