Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cuaderno de Trabajo
Cuaderno de Trabajo
REGISTRO REGISTRO
CLIENTE VEHICULO
SISTEMA
SISTEMA DE VENTA
REGISTRO SISTEMA DE
DE VEHICULO
PROOVEDORES REPORTE
SISTEMA DE
SISTEMA VENTAS CONFIGURACION
CUADERNO DE
TRABAJO
Facultad: Carrera:
Ingenierías Tecnologías de la información.
Asignatura: Base de Datos II Código: ITICI2230
Profesora: Ing. Luis Alfonso Período académico: 1S- 2022
Núñez Freire. Mgs.
3
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Implementación de soluciones para procesamiento de datos. 7
Vistas. 7
Procedimientos almacenados. 11
Funciones. 15
Triggers. 19
UNIDAD 2 23
Base de Datos NoSQL 23
Introducción a las tecnologías NoSQL 23
Modelos existentes de NoSQL. 24
Introducción a MongoDb 26
Instalación y configuración inicial de MongoDb 27
Creación, actualización y manipulación de datos. 27
Diseño de esquema utilizando lenguaje js. 30
Respaldo y configuraciones. 42
Integración de datos SQL a NoSQL. 43
UNIDAD 3 52
Seguridad e integridad de las bases de datos. 52
Tipos de seguridad. 54
La seguridad de las Bases de Datos. 56
Tipos de Fallos. Planes de contingencia. 57
4
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
control de acceso. 59
UNIDAD 4 62
Sistemas de bases de datos distribuidas. 63
Estructuras de Bases de Datos Distribuidas. 63
Consideraciones al distribuir la Base de Datos. 66
Las doce reglas. 67
Transparencia y autonomía. 70
Técnicas de fragmentación, replica y asignación de datos para el diseño de las
Bases de Datos Distribuidas. 71
Procesamiento distribuido de consultas. 73
Recuperación en Sistemas Distribuidos. 74
CRONOGRAMA DE ACTIVIDADES Y TAREAS 75
5
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CONTENIDOS
Los mismos son obtenidos de la unidad que consta en el silabo y además la planificación correspondiente realizada para las temáticas a impartir según considere el
docente.
TRABAJO AUTÓNOMO
Trabajo que realizará cada estudiante después de las tutorías virtuales según lo indique el docente.
ACTIVIDADES A DESARROLLAR
Se desarrollan al final de cada unidad
Nomenclatura Usa siempre para las Usa en su mayoría para Usa poco para las variables, No usa para las variables,
variables, parámetros, las variables, parámetros, etc. nombres que parámetros, etc. nombres
etc. nombres que parámetros, representen la actividad de que representen la
representen la actividad etc. nombres éstos. actividad de éstos.
de éstos. que
representen la actividad
de éstos.
Estructura Aplica orden al Aplica cierto orden al Aplica cierto orden al No aplica orden al
implementar las implementar las implementar las consultas implementar las consultas
consultas SQL, es consultas SQL, es SQL, no es visiblemente SQL, visiblemente no se
visiblemente entendible. visiblemente entendible. entendible. entiende.
6
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Visualiza el Todas las consultas La mayoría de las Pocas de las consultas SQL No presenta las evidencias
resultado SQL tienen evidencia de consultas SQL tienen tienen evidencia de la de la ejecución de las
la ejecución. evidencia de la ejecución. consultas SQL.
ejecución.
Argumentación Redacta correctamente Redacta con dificultad el Redacta con dificultad el No redacta el empleo de las
el empleo de las empleo de empleo de las sentencias y sentencias y cláusulas.
sentencias y cláusulas, las sentencias cláusulas, contiene faltas
no contiene faltas y cláusulas, no ortográficas.
ortográficas. contiene
faltas
ortográficas.
Calificación
Manejo del tiempo Puntualidad al empezar la Puntualidad al empezar la Puntualidad al empezar la Falta puntualidad en
presentación, pero no tiene empezar la presentación,
presentación presentación todos los materiales no tiene los recursos
y previsión y previsión previstos. Excede con el previstos. No cumple con
del recurso. Cumple con del recurso. Excede con tiempo estipulado. el tiempo estipulado.
el tiempo estipulado. el tiempo estipulado.
7
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Trabajo en equipo Excelente preparación Preparación previa del Se observa preparación Evidencia que no hay
del tema y participación tema y responsabilidad previa del tema. preparación previa ni
entusiasta y trabajo en equipo. Baja
comprometida de todos compartida por todos los El trabajo no fue realizado por calidad de las
los integrantes que integrantes del equipo. todos los integrantes. exposiciones de los
mostraron coordinación y integrantes.
La mayoría tienen Pocos expositores muestran
calidad de sus
habilidades expositoras. habilidades.
exposiciones.
Calificación
Aclaración sobre el Tema bien organizado y Tema con información bien Tema impreciso y poco claro, sin
tema claramente presentado, así como focalizada pero no suficientemente coherencia entre las partes que lo
de fácil seguimiento. organizada. componen.
Alta calidad Ensayo escrito con tipografía Ensayo simple pero bien Ensayo mal planteado que no
del sencilla y que cumple con los organizado con al menos tres cumple con los criterios de diseño
diseño criterios de diseño planteados, sin errores de ortografía y tipografía planteados y con más de tres
errores de ortografía. difícil de leer. errores de ortografía.
Elementos propios El ensayo cumple claramente con El ensayo cumple con los cuatro El ensayo no cumple con todos los
del ensayo los cuatro criterios de diseño criterios de diseño, pero no con la criterios de diseño planteados o
extensión solicitada o bien, estos bien no están claramente
(Resumen, palabras clave, cuerpo puntos no han sido correctamente ordenados o definidos ni cumple
del ensayo y referencias realizados con la extensión mínima.
bibliografías)
Presentación La presentación/exposición fue La presentación/exposición fue La presentación/exposición no fue
del hecha en tiempo y forma, además hecha en tiempo y forma, aunque hecha en tiempo y forma, además
ensayo se entregó de forma limpia en el la entrega no fue en el formato pre la entrega no se dio de la forma pre
formato pre establecido (papel o establecido. establecida por el docente.
digital).
Calificación
8
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Aclaración sobre el Glosario bien organizado y Glosario bien focalizado, pero no Glosario poco claro, sin coherencia
tema claramente presentado, así como suficientemente organizado. entre las partes que lo componen.
de fácil seguimiento.
Alta calidad Glosario sobresaliente y atractivo Glosario simple pero Glosario mal planteado que no
del que cumple con los criterios de bien organizado con al cumple con los criterios de diseño
diseño diseño planteados, sin errores de menos tres errores de ortografía. planteados y con más de tres
ortografía. errores de ortografía.
Elementos propios El glosario esta El glosario no está ordenado y no El glosario no está ordenado
del glosario ordenado se distinguen las aportaciones de únicamente existe una aportación
alfabéticamente, con la aportación los autores/diccionario de las que no se sabe si es de un
de un autor/diccionario y una aportaciones personales. autor/diccionario o personal.
aportación personal.
Presentación La selección de los colores y la Los colores y la tipografía usada no Se abusó del uso de colores y
del tipografía usada fueron atractivas, permiten una correcta visualización tipografías y la entrega no se dio
glosario además el glosario se entregó de del glosario, aunque la entrega fue de la forma pre establecida por el
forma limpia en el formato que en el formato pre establecido. docente.
determino el docente (papel o
digital).
Calificación
Ortografía El trabajo no presenta El trabajo presenta de El trabajo presenta de El trabajo presenta m´pas de
errores ortográficos y uno a tres a cuatro errores cuatro errores ortográficos y
gramaticales en su dos ortográficos y gramaticales en su redacción.
redacción. errores gramaticales
ortográficos y en
gramaticales su
en redacción.
su
redacción.
9
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Calificación
Cronología Las fechas están ordenadas en forma Las fechas no están en un orden Las fechas están en total desorden
ascendente, de la más lejana a la más continuo, sin embargo, se y no se especifican o mencionan
cercana de la actual. Las épocas vienen encuentran regidas por periodos los diferentes periodos históricos.
marcadas. Periodos de tiempo bien históricos
definidos.
Diseño e imagen Uso de imágenes para clarificar el Uso de algunas imágenes en Uso de texto exclusivo en la línea
evento, fotografías, dibujos videos en algunos eventos para clarificar del tiempo, y uso de tipografías
caso de ser digital. los eventos. que dificulta su lectura.
Presentación La selección de los colores y la Los colores y la tipografía usada Se abuso del uso de colores y
tipografía usada fueron atractivas, no permiten una correcta tipografías, y la entrega no se dio
además la línea del tiempo se entregó visualización de la línea del en el tiempo pre establecido por el
Ortografía No existe faltas ortográficas. De 1 a 3 faltas ortográficas. Tiene más de 3 faltas ortográficas.
Calificación
INTRODUCCIÓN
La asignatura Base de Datos II pertenece a la unidad de formación profesional al campo de formación de la praxis profesional, de carácter teórico – práctico cuyo
propósito es brindar al
Estudiante los conocimientos, para que puedan afrontar los desafíos profesionales dentro de sus diferentes ámbitos de sus competencias, abordando temas más
avanzados de los expuestos en Base de Datos I, y la utilización de diferentes sistemas de software que permitan fortalecer la implementación y administración de
base de datos centralizadas y distribuidas, relacionales y no sql,
La asignatura comienza con un tema que tiene como finalidad introducir aspectos avanzados relacionados con las bases de datos (vistas, procedimientos
almacenados, funciones, disparadores). A continuación, se explica el procesamiento de transacciones, el control de la concurrencia y las técnicas de recuperación,
10
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
además de descripciones de cómo se materializan estos conceptos en SQL (Structured Query Language). Tras el estudio de las transacciones se presentan
modelos avanzados como las bases de datos distribuidas y no sql. Además, la implementación de seguridades para garantizar la confiabilidad de los datos y el
acceso hacia ellos.
OBJETIVO:
Aplicar con solidez los fundamentos de la disciplina, mediante técnicas para administrar eficientemente las bases de datos y mantenerse a la vanguardia de las
nuevas tendencias tecnológicas de almacenamiento y gestión de datos.
UNIDAD I
El estudiante será capaz de diseñar objetos de control de las bases de datos mediante vistas, procedimientos, funciones, disparadores.
El estudiante será capaz de diseñar objetos de control de las bases de datos mediante vistas, procedimientos, funciones, disparadores.
VISTAS.
Una vista de base de datos es el resultado de una consulta SQL sobre una o varias tablas; también se le puede considerar una tabla virtual. Las
vistas tienen la misma estructura que una tabla en el modelo relacional: filas y columnas. La única diferencia es que solo se almacena de ellas la
definición, no los datos. Igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es
posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas. Una
11
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
vista se especifica a través de una expresión de consulta de datos (una sentencia SELECT) sobre una o más tablas. (Hueso, 2014, p. 53) Base de
datos: Grado superior
Una vista es una tabla virtual que se genera a partir de una consulta de selección. Dicho de otro modo. Escribimos una consulta de selección (sobre una o más
tablas) para leer los datos, y almacenamos el resultado en una vista.
Sintaxis
12
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CREATE VIEW or replace vw_listaClientes CREATE VIEW or replace vw_listaClientes
AS AS
Select * Select nombre, apellido
From clientes From clientes
Llamar a una vista
SELECT listado_campos
FROM nombre_vista
Para desarrollar los ejemplos crear una base de datos en MariaDB llamada biblioteca:
Tabla Editorial
CAMPO TIPO DE DATO LONGITU
D
Codigo_editoria int
l
Nombre_editorial varchar 50
Pais_editorial varchar 15
Tabla Libros
CAMPO TIPO DE DATO LONGITU
D
Codigo_libro int
Isbn_libro varchar 15
título_libro varchar 50
area_libro varchar 25
Idioma_libro varchar 15
13
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Ejemplares_libr int
o
CREATE TABLE `editoriales` (
`codigo_editorial` INT(11) NOT NULL,
`nombre_editorial` VARCHAR(50) NULL DEFAULT NULL, `pais_editorial` VARCHAR(15) NULL DEFAULT NULL, PRIMARY KEY
(`codigo_editorial`)
)
ENGINE=InnoDB
;
14
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
ENGINE=InnoDB
;
Ejemplo 1:
Crear una vista que permita visualizar los libros escritos en español.
En el editor de consultas digite:
CREATE VIEW vw_libros_espaniol
AS
SELECT *
FROM libros
WHERE idioma_libro LIKE "Español";
15
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Resultado
Ejemplo 2:
Crear una vista que permita ver los libros que dispongan con más de 3 ejemplares.
CREATE VIEW vw_ejemplares
AS
SELECT *
FROM libros WHERE ejemplares_libro>3;
SELECT *
FROM vw_ejemplares;
Resultado
Ejemplo 3:
Mediante una vista mostrar los libros del área de programación y del área de ofimática
16
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CREATE VIEW vw_progyofi
AS
SELECT *
FROM libros
WHERE area_libro LIKE "programación" OR area_libro LIKE "ofimática";
SELECT *
FROM vw_progyofi;
Resultado
Ejemplo 4:
Crear una vista que permita visualizar el nombre de la editorial de los libros en español
17
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
SELECT titulo_libro, idioma_libro, nombre_editorial
FROM libros, editoriales WHERE idioma_libro LIKE
"Español" AND
libros.codigo_editorial = editoriales.codigo_editorial
Resultado
18
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CREATE VIEW vw_editorialLibroESIJ
AS SELECT titulo_libro, idioma_libro,
nombre_editorial
FROM editoriales
INNER JOIN libros ON editoriales.codigo_editorial =
libros.codigo_editorial WHERE
idioma_libro LIKE "Español"
Los procedimientos almacenados son un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los clientes
no necesitan lanzar cada comando individual, sino que pueden en su lugar llamar al procedimiento almacenado como un único comando. Las
rutinas almacenadas pueden mejorar el rendimiento ya que se necesita enviar menos información entre el servidor y el cliente. El intercambio que
hay aumenta la carga del servidor de la base de datos ya que la mayoría del trabajo se realiza en la parte del servidor y no en el cliente. Además,
al ir integrados en la base de datos permiten la portabilidad a otros sistemas sin necesidad de adaptaciones. (Hueso, 2014, p.90). Administración
de sistemas gestores de bases de datos.
19
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Un procedimiento almacenado MySQL no es más que una porción de código que se puede guardar y reutilizar. Es útil cuando se repite la misma tarea varias veces,
siendo un buen método para encapsular el código. Puede aceptar datos como parámetros, de modo que actúa en base a éstos. Para poder crear un procedimiento
almacenado es necesario tener permisos INSERT y DELETE sobre la base de datos.
Sintaxis
Delimiter $$
CREATE PROCEDURE nombre_procedimiento ([lista de parámetros])
Begin
Sentencias sql;
End$$
Llamar a un procedimiento
Call nombre_procedimiento ([lista de argumentos])
20
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
delimiter $$ CREATE PROCEDURE
libros_arq()
BEGIN
SELECT *
FROM libros WHERE area_libro LIKE
"arquitectura";
END; $$
CALL libros_arq();
Resultado
Ejemplo 6:
Crear un procedimiento almacenado que permita mostrar todos los libros según el idioma que especifique el usuario.
21
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CALL libros_idioma("español");
Resultado
CALL libros_idioma("ingles");
Resultado
Ejemplo 7:
Desarrollar un procedimiento almacenado que permita visualizar los libros de una determinada editorial.
a. Se utiliza como parámetro el código de la editorial.
22
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
delimiter $$ CREATE PROCEDURE
pr_libros_editorial_cod(editorial int)
BEGIN SELECT titulo_libro,
nombre_editorial
FROM libros INNER JOIN editoriales ON
libros.codigo_editorial = editoriales.codigo_editorial
WHERE editoriales.codigo_editorial = editorial; END; $
$
CALL pr_libros_editorial_cod(1)
23
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
delimiter $$ CREATE PROCEDURE pr_libros_editorial_nom(nombre
VARCHAR(50))
BEGIN SELECT titulo_libro,
nombre_editorial
FROM libros INNER JOIN editoriales ON
libros.codigo_editorial = editoriales.codigo_editorial
WHERE editoriales.nombre_editorial LIKE nombre;
END; $$
CALL pr_libros_editorial_nom("marcombo")
Ejemplo 8:
24
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
delimiter $$ CREATE PROCEDURE pr_ingreso_editorial(codigo int, nombre
VARCHAR(50), pais VARCHAR(15)) BEGIN
INSERT INTO editoriales
VALUES (codigo, nombre, pais);
END; $$
25
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
FUNCIONES ALMACENADAS
Las funciones guardan mucha similitud con los procedimientos, la diferencia es que una función debe devolver un valor propio de la función, la cual puede ser
asignada a una variable o función. Debido a este mecanismo las funciones pueden ser utilizadas dentro de sentencias SQL, además de poder ser usadas en
bloques anónimos, procedimientos u otras funciones. (Mazuelos, 2020)
Las funciones almacenadas en MySQL, se utilizan para encapsular, realizar cálculos u operaciones con registros y campos de datos que se toman de una consulta
SQL y son tareas comunes o reglas de negocio.
Una gran ventaja es que son reutilizables y el lenguaje de programación en que se desarrollan las funciones es mediante sentencias SQL y estructuras condicionales
o repetitivas.
Sintaxis
delimiter $$
create function nombre_función ([lista de
parámetros]) returns tipo_de_dato begin
sentencias sql;
return valor;
end $$
26
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
En la definición de la cabecera de la función hay que definir el tipo de dato que
devuelve con la palabra reservada RETURNS y en el cuerpo de la función debemos
incluir la palabra reservada RETURN para devolver el valor de la función.
27
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
18
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Ejemplo 9:
Crear una función que permita determinar la cantidad de libros en español
delimiter $$ CREATE FUNCTION fn_cuantosLibrosES()
RETURNS INT
BEGIN DECLARE cantidad INT; set cantidad = (SELECT COUNT(*) FROM libros
WHERE idioma_libro LIKE "español");
RETURN cantidad;
END $$
SELECT fn_cuantosLibrosES()
Resultado
Ejemplo 10:
Crear una función que permita determinar cuántos ejemplares hay de un determinado
libro.
delimiter $$
CREATE FUNCTION fn_ejemplaresLibro(nombre VARCHAR(50))
RETURNS INT
BEGIN
DECLARE cantidad INT;
set cantidad = (SELECT ejemplares_libro
FROM libros
WHERE titulo_libro LIKE nombre);
RETURN cantidad;
END $$
Resultado
Ejemplo 11:
Crear una función que permita ingresar el nombre de una editorial, si existe debe
visualizar un mensaje de que, si existe, caso contrario que no existe.
delimiter $$
CREATE FUNCTION fn_existeeditorial (nombre VARCHAR(50))
RETURNS VARCHAR(15)
BEGIN
DECLARE men VARCHAR(15);
DECLARE cuenta INT; set
cuenta = (SELECT COUNT(*)
FROM editoriales
WHERE nombre_editorial LIKE nombre);
if cuenta > 0 then set men = "si
existe"; else
set men = "no existe";
END if;
RETURN men;
END$$
Resultado
Ejercicio 12:
Realizar una función que permita calcular el total de ejemplares existente.
delimiter $$ CREATE FUNCTION
fn_sumaejemplareslibros()
RETURNS INT
BEGIN
DECLARE con INT;
DECLARE suma INT;
29
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
DECLARE cuenta INT;
SET con = 1;
SET suma = 0;
set cuenta = (SELECT COUNT(*) FROM libros); if cuenta = 0
then set suma = 0; else while (con<=cuenta) do
SET suma = suma + (SELECT ejemplares_libro FROM libros
WHERE codigo_libro = con);
SET con = con + 1;
END WHILE;
END if;
RETURN suma; END$
$
Resultado
Sintaxis
30
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Delimiter $$
Create trigger nombre_trigger
Momento
Evento
On
Tabla_ejecutora
For each row
Begin
Sentencia sql para tabla afectada;
End $$
¿Cuáles con los momentos y cuáles son los eventos?
Un evento es todo acontecimiento previamente organizado que reúne a un
determinado número de personas en tiempo y lugar preestablecidos, que
desarrollarán y compartirán una serie de actividades afines a un mismo objetivo
para estímulo del comercio, la industria, el intercambio social y la cultura general.
Ejemplo 13:
Crear un disparador que registre en la tabla transacciones cuando se ingrese una
nueva editorial.
31
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
delimiter $$ CREATE TRIGGER
tr_D_I_editorial
AFTER
INSERT ON
editoriales
FOR EACH ROW
BEGIN insert into transacciones (usuario_tran, fecha_tran,
evento_tran) values(current_user(), now(), "nueva editorial");
END$$
Resultado
Ejemplo 14:
Crear un disparador que registre en la tabla transacciones cuando se modifique una
editorial.
delimiter $$ CREATE TRIGGER
tr_D_M_editorial
AFTER
UPDATE ON
editoriales
FOR EACH ROW
BEGIN
insert into transacciones (usuario_tran, fecha_tran,
evento_tran) values(current_user(), now(), "mod editorial");
END$$
Ejemplo 15:
Crear un disparador que registre en la tabla transacciones cuando se elimine una
editorial
32
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
delimiter $$ CREATE TRIGGER
tr_D_E_editorial
AFTER
DELETE ON
editoriales
FOR EACH ROW
BEGIN
insert into transacciones (usuario_tran, fecha_tran,
evento_tran) values(current_user(), now(), "elim editorial");
END$$
Resultado
33
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
UNIDAD 2
El estudiante será capaz de conocer los principales conceptos vinculados a los
sistemas NoSql mediante la utilización de tecnología concreta para manipular datos.
Bases de datos de valores clave. Las bases de datos NoSQL de valor-clave hacen
hincapié en la simplicidad y son muy útiles para acelerar una aplicación que admita el
procesamiento de alta velocidad de lectura y escritura de datos no transaccionales.
Los valores almacenados pueden ser cualquier tipo de objeto binario (texto, video,
documento JSON, etc.) y se accede a través de una clave. La aplicación tiene control
total sobre lo que se almacena en el valor, convirtiéndolo en el modelo NoSQL más
flexible. Los datos se comparten y se replican en un clúster para obtener escalabilidad
y disponibilidad. Por esta razón, las bases de datos de valores clave a menudo no
admiten transacciones. Sin embargo, son muy eficaces en aplicaciones de escala que
se ocupan de datos de alta velocidad y no transaccionales.
Base de datos de documentos. Las bases de datos de documentos suelen
almacenar documentos JSON, XML y BSON. Son similares a las bbdd de valores
clave, pero en este caso, un valor es un solo documento que almacena todos los datos
relacionados con una clave específica. Los campos populares del documento pueden
indexarse para proporcionar una recuperación rápida sin conocer la clave. Cada
documento puede tener la misma estructura o una estructura diferente.
Bases de datos de columnas anchas. Las bases de datos NoSQL de columnas
anchas almacenan datos en tablas con filas y columnas similares a las BBDD
relacionales, pero los nombres y los formatos de las columnas pueden variar de fila a
fila en la tabla. Las columnas de columnas anchas agrupan columnas de datos
relacionados juntos. Una consulta puede recuperar datos relacionados en una sola
operación porque sólo se recuperan las columnas asociadas con la consulta. En una
BBDD, los datos estarían en diferentes filas almacenadas en diferentes lugares del
disco, requiriendo múltiples operaciones de disco para su recuperación.
35
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Bases de datos de grafos. Una base de datos de grafos utiliza estructuras de grafos
para almacenar, correlacionar y consultar relaciones. Proporcionan una adyacencia
libre de índice, de modo que los elementos adyacentes se unen entre sí sin usar un
índice.
Las bases de datos multimodales aprovechan alguna combinación de los cuatro tipos
descritos anteriormente y, por lo tanto, pueden soportar una gama más amplia de
aplicaciones.
Visitar la página http://nosql-database.org./ Detallar un SGBD NoSQL por
clasificación.
Sistemas de gestión de
bases de datos gráficas.
Sistemas de gestión de
bases de datos
multimodelo.
Actividad: Elaborar un organizador gráfico con los modelos NoSQL descritos en este
documento.
INTRODUCCIÓN A MONGODB
36
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Tipos de datos
Los principales tipos de datos soportados por los documentos en MongoDB son:
Nulo. Representa el valor nulo o bien un campo que no existe. Por ejemplo, {“x”:null}.
Booleanos. Representa el tipo booleano, que puede tomar los valores de true o false.
Por ejemplo, {“x”:true}.
Números. Distingue entre números reales, como, por ejemplo, {“x”:3.14}, y números
enteros, como, por ejemplo, {“x”:45}.
Cadenas. Cualquier cadena de caracteres, como, por ejemplo, {“x”:”Ejemplo”}.
Fechas. Almacena la fecha en milisegundos, pero no la zona horaria. Por ejemplo,
{“x”:new Date()}.
Expresiones regulares. Se pueden usar expresiones regulares para realizar
consultas.
Arrays. Se representa como un conjunto o lista de valores. Por ejemplo,
{“x”:[“a”,”b”,”c”]}.
Documentos embebidos. Los documentos pueden contener documentos embebidos
como valores de padre. Por ejemplo, {“x”:{“y”:45}}. Identificadores de objetos: es un
identificador de 12 bytes para un documento. Por ejemplo, {“x”: OjectId()}.
Colecciones
Una colección es un grupo de documentos, y desempeña el papel análogo a las tablas
en las bases de datos relacionales.
Las colecciones tienen esquemas dinámicos, lo que significa que dentro de una
colección puede haber cualquier número de documentos con diferentes estructuras.
Por ejemplo, en una misma colección podrían estar los siguientes documentos
diferentes: {“edad”:34}, {“x”:”casa”} que tienen diferentes claves y diferentes tipos de
valores.
Bases de datos
Las colecciones se agrupan en bases de datos, de manera que una única instancia de
MongoDB puede gestionar varias bases de datos cada una agrupando cero o más
colecciones. Hay que observar que:
• Cada base de datos tiene sus propios permisos y se almacena en ficheros del
disco separados.
• Una buena regla general consiste en almacenar todos los datos de una
aplicación en la misma base de datos.
• Las bases de datos separadas son útiles cuando se almacenan datos para
aplicaciones o usuarios diferentes que usan el mismo servidor de MongoDB.
37
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
INSTALACIÓN Y CONFIGURACIÓN INICIAL DE MONGODB
Instalación de MongoDB en Windows.
Descargar http://downloads.mongodb.org/win32/mongodb-
win32x86_64-2012plus-v4.2-latest-signed.msi
Carpetas iniciales
Ejecutar el instalador
Ejecutar el servidor
Ejecutar el cliente
en una base de
datos
db db
3. Ver base de
datos actual
38
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
show users show users
5. Visualizar los
usuarios
db.createCollection(“nombre_Col db.createCollection(“Clientes”)
6. Crear eccion”)
colecciones
PROYECCIONES
db.nombre_colección.find({atributo: db.Clientes.find({nombre:”luis”}).pretty(
14. Visualizar un ”valor”}) )
conjunto de .pretty()
documento
39
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
db.nombre_coleccion.find({atributo: db.Clientes.find({cupo:{$gt:
15. Visualizar {$operador: 200}}).pretty()
todos los clientes valor}}).pretty()
cuyo cupo sea
mayor
200
db.nombre_coleccion.deleteMany( db.Clientes.deleteMany(
21. Eliminar …{ …{
clientes cuyo …atributo:{$operador: valor} …cupo: {$gte: 300}
cupo sea mayor …} …}
o igual 300 …) …)
db.nombre_coleccion.drop() db.detalles.drop()
22. Eliminar
colecciones
40
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
24. Modificar el db.nombre_coleccion.update( db.Factura.update( …{nombre:
cupo de un …{atributo: “valor”}, “Guido},
cliente …{ …{
…$operador: { …$set: {
…atributo: valor …cupo: 260
…} …}
…} …) …} …)
25. Actualizar db.nombre_coleccion.update( db.Clientes.update( ...
varios(multi) ... {atributo:”valor”}, {nombre: ”Benjamin”},
documentos de ... { ... {
una colección ... $operador: { ... $set: {
... atributo: valor ... cupo: 350
... } ... }
... }, ... },
…{ …{
… multi:true … multi:true
…} …}
... ) ... )
Actividad: Implementar una base de datos con tres colecciones y sus respectivos
documentos.
41
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Para realizar la implementación de la base de datos en MongoDB, se puede
emplear Mongoose, el cual permite realizar esquemas, en los que se puede
especificar el tipo de dato de cada atributo y la referencia (ref) para establecer
una relación entre colecciones.
El IDE Visual Studio Code permite crear archivos .js con los esquemas para
cada colección:
43
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
mongoose.model('plc', plcSchema); module.exports =
PLC;;
De igual manera para el ingreso de los documentos se puede aplicar código js
Ingreso de usuarios
var mongoose = require('mongoose'); var Usuario =
require('./usuario');
mongoose.connect('mongodb://localhost/musicaDB', function (err) {
if (err) throw err; console.log('Successfully connected');
var nuevoUsuario = new Usuario({ _id: 1,
usuario_user: "luisn", nombre_user: "Luis",
apellidos: "Núñez", email:"luisnunezfreires@hotmail.com",
contrasena:"123456" }); nuevoUsuario.save(function(err) {
if (err) throw err; console.log('Usuario successfully
saved.'); });
});
Ingreso de artistas
var mongoose = require('mongoose'); var Artista =
require('./artista');
mongoose.connect('mongodb://localhost/musicaDB', function (err) {
if (err) throw err; console.log('Successfully connected');
Ingreso de compositores
var mongoose = require('mongoose'); var Compositor =
require('./compositor');
mongoose.connect('mongodb://localhost/musicaDB', function (err)
{ if (err) throw err;
console.log('Successfully connected'); var nuevoCompositor
= new Compositor({ _id: 1, nombre_com: "Pedro
Fernández", pais_com: "México",
url_biografia_com:"https://es.wikipedia.org/wiki/Pedro_Fern%C3%A1
ndez_(cantante)" }); nuevoCompositor.save(function(err) {
if (err) throw err; console.log('Compositor successfully
saved.'); });
});
Ingreso de discográficas
44
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
var mongoose = require('mongoose'); var Discografica =
require('./discografica');
mongoose.connect('mongodb://localhost/musicaDB', function (err)
{ if (err) throw err; console.log('Successfully
connected'); var nuevoDiscografica = new Discografica({
_id: 1, nombre_dis: "RMM",
fecha_creacion_dis: new Date("Fry, 11 Sep 1987 10:30:08 +0200
(CE ST)")
});
nuevoDiscografica.save(function(err) {
if (err) throw err;
Ingreso de álbumes
var mongoose = require('mongoose'); var Album = require('./album');
mongoose.connect('mongodb://localhost/musicaDB', function (err) { if
(err) throw err; console.log('Successfully connected'); var
nuevoAlbum = new Album({ _id: 1, nombre_alb: "Contra la
corriente", fecha_lanzamiento_alb: new Date ("Tue, 21 Oct 1997
10:30:08 +0200 (CEST)"), imagen_alb: "Vivir.jpg",
artista_id: 1, discografica_id: 1 });
nuevoAlbum.save(function(err) { if (err) throw err;
console.log('Album successfully saved.'); });
});
Ingreso de reseñas
var mongoose = require('mongoose'); var Resena = require('./resena');
mongoose.connect('mongodb://localhost/musicaDB', function (err) { if
(err) throw err; console.log('Successfully connected'); var
nuevoResena = new Resena({ _id: 1, contenido_res: "Este
albúm fue interpretado por el newyorquino Ma rc Anthony en el año de
1997", valoracion_res: 9, fecha_res: new Date ("Fri, 24
Oct 1997 10:30:08 +0200 (CEST)"), usuario_id: 1,
album_id: 1 }); nuevoResena.save(function(err) { if
(err) throw err; console.log('Reseña successfully
saved.'); });
});
45
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
if (err) throw err; console.log('Canción successfully
saved.'); });
});
Ingreso de playlist
var mongoose = require('mongoose'); var Playlist =
require('./playlist');
mongoose.connect('mongodb://localhost/musicaDB', function (err) {
if (err) throw err; console.log('Successfully connected');
var nuevoPL = new Playlist({ _id: 1, nombre_play:
'Primera lista', usuario_id: 1 });
nuevoPL.save(function(err) { if (err) throw err;
console.log('Playlist successfully saved.'); });
});
46
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Desde la terminal de Visual Studio Code se ejecuta los archivos .js con el
comando node.
Ejemplo: node ingresar_usuario
47
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Como resultado se obtiene
Documentos
48
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Figura 9 Documento de la colección discográficas
49
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Figura 13 Documento de la colección playlist
RESPALDO Y CONFIGURACIONES.
Restaurar
50
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
INTEGRACIÓN DE DATOS SQL A NOSQL.
51
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Además de una variable de sistema
52
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Aplicación:
Spoon permite pasar datos de un SGBD a otro, en este caso de una base
transaccional (MySQL) a una documental (MongoDB), para ello se realiza una
transformación.
53
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Al probar la conexión se produjo un error porque faltaba el conector
mysqlconnector-java-5.1.49-bin.jar. este archivo debe copiarse en:
54
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
55
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Como se quiere llevar los datos de la tabla actores a MongoDB se debe
seleccionar la opción de Big Data y ahí MongoDB Output y se conectan entre
sí.
56
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Para configurar la salida hacia MongoDB debe estar iniciado mongod y mongo
57
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Se configuran los siguientes argumentos dentro de MongoDB output
58
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
En el mongo document fields se presiona en Get fields para obtener los
campos de MySQL, a los cuales se les puede cambiar o mantener los nombres
y generar la estructura del documento,
59
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
60
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
UNIDAD 3
El estudiante será capaz de elaborar estrategias de protección de datos mediante el
diseño de esquemas de seguridad de bases de datos centralizadas y distribuidas.
La seguridad de los datos conlleva crear y aplicar una serie de estrategias que cubran
los procesos en donde los datos son el activo primordial. Estas estrategias deben fijar
el establecimiento de políticas, controles de seguridad, y procedimientos para detectar
amenazas que puedan explotar vulnerabilidades y que pongan en riesgo dichos datos;
es decir, que ayuden a proteger y salvaguardar tanto información como los sistemas
que la almacenan y gestionan.
Actividad: Del COIP de nuestro país defina y ejemplifique tres artículos de la LOPD.
Artícul Definición Ejemplo
o
TIPOS DE SEGURIDAD.
Existen diversos tipos de seguridad informática que una empresa debe vigilar para
evitar pérdida de datos y/o prestigio. Se trata de uno de los temas más importantes en
las organizaciones. Con tantas cosas ocurriendo en Internet, se vuelve
extremadamente necesario asegurar el contenido de nuestra red y nuestras
comunicaciones ante posibles problemas de pérdida o interceptación de datos. La
seguridad informática es la rama de la tecnología de la información que se ocupa de la
protección de datos en una red, sus comunicaciones o una computadora
independiente. Debido a que todas las organizaciones son dependientes de la
62
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
informática, la tecnología relacionada con la seguridad requiere un desarrollo
constante. Estos son tres diferentes tipos de seguridad informática.
63
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
ataques de hora cero o Ataques de hackers o Ataques de denegación de
servicio o Intercepción o robo de datos o Robo de identidad
Hay que entender que no hay una solución única que protege de una variedad de
amenazas. Es necesario varios niveles de seguridad. Si uno falla, los demás siguen en
pie. Seguridad de la red se lleva a cabo a través de hardware y software. El software
debe ser actualizado constantemente para lograr protegerse de amenazas
emergentes. Un sistema de seguridad de la red por lo general se compone de muchos
componentes. Idealmente, todos los componentes trabajan juntos, lo que minimiza el
mantenimiento y mejora la seguridad. Los componentes de seguridad de red incluyen:
• Antivirus y antispyware
• Cortafuegos, para bloquear el acceso no autorizado a su red
• Sistemas de prevención de intrusiones (IPS), para identificar las amenazas de
rápida propagación, como el día cero o cero horas ataques
• Redes privadas virtuales (VPN), para proporcionar acceso remoto seguro
Recuperado de https://www.universidadviu.com/tres-tipos-seguridad-
informaticadebes-conocer/
64
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Aplicar los mecanismos de seguridad a la base de datos biblioteca
Mecanismo Acción
Discrecional
Obligatorio
Existen varios tipos de fallos: el más fácil de tratar es el que no conduce a la pérdida
de información y el más difícil, el que produce una pérdida de información.
Para poder definir cómo un sistema de base de datos puede recuperarse antes los
fallos es muy importante definir previamente los modos de fallo que pueden ocurrir en
la base de datos y así establecer un plan de reparación o recuperación.
En una primera aproximación pueden dividirse en:
65
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
realizaron y que estaban afectadas en ese momento deben ser
recuperadas. Un ejemplo sería el error en el sistema operativo que hace
reiniciar el equipo en un momento determinado.
• Fallos Físicos. tipos Estos fallos son debidos a algún dispositivo físico cuyo mal
funcionamiento puede dar lugar incluso a la pérdida total de la base de datos,
no únicamente a las transacciones que se están realizando en el momento del
incidente. Pueden ser de dos tipos:
Pese a todas las medidas de seguridad puede y va a ocurrir un desastre. Los expertos
en seguridad afirman "sutilmente" que hay que definir un plan de recuperación de
desastres "para cuando falle el sistema", no "por si falla el sistema".
Si bien es cierto que se pueden presentar diferentes niveles de daños, también se
hace necesario presuponer que el daño ha sido total, con la finalidad de tener un Plan
de Contingencias lo más completo y global posible.
Un Plan de Contingencia de Seguridad Informática consiste los pasos que se
deben seguir, luego de un desastre, para recuperar, aunque sea en parte, la capacidad
funcional del sistema, aunque, y por lo general, constan de reemplazos de dichos
sistemas. Se entiende por Recuperación, "tanto la capacidad de seguir trabajando en
un plazo mínimo después de que se haya producido el problema, como la posibilidad
de volver a la situación anterior al mismo, habiendo reemplazado o recuperado el
máximo posible de los recursos e información”.
El análisis de riesgos informáticos es un proceso que comprende la identificación de
activos informáticos, sus vulnerabilidades y amenazas a los que se encuentran
expuestos, así como su probabilidad de ocurrencia y el impacto de las mismas, a fin de
determinar los controles adecuados para aceptar, disminuir, transferir o evitar la
ocurrencia del riesgo.
Un riesgo informático es la incertidumbre existente por la posible realización de un
suceso relacionado con la amenaza de daño respecto a los bienes o servicios
informáticos, como: Equipos informáticos y de comunicación, software, datos,
instalaciones, programas de cómputo, etc.
Recuperado de file:///C:/Users/ADMIN/Downloads/plandecontingenciainformatico-
66
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
171025143028.pdf
Actividad Grupal: Investigar qué son las políticas se seguridad de datos y elaborar
uno para una empresa.
Formar grupo de 4 estudiantes.
8 diapositivas sin contar con la portada.
CONTROL DE ACCESO.
El mecanismo de seguridad de un SGBD debe incluir formas de restringir el acceso al
sistema como un todo. Ésto, se denomina control de acceso y se pone en prácticas
creando cuentas de usuarios y contraseñas para que el SGBD controle el proceso de
entrada al sistema.
Otra técnica de seguridad es el cifrado de datos, que sirve para proteger datos
confidenciales que se transmiten por satélite o por algún otro tipo de red de
comunicaciones. El cifrado provee protección adicional a secciones confidenciales de
una base de datos. Los datos se codifican mediante algún algoritmo ex profeso. Un
usuario no autorizado que tenga acceso a los datos codificados tendrá problemas para
descifrarlos, pero un usuario autorizado contará con algoritmos (o claves) de
codificación o descifrado para tal efecto.
67
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Es la autoridad central que controla un sistema de este tipo. El DBA4 tiene una cuenta
privilegiada en el SGBD, a veces denominada cuenta del sistema, que confiere
capacidades extraordinarias no disponibles para cuentas y usuarios ordinarios de la
base de datos. El DBA ejecuta los siguientes tipos de acciones:
• Creación de cuentas.
• Concesión de privilegios.
• Revocación de privilegios.
• Asignación de niveles de seguridad.
• Es el responsable de la seguridad global del sistema de base de datos
Red
Físico
Humano
68
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Un privilegio es un derecho para ejecutar un tipo particular de sentencia o para
acceder a un objeto de otro usuario.
Un usuario puede recibir los privilegios de dos maneras:
• Explícitamente
• Se asignan privilegios a un rol (un conjunto nominado de privilegios) y luego se
asignan estos roles a uno o más usuarios.
El objetivo de los roles es permitir una mejor administración de los privilegios, por lo
general, se deberían garantizar privilegios a los roles y no a los usuarios individuales
Tipos de usuarios
• Visitante. Usuario que simplemente podrá leer o buscar en los contenidos y no
necesita autentificarse.
• Usuario autentificado. Se le permite dejar comentarios u opinar sobre los
productos o simplemente participar generando algún tipo de contenido.
• Editor. Gestiona a los usuarios y todos los contenidos y no tiene por qué tener
nociones técnicas del funcionamiento del sistema.
• Administrador. Es el responsable técnico y puede acceder a cualquiera de los
aspectos del sistema, configurando o modificando cualquier parámetro de éste.
Un usuario puede realizar cualquier tarea dentro de la base de datos, entre las que se
incluyen:
Estrategias de seguridad
• Uso de vistas y funciones:
o Dar permisos a vistas y funciones en lugar de a las propias tablas.
o Ocultan la complejidad de la BD.
o Permiten gestionar el acceso a nivel de columna.
• Uso de procedimientos almacenados.
o Impiden operaciones incorrectas asegurando las reglas de negocio.
o Los usuarios no necesitan tener permiso para acceder a las tablas, solo
permiso de ejecución de los procedimientos. o Permiten establecer el
nivel de seguridad más fino (contexto).
69
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Cifrado de Datos.
La criptografía está integrada por las técnicas utilizadas para, utilizando una clave,
convertir un mensaje inteligible (llamado texto nativo) en otro (texto cifrado), cuyo
contenido solo puede ser comprendido por quienes conozcan la clave. Los algoritmos
de cifrado son el método utilizado para ocultar el contenido del mensaje y el
criptosistema es el conjunto de equipos y claves usados para cifrarlo.
El uso de cifras y claves no es nuevo, ni ha venido de la mano de las nuevas
tecnologías. Ya en la antigua Grecia, cuando se quería ocultar un mensaje, se utilizaba
la esteganografía, que era una técnica consistente en ocultar el mensaje en sí mismo
(por ejemplo, utilizando tinta invisible). Este sistema no ofrecía gran seguridad, ya que
cualquiera que consiguiera acceder al mensaje podría ver su contenido. Por ello,
comenzaron a utilizarse los primeros métodos de criptografía. La criptografía clásica se
basaba métodos como el intercambio de letras, el ocultamiento del mensaje dentro de
otro, etc. La criptografía moderna se basa en el uso de las matemáticas y en la
utilización de mecanismos de cifrado (máquinas de cifrado o, actualmente,
ordenadores).
(Escrivá, 2013). Seguridad informática.
Tipos de encriptación
• Simétrica: La clave usada tanto para cifrar el mensaje como para descifrarlo es
Simétricpara cifrar el
mensaje común, por tanto, : La clave usada
la
• Asimétrica: Existen dos claves, una para cifrar el mensaje y otra para descifrarlo,
generalmente la primera es pública, es decir, solo la conoce el emisor, en cambio
la segunda se denomina Privada y solo la posee a quien van dirigidos los
mensajes enviados entre los que disponen de la clave pública, por tanto, sólo el
poseedor de la clave privada podrá leer los mensajes (desencriptarlos).
Indique en qué consiste el método de encriptación AES y el método MD5
AES
70
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
MD5
71
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
UNIDAD 4
El estudiante será capaz de aplicar técnicas de procesamiento de transacciones
distribuidas, para integrar soluciones de tecnologías de la información.
72
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
La independencia de los datos puede entenderse como la fortaleza de las aplicaciones
ante los cambios que pueda tener la estructura lógica de almacenamiento de los datos
y la ubicación física de los mismos. (Rosa, 2007).
Las transacciones son unidades de la ejecución ACID que terminan exitosamente o
abortan. Programadores de aplicación, administradores recurso, y administradores de
la transacción cooperan para llevar a cabo las propiedades del ÁCID. Miremos el papel
de cada una de estas propiedades participantes.
Atomic (Atomicidad) Si una transacción completa exitosamente, sus efectos son
durables, en caso contrario la transacción aborta y sus efectos se deshacen (rollback).
Por ejemplo, cuando actualizamos un registro, el registro cambia de valor y el antiguo
valor se anula (cuando termina exitosamente), o no cambia nada (cuando aborte).
Consistency (Consistencia) Una transacción es una transformación correcta del
estado del sistema. Una transacción producirá siempre los mismos resultados si se
aplican más de una vez (es decir, deben ser consistentes y reproducibles). Por
ejemplo, cuando agregando un elemento a una lista doblemente enlazada, los cuatro
indicadores (dos delanteros y los dos dirigidos hacia atrás) son puestos al día.
Isolation (Aislamiento). Se aíslan transacciones concurrentes de las actualizaciones
de otras transacciones incompletas. Estas actualizaciones no constituyen un estado
consistente, los datos deben protegerse de cambios hasta haber completado la
73
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
transacción a través de todos los nodos. Esta propiedad es llamada a menudo
seriabilidad. Por ejemplo, una segunda transacción, cruzando la lista doblemente
enlazada mencionada en el ejemplo de consistencia, verá la lista antes o después de
la inserción, pero solo verá cambios completos.
Durability (Durabilidad) Una vez una transacción completa exitosamente, sus efectos
persistirán aun cuando hay fracasos del sistema. Por ejemplo, después de la
actualización en el ejemplo de atomicidad, el registro tendrá el nuevo valor aun cuando
el sistema falla y cuando el sistema se inicie nuevamente se corrigen después de
haber completado la transacción comprometa completa.
Heterogéneos
75
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
El sistema de
agendamiento de
citas médicas del
IESS deja de
funcionar durante
2 horas en la
mañana.
La conexión del
nodo A se
ve afectada
por fallas en la
fibra.
Agilización del procesamiento de consultas: Si una consulta comprende datos de
varias localidades, puede ser posible dividir la consulta en varias subconsultas que se
ejecuten en paralelo en distintas localidades. Sin embargo, en un sistema distribuido
no se comparte la memoria principal, así que no todas las estrategias de intersección
se pueden aplicar en estos sistemas. En los casos en que hay repetición de los datos,
el sistema puede pasar la consulta a las localidades más ligeras de carga. Recuperado
de https://basesdedatos.wordpress.com/7-bases-de-datos-distribuidas/
76
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
con mayor frecuencia, de manera que la mayoría de las operaciones son
locales reduciendo el tráfico en la red.
6. Independencia de réplica. Un sistema maneja réplica de datos si una relación
dada (o un fragmento) se puede representar en el nivel físico mediante varias
copias almacenadas o réplicas, en muchos sitios distintos.
Razones de la réplica: Mejor desempeño (menos comunicación intersitial)
Mejor disponibilidad Desventaja: Propagación de actualizaciones La
réplica, como la fragmentación, deberá ser transparente al usuario.
7. Procesamiento distribuido de consultas. Mensajes, optimización de
consultas.
8. Manejo distribuido de transacciones.
Aspectos principales: Control de recuperación y control de concurrencia
Agente. En un sistema distribuido, una sola transacción puede implicar la
ejecución de código en varios sitios. Por lo tanto, se dice que cada transacción
puede tener varios agentes. Un agente es el proceso ejecutado en nombre de
una transacción dada en un determinado sitio
9. Independencia con respecto al equipo. Las instalaciones de cómputo en el
mundo real por lo regular incluyen varias máquinas diferentes y existe una
verdadera necesidad de integrar datos en todos estos sistemas y presentar al
usuario “una sola imagen del sistema”-
10. Independencia con respecto al sistema operativo. Es conveniente ejecutar
el mismo DBMS en diferentes equipos, pero también en diferentes sistemas
operativos.
11. Independencia con respecto a la red. El sistema ha de poder manejar
múltiples sitios diferentes, con equipo distinto y diferentes sistemas operativos,
resulta obvia la conveniencia de manejar también varias redes comunicación
distintas.
12. Independencia con respecto al DBMS. Es deseable manejar la
heterogeneidad SQL Server, ORACLE, MySQL, INGRES...
Actividad: Desarrollar ejemplos para cada una de las reglas:
Regla Ejemplo
Autonomía local.
No dependencia de
un sitio central.
Operación
continua.
Independencia con
respecto a
la
localización.
77
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Independencia con
respecto a la
fragmentación.
Independencia de
réplica.
Procesamiento
distribuido de
consultas.
Manejo distribuido
de transacciones.
Independencia con
respecto al equipo.
Independencia con
respecto al
sistema operativo.
Independencia con
respecto a la red.
Independencia con
respecto al DBMS.
TRANSPARENCIA Y AUTONOMÍA.
Se pueden encontrar diferentes aspectos relacionados con la transparencia.
Por ejemplo, puede existir transparencia en el manejo de copias repetidas o
transparencia en la distribución o fragmentación de la información.
78
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
sencillos que el sistema traduce a nombres completos. Con el uso de seudónimos, no
será necesario que el usuario conozca la localización física de un dato. Además, el
administrador de la base de datos puede cambiar un dato de una localidad a otra sin
afectar a los usuarios
79
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
realiza una actualización, el sistema operativo deberá actualizar todas las replica.
Recuperado de
https://www.academia.edu/15492427/I_UNIDAD_BASES_DE_DATOS_DISTRIBUIDA
S
En un principio cuando se diseña la base de datos hay que decidir en qué nodo se ha
de almacenar cada una de las tablas. Sin embargo, pueden existir tablas con muchas
filas que deben ser accedidas desde nodos diferentes. En ese caso, puede ser
conveniente dividir las filas de la tabla en grupos, de tal forma que cada grupo contiene
aquellas filas de la tabla que son accedidas con más frecuencia desde cierto nodo. Por
ejemplo, si tenemos una empresa con tres departamentos distantes entre sí donde
cada departamento cuenta con un nodo del sbdd, se puede dividir la tabla de
empleados en tres fragmentos. Cada fragmento debe contener los empleados de uno
de los departamentos y se almacenará en su correspondiente nodo. De esta manera,
cada departamento tendrá los detalles de sus empleados en su nodo local. Este
mecanismo se denomina fragmentación horizontal, donde un fragmento horizontal de
una tabla es un subconjunto de las filas de dicha tabla que se almacena en un nodo
diferente.
Aramburu, C. M. J., & Sanz, B. I. (2012). Bases de datos avanzadas.
Fragmentación mixta o hibrida cuando el proceso de partición hace uso de los dos
tipos anteriores. La fragmentación mixta puede llevarse a cabo de tres formas
diferentes:1.-Desarrollando primero la fragmentación vertical y posteriormente,
aplicando partición horizontal de los fragmentos verticales (denominada partición
VH)2.-Aplicando primero una división horizontal para luego, sobre los fragmentos
generados, desarrollar una fragmentación vertical (llamada partición HV)3.-De forma
directa considerando la semántica de las transacciones.
Vertical
Mixta
81
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Permite que los usuarios consulten zonas remotas, utilizando el mejor camino hacia
ese lugar y los mejores recursos que puedan realizar correctamente la consulta
(Teran, 2014). Las consultas distribuidas tienen como objetivo convertir transacciones
de usuario en instrucciones para manipulación de datos. No obstante, el orden en que
se realizan las transacciones afecta grandemente la velocidad de respuesta del
sistema. Así, el procesamiento de consultas presenta un problema de optimización en
el cual se determina el orden en el cual se hace la menor cantidad de operaciones. En
las bases de datos distribuidas se tiene que considerarlos siguientes aspectos:
• El costo de transmisión de datos en la red.
• Repetición y fragmentación.
• Procesamiento de intersección simple.
Además, en las consultas distribuidas el origen de los datos puede estar almacenado
en el mismo equipo o en equipos distintos y también detienen el acceso a datos de
varios orígenes de datos homogéneos. En SQL la sentencia join permite combinar
registros de dos o más tablas en una base de datos relacional. En el Lenguaje de
Consultas Estructurado (SQL), hay tres tipos de JOIN: interno, externo, y cruzado.
Pasos para el procesamiento de consulta:
1. Parsing y traducción de la consulta.
2. Optimización.
3. Generación de código.
4. Ejecución de la consulta.
Cuando una base de datos es acezada de esta manera la técnica que se utiliza es la
de fragmentación de datos que puede ser hibrida, horizontal y vertical.
En esta fragmentación lo que no se quiere es perder la consistencia de los datos, por
lo tanto, se respetan las formas normales de la base de datos.
82
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
deberán separar los datos entre los nodos restantes antes devolver a unir de nuevo el
sistema.
Copias múltiples de fragmentos de datos. El subsistema encargado del control de
concurrencia es el responsable de mantener la consistencia en todas las copias que se
realicen y el subsistema que realiza la recuperación es el responsable de hacer copias
consistentes de los datos de los nodos que han fallado y que después se recuperarán.
Transacción distribuida correcta. Se pueden producir fallos durante la ejecución de
una transacción correcta si se plantea el caso de que al acceder a alguno de los nodos
que intervienen en la transacción, dicho nodo falla.
Fallo de las conexiones de comunicaciones. El sistema debe ser capaz de tratar los
posibles fallos que se produzcan en las comunicaciones entre nodos. El caso más
extremo es el que se produce cuando se divide la red. Esto puede producir la
separación de dos o más particiones donde las particiones de cada nodo pueden
comunicarse entre sí, pero no con particiones de otros nodos. Para implementar las
soluciones a estos problemas, supondremos que los datos se encuentran
almacenados en un único nodo sin repetición. De esta manera sólo existirá un único
catálogo y un único DM (Data Manager) encargados del control y acceso a las distintas
partes de los datos. Para mantener la consistencia de los datos en el entorno
distribuido contaremos con los siguientes elementos:
• Catálogo: Programa o conjunto de programas encargados de controlar la
ejecución concurrente de las transacciones.
• CM (Cache Manager). Subsistema que se encarga de mover los datos entre las
memorias volátiles y no volátiles, en respuesta a las peticiones de los niveles
más altos del sistema de bases de datos. Sus operaciones son Fetch(x)
yFlush(x).
• RM (Recovery Manager). Subsistema que asegura que la base de datos
contenga los efectos de la ejecución de transacciones correctas y ninguno de
incorrectas. Sus operaciones son Start, Commit, Abort, Read, Write, que
utilizan a su vez los servicios del CM.
• DM (Data Manager). Unifica las llamadas a los servicios del CM y el RM.
• TM (Transaction Manager). Subsistema encargado de determinar que nodo
deberá realizar cada operación a lo largo de una transacción
Las operaciones de transacción que soporta una base de datos son: Start, Commit y
Abort. Para comenzar una nueva transacción se utiliza la operación Start. Si aparece
una operación commit, el sistema de gestión da por terminada la transacción con
normalidad y sus efectos permanecen en la base de datos. Si, por el contrario,
aparece una operación abort, el sistema de gestión asume que la transacción no
termina de forma normal y todas las modificaciones realizadas en la base de datos por
la transacción deben de ser deshechas.
83
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CRONOGRAMA DE ACTIVIDADES Y TAREAS
Agosto
Septiembre
Octubre
Noviembre
Diciembre
84
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.