Está en la página 1de 84

SISTEMA SISTEMA

REGISTRO REGISTRO
CLIENTE VEHICULO

SISTEMA
SISTEMA DE VENTA
REGISTRO SISTEMA DE
DE VEHICULO
PROOVEDORES REPORTE

SISTEMA DE
SISTEMA VENTAS CONFIGURACION
CUADERNO DE
TRABAJO

BASE DE DATOS II.


GUIA DE ESTUDIOS
PARA QUINTO NIVEL DE
LA CARRERA:
TECNOLOGÍAS DE LA
2
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
CUADERNO DE BASE DE DATOS II

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.

Correo electrónico: Contacto telefónico: 0993486150


luis.nunez@utelvt.edu.ec
Contenido
CUADERNO DE BASE DE DATOS II 1
DETALLE DEL CONTENIDO DE LA GUÍA 3
Metodología de construcción de la guía 3
Contenidos 3
Trabajo autónomo 3
Actividades a desarrollar 3
Rúbrica con la que se evaluará su trabajo 3
INTRODUCCIÓN 6
OBJETIVO: 6
UNIDAD I 7

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

DETALLE DEL CONTENIDO DE LA GUÍA


Estimado estudiante/a, la metodología que utilizaremos en la guía didáctica, implica su participación activa con el acompañamiento del docente, de manera flexible
de acuerdo a la realidad del estudiante.

METODOLOGÍA DE CONSTRUCCIÓN DE LA GUÍA


Se construye la guía didáctica en base a los contenidos del silabo planificado de acuerdo a la asignatura. (Leer el silabo entregado por el docente)

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

RÚBRICA CON LA QUE SE EVALUARÁ SU TRABAJO


Establecido por la comisión de las áreas pertinentes, para la evaluación a los estudiantes

Rúbrica para evaluar Actividades de Consultas SQL


Categoría Muy Bueno (2.5) Bueno (2.0) Regular (1.0) Debe mejorar (0) Total

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

Rúbrica para evaluar Presentaciones Orales.


Categoría Muy Bueno (2.0) Bueno (1.5) Regular (1.0) Debe mejorar (0.5) Total
Contenido Las ideas principales Información suficiente Hay gran No está claro cuales son
están claramente que se relaciona con las cantidad de las ideas principales que
información que no
desarrolladas y toda la ideas principales. está claramente se exponen.
información es relevante, Algunos temas conectada con las ideas No hay orden lógico de
están bien principales. presentación.
hay ejemplos apropiados
desarrollados
y
conclusiones claras
Creatividad Presentación Hay algo de originalidad Poca variedad; el material se Presentación repetitiva
del material en la presentación; presenta con poca con poca o ninguna
muy original y variada; variedad y combinación originalidad e interpretación variación; empleo
aprovecha lo inesperado apropiada de materiales propia. insuficiente de materiales.
para captar la y medios.
atención
de
la audiencia.
Habilidades Articulación pausada, Articulación pausada, Habla entre diente, discurso Voz inaudible o muy alta, el
expositoras clara; volumen repetitivo, falta claridad y ritmo de la presentación es
clara; volumen
concisión. muy lento o rápido,
apropiado, entusiasmo, apropiado, entusiasmo, discurso poco
seguridad. seguridad. comprensible.

Discurso claro, conciso, Algunas ideas


coherente; estilo propio y poco claras
naturalidad. y concisas.

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

Rúbrica para evaluar Ensayos.


Categoría 2 puntos 1 punto 0 puntos Total
Profundización del Descripción clara y sustancial del Descripción ambigua del tema a Descripción inexacta del tema a
tema tema a tratar y buena cantidad de tratar, algunos detalles que no tratar, sin detalles significativos o
detalles. clarifican el tema. escasos.

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

Rúbrica para evaluar Glosarios.


Categoría 2 puntos 1 punto 0 puntos Total
Profundización del Descripción clara y sustancial del Descripción ambigua de los Descripción incorrecta de cada
tema cada término y aportación personal términos, con aportaciones poco término del esquema, sin
adecuada. significativas.
aportaciones personales

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

Rúbrica para evaluar Organizadores Gráficos.


Categoría 2.5 puntos 1.5 puntos 0.5 puntos 0 puntos Total
Secuencia Las ideas principales y Las ideas principales y Las ideas principales y Las ideas
secundarias están secundarias están secundarias presentan principales y
presentadas en presentadas en un poca secuencia lógica. secundarias carecen secuencia
un orden orden más o menos lógica.
lógico. lógico.

Presentación y Presenta un Presenta un gráfico algo Presenta un Presenta un gráfico


creatividad gráfico innovador y armónico. gráfico poco nada innovador.
original e innovador. original.
Relevancia de la El gráfico contiene El gráfico contiene El gráfico El gráfico contiene información
información información importante y información importante y contiene innecesaria y nada relevante
relevante sobre el tema. poco relevante sobre el información innecesaria sobre el tema.
tema. sobre el tema.

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

Rúbrica para evaluar Línea de Tiempo.


Categoría 2 puntos 1 punto 0 puntos Total
Contenido Está redactado de una forma clara y Las ideas son poco No posee un contenido que
comprensible, las ideas son claras y a la comprensibles al contar con especifique la historia o esta
vez sintéticas, por lo que son fáciles de demasiada o muy poca confusa.
comprender. informació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

de forma limpia en el formato que tiempo, aunque la entrega fue en docente.


determino el docente. el formato pre establecido.

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.

IMPLEMENTACIÓN DE SOLUCIONES PARA PROCESAMIENTO DE DATOS.

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.

¿Por qué la vista es considerada como una tabla virtual?


Una vista es una tabla virtual cuyo contenido está definido por una consulta. Al igual
que una tabla, una vista consta de un conjunto de columnas y filas de datos con un
nombre. Sin embargo, a menos que esté indizada, una vista no existe como
conjunto de valores de datos almacenados en una base de datos.

¿Por qué la vista sirve como método se seguridad en la protección de datos?


Por que si se nos borra un registro tenemos la opción de recuperar ese registro y
también los datos se guardan de forma segura

Sintaxis

CREATE VIEW nombre_vista CREATE VIEW OR REPLACE nombre_vista


AS AS
Consulta Selección sql Consulta sql
ALTER VIEW nombre_vista [column_list] DROP VIEW [IF EXISTS] nombre_vista
AS
consulta_SELECT

Ejemplo. Crear una vista para una tabla clientes

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

Llamar a la vista vw_listaClientes


SELECT *
FROM vw_listaClientes

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
;

CREATE TABLE `libros` (


`codigo_libro` INT(11) NOT NULL,
`codigo_editorial` INT(11) NOT NULL,
`isbn_libro` VARCHAR(15) NULL DEFAULT NULL,
`titulo_libro` VARCHAR(50) NULL DEFAULT NULL,
`area_libro` VARCHAR(25) NULL DEFAULT NULL,
`idioma_libro` VARCHAR(15) NOT NULL DEFAULT '', `ejemplares_libro` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`codigo_libro`),
CONSTRAINT `FK_libros_editoriales` FOREIGN KEY (`codigo_editorial`)
REFERENCES `editoriales` (`codigo_editorial`)
)
COLLATE='utf8_general_ci'

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";

SELECT * FROM vw_libros_espaniol;

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

¿Por qué en el ejemplo 3 se emplea el operador OR y no el operador AND?


……

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

SELECT * FROM vw_editorialLibroEs;

Resultado

¿Por qué se aplica libros.codigo_editorial = editoriales.codigo_editorial?


Por qué en este apartado vamos a llamar a estos editoriales de dichas tablas
creadas.

El mismo ejemplo aplicando INNER JOIN

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"

Actividad: Desarrollar las vistas para los siguientes enunciados:


a. Visualizar el nombre y el país de la editorial, el nombre del libro que
corresponden al área de programación.

b. Desplegar las editoriales de España.


c. Visualizar el nombre de la editorial de los libros en español cuya cantidad de
ejemplares sea menor a 3.
PROCEDIMIENTOS ALMACENADOS.

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])

¿Por qué la lista de parámetros y la lista de argumentos está entre [ ]?


……

¿Cuál es la diferencia entre parámetros y argumentos?


Cada argumento corresponde al parámetro que se encuentra en la misma posición
en la lista. A diferencia de la definición de parámetro, los argumentos no tienen
nombres. Cada argumento es una expresión que puede contener cero o más
variables, constantes y literales.
Ejemplo 5:
Crear un procedimiento almacenado que permita listar todos los libros del área de arquitectura.

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.

delimiter $$ CREATE PROCEDURE libros_idioma(idioma VARCHAR(15))


BEGIN
SELECT *
FROM libros
WHERE idioma_libro LIKE idioma;
END; $$

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)

Colocar la captura del resultado

b. Se utiliza como parámetro el nombre de la editorial

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")

Colocar la captura del resultado

Ejemplo 8:

Mediante un procedimiento ingresar datos en la tabla editoriales

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; $$

CALL pr_ingreso_editorial(2, "RA-MA", "Mexico")

Colocar la captura del resultado

Actividad: Desarrollar los procedimientos almacenados para los siguientes enunciados:

0 Crear un procedimiento que permita visualizar los libros impresos en un


determinado país.
b. Crear un procedimiento que visualice los libros dada un área y un idioma.
c. Desarrollar un procedimiento que permita visualizar los libros que se
encuentren en un rango de ejemplares.
d. Con un procedimiento realizar el ingreso de datos en la tabla libros.
FUNCIONES.

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 $$

Llamar a una función


Select nombre_función ([lista de argumentos])

¿Cuál es la diferencia entre returns y return?

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 $$

SELECT ejemplaresLibro("PHYTON 3");

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$$

SELECT fn_existeeditorial("ra-ma") AS mensaje

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$
$

SELECT fn_sumaejemplareslibros() AS Total_Libros

Resultado

Actividad: Desarrollar las funciones almacenadas para los siguientes enunciados:


a. Mediante una función muestre un mensaje que indique si un determinado
libro tiene una cantidad de ejemplares mayor a 3.
b. Ingresar el código de dos libros e indicar cuál tiene más ejemplares.
c. Realizar una función que permita calcular el total de ejemplares existente
dada el área.
d. Ingresar el código de un libro visualizar el número de ejemplares que le hace
falta para completar 10.
TRIGGERS.

Un trigger o disparador es un tipo especial de rutina almacenada que se activa o


ejecuta cuando en una tabla ocurre un evento de tipo INSERT, DELETE o UPDATE .
Es decir, los disparadores implementan una funcionalidad asociada a cualquier cambio
en una tabla. (Hueso, 2014, p. 114). Administración de sistemas gestores de bases de
datos.
El trigger o disparador MySQL es un objeto de la base de datos que está asociado con
tablas. El trigger se ejecuta cuando ocurre una de las siguientes sentencias MySQL en
la tabla: INSERT, UPDATE y DELETE. Se puede invocar antes o después del evento.

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.

¿Puede existir dos triggers que se ejecuten con el mismo evento?


En particular, si pe pueden ya que si le cambiamos el nombre a la variable y al
comentario automáticamente se ejecutaran dos eventos al mismo tiempo

Añadir una tabla de nombre transacciones.

CREATE TABLE `transacciones` (


`codigo_tran` INT(11) NOT NULL AUTO_INCREMENT,
`usuario_tran` VARCHAR(50) NULL DEFAULT NULL,
`fecha_tran` DATETIME NULL DEFAULT NULL,
`evento_tran` VARCHAR(15) NULL DEFAULT NULL,
PRIMARY KEY (`codigo_tran`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2
;

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$$

Insertar la editorial AlfaOmega de Colombia

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$$

Cambiar el país de la editorial AlfaOmega a Perú


Resultado

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$$

Eliminar la editorial AlfaOmega

Resultado

Actividad: Desarrollar los triggers para los siguientes enunciados:


a. Crear un disparador que registre en la tabla transacciones cuando se ingrese
un nuevo libro.
b. Crear un disparador que registre en la tabla transacciones cuando se
modifique un libro.
c. Implementar un disparador que registre en la tabla transacciones cuando se
elimine un libro.
d. Crear un disparador que registre en la tabla transacciones cuando se
modifique una editorial e indique su código. Efectúe el cambio ddl necesario
en la tabla transacciones.

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.

BASE DE DATOS NOSQL

INTRODUCCIÓN A LAS TECNOLOGÍAS NOSQL

NoSQL es un enfoque de las bases de datos que representa un cambio de los


tradicionales sistemas de gestión de bases de datos relacionales. Para definir
NoSQL, es útil comenzar describiendo SQL, que es un lenguaje de consulta
utilizado por las BBDD relacionales.
Las bases de datos relacionales se basan en tablas, columnas, filas o esquemas para
organizar y recuperar datos. Por el contrario, las bases de datos NoSQL no se basan
en estas estructuras y utilizan modelos de datos más flexibles.
NoSQL es particularmente útil para almacenar datos no estructurados, que están
creciendo mucho más rápidamente que los datos estructurados y no encaja en los
esquemas relacionales y sus tipos de datos establecidos.
Los tipos comunes de datos no estructurados incluyen: datos de usuario y sesión;
Chat, mensajería y datos de registro, datos de series de tiempo tales y datos de
dispositivos además de objetos grandes como video e imágenes.
Recuperado de https://www.tecnologias-informacion.com/nosql.html

Productividad del desarrollo de aplicaciones. En los desarrollos de muchas


aplicaciones se invierte un gran esfuerzo en realizar mapeos entre las estructuras de
datos que se usan en memoria y el modelo relacional. Las bases de datos NoSQL
proporcionan un modelo de datos que encaja mejor con las necesidades de las
aplicaciones simplificando así la interacción, lo que resulta en tener que codificar,
depurar y evolucionar menos las aplicaciones.
Datos a gran escala. Las organizaciones han encontrado muy valiosa la posibilidad de
tener muchos datos y procesarlos rápidamente. En general, es caro (en el caso de ser
posible) hacerlo con una base de datos relacional. La primera razón es que las bases
de datos relacionales están diseñadas para ejecutarse en una única máquina, y por
otro lado es mucho más barato ejecutar muchos datos y procesarlos si se encuentran
cargados sobre clústeres de muchas maquinas, pero más pequeñas y baratas. La
mayoría de las bases de datos NoSQL están diseñadas para ejecutarse sobre
clústeres, por lo que encajan mejor para estas situaciones.
Algunas de las características compartidas por las bases de datos NoSQL son:
• No usan SQL como lenguaje de consultas, sin embargo, algunas de ellas
utilizan lenguajes de consultas similares a SQL, tales como CQL en Cassandra.
34
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
• En general se trata de proyectos de código abierto.
• Muchas de las bases de datos NoSQL nacieron por la necesidad de ejecutarse
sobre clúster, lo que ha influido sobre su modelo de datos como su
aproximación acerca de la consistencia. Las bases de datos relacionales usan
transacciones ACID para manejar la consistencia de la base de datos, sin
embargo, esto choca con un entorno de clúster, de manera que ofrecen
diversas opciones para implementar la consistencia y la distribución. Sin
embargo, no todas las bases de datos NoSQL están orientadas a correr sobre
clúster.
• Las bases de datos NoSQL no tienen un esquema fijo.

(Sarasa, 2016). Introducción a las bases de datos nosql usando mongodb.

MODELOS EXISTENTES DE NOSQL.


Se han creado varias variedades de bases de datos NoSQL para soportar necesidades
específicas y casos de uso. Éstos se dividen en cuatro categorías principales:

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.

Modelo SGBD NoSQL


Tienda de columnas
anchas / familias de
columnas.
Almacén de
documentos.

Valor clave / tienda de


tuplas.

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

MongoDB es una base de datos NoSQL orientada a documentos creada por la


compañía 10gen en el año 2007. Se caracteriza por que almacena los datos en
documentos de tipo JSON con un esquema dinámico denominado «BSON».
Los documentos
Son la unidad básica de organización de la información en MongoDB, y desempeñan
un papel equivalente a una fila en las bases de datos relacionales. Un documento es
un conjunto ordenado de claves que tienen asociados valores, y que se corresponden
con algunas estructuras de datos típicas de los lenguajes de programación tales como
tablas hash o diccionarios. En general, los documentos contendrán múltiples pares
clavevalor, como, por ejemplo, {“Nombre”:”Juan”,”País”:”España”}.

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.

(Sarasa, 2016). Introducción a las bases de datos nosql usando 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 Crear la carpeta data e el directorio c:


Crear la carpeta db dentro de data
Ejecutar el instalador mongodb-win32-x86_64-2012plus-4.2.5-signed.msi
Abrir el directorio bin • Archivo de programas
• MongoDb
• Server
• 4.2
• bin
Ejecutar el servidor Mongod.exe

Ejecutar el cliente Mongo.exe

Realizar las capturas de pantalla que evidencien el proceso de instalación


Descargar

Carpetas iniciales

Ejecutar el instalador

Abrir el directorio bin

Ejecutar el servidor

Ejecutar el cliente

CREACIÓN, ACTUALIZACIÓN Y MANIPULACIÓN DE DATOS.

DESCRIPCION SINTAXIS EJEMPLO


use nombreBaseDato use market
1. Crear o ubicarse

en una base de
datos

show dbs show dbs


2. Visualizar las
bases de datos

db db
3. Ver base de
datos actual

4. Crear un db.createUser( db.createUser(


usuario …{ …{
… user: “nombre_de_usuario”, … user: “adminAlisson”
…pwd: “contraseña”, …pwd: “321”
…roles: [“asignar_rol”] …roles: [“dbOwner”]
…} …) …} …)

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

show collections show collections


7. Visualizar las
colecciones

8. Insertar datos db.nombre_coleccion.insert( db.Clientes.insert(


en la colección …{ …{
…atributo1: valor, …nombre: valo”Alisson”,
…atributo2: valor, …apellido: “Martinez”,
…atributo3: valor …cupo: 200
…} …) …} …)
db.nombre_coleccion.find().prett db.Clientes.find().pretty()
9. Visualizar todos y()
los datos de la
colección

10. Insertar varios db. db.Clientes.insert(


datos en una nombre_de_la_colección.insert( ... [
colección ... [ ... { nombre: "Guido", apellido: "
... { atributo1: " valor ", atributo2: Cedeño ", cupo: 150 },
" valor ", atributo3: valor }, ... { nombre: "Cristina ", apellido:
... { atributo1: " valor ", atributo2: "Arismendi", cupo: 300 },
" valor ", atributo3: valor }, ... { nombre: "Benjamin", apellido:
... { atributo1: " valor ", atributo2: "Barrezueta", cupo: 300 }
" valor ", atributo3: valor } ... ]
... ] ... )
... )
db.nombre_coleccion.find({atribu db.Clientes.find({nombre
11. Realiar to “valor”}).pretty() “Guido”}).pretty()
búsqueda

PROYECCIONES

DESCRIPCIÓN SINTAXIS EJEMPLO


db.nombre_colección.find({},{"atrib db.Clientes.find({},{"nombre":1})

12. Visualizar el uto":1})


atributo con su id

db.nombre_colección.find({},{"atrib db.Clientes.find({},{"nombre ":1,


13. Visualizar el uto ":1, “atributo”:0}) “_id”:0})
atributo sin su id

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_colección.find({$opera db.Clintes.find({$and: [{cupo: {$gte:


16. Visualizar los dor:[{ atributo:{$operador: valor }}, 250 }},{ cupo: {$lte: 300 }}]})
clientes cuyo { atributo:{$ operador: valor }}]})
cupo sea sea
mayor o igual a
250 y menor o
igual 300

db.nombre_colección.find({$opera db.Clintes.find({$or: [{cupo: {$lt: 250 }},{


17. Visualizar los dor:[{ atributo:{$operador: valor }}, cupo: {$gt: 300 }}]})
clientes cuyo { atributo:{$ operador: valor }}]})
cupo sea menor
a 250 y mayor a
300

db.nombre_coleccion.find({atributo: db.Cliente.find({apellido: {$in:


18. Visualizar a {$operador: [“valor1”, [“Cedeño”, “Arismendi”]}}).pretty()
todos los clientes “valor2”]}}).pretty()
de apellido
Cedeño y todos
los clientes de
apellido
Arismendi

DESCRIPCION SINTAXIS EJEMPLO


19. Ingresar db.nombre_coleccion.insert( db.Factura.insert(
atributo fecha …{ …{
…atributo: valor, …_id: 1,
…atributo: new Date(“valor”) …fecha: new Date(“2020,04.16”)
…} …) …} …)
db.nombre_coleccion.remove({“atri db.Factura.remove({“_id”: 3})
20. Eliminar buto”: valor})
documentos

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

23. Modificar db.nombre_coleccion.update( db.Factura.update(


documentos …{atributo: valor}, …{_id: 1},
…{ …{
…$operador: { …$set: {
…atributo: new Date (“valor”) …fecha: new Date (“2020, 04, 14”)
…} …}
…} …) …} …)

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.

DISEÑO DE ESQUEMA UTILIZANDO LENGUAJE JS.

Convertir la base de datos relacional (usada en BD Oracle), que se indica a


continuación, en una base de datos MongoDB. Se deben de indicar las
colecciones necesarias, su descripción y, al menos, un ejemplo de documento
para cada una de ellas.

Figura 2 Modelo relacional en Oracle

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.

Mangosta es un Object Document Mapper (ODM). Esto significa que Mongoose


le permite definir objetos con un esquema fuertemente tipado que se asigna a
un documento MongoDB. Mongoose proporciona una increíble cantidad de
funcionalidades para crear y trabajar con esquemas. Mongoose actualmente
contiene ocho SchemaTypes que una propiedad se guarda como cuando se
conserva a MongoDB (Munro, 2017).

El IDE Visual Studio Code permite crear archivos .js con los esquemas para
cada colección:

Esquema colección usuario var mongoose =


require('mongoose'); var usuarioSchema =
mongoose.Schema({ _id: Number, usuario_user:
String, nombre_user: String, apellidos:
String, email:String, contrasena:String });
var USER = mongoose.model('usuario', usuarioSchema);
module.exports = USER;

Esquema colección artista


var
mongoose = require('mongoose'); var
artistaSchema = mongoose.Schema({
_id: Number, nombre_art:
String, pais_art: String,
url_biografia:String }); var ART =
mongoose.model('artista',
artistaSchema); module.exports =
ART;

Esquema colección compositor


var mongoose =
require('mongoose'); var compositorSchema =
mongoose.Schema({ _id: Number, nombre_com:
String, pais_com: String,
url_biografia_com:String }); var COM =
mongoose.model('compositor', compositorSchema);
module.exports = COM;

Esquema colección discográfica var mongoose =


require('mongoose'); var discograficaSchema =
mongoose.Schema({ _id: Number, nombre_dis: String,
fecha_creacion_dis: Date }); var DIS =
mongoose.model('discografica', discograficaSchema);
module.exports = DIS;

Esquema colección álbum var mongoose =


require('mongoose'); var albumSchema =
mongoose.Schema({ _id: Number,
42
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
nombre_alb: String, fecha_lanzamiento_alb:
Date, imagen_alb: String, artista_id: {
type: Number, ref: 'artista' },
discografica_id: { type: Number,
ref: 'discografica' }, }); var ALB =
mongoose.model('album', albumSchema);
module.exports = ALB;

Esquema colección reseña


var mongoose = require('mongoose'); var
resenaSchema = mongoose.Schema({ _id: Number,
contenido_res: String, valoracion_res:
Number, fecha_res: Date, usuario_id: {
type: Number, ref: 'usuario' },
album_id: { type: Number, ref:
'album' } }); var RES =
mongoose.model('resena', resenaSchema);
module.exports = RES;

Esquema colección canción


var mongoose =
require('mongoose'); var cancionSchema =
mongoose.Schema({ _id: Number, nombre_can:
String, file_can: String, letra_can:
String, genero_can: String, compositor_id:
{ type: Number, ref: 'compositor'
}, album_id: { type: Number,
ref: 'album' } }); var CAN =
mongoose.model('cancion', cancionSchema);
module.exports = CAN;

Esquema colección playlist


var mongoose =
require('mongoose'); var cancionSchema =
mongoose.Schema({ _id: Number, nombre_can:
String, file_can: String, letra_can:
String, genero_can: String, compositor_id:
{ type: Number, ref: 'compositor'
}, album_id: { type: Number,
ref: 'album' } }); var CAN =
mongoose.model('cancion', cancionSchema);
module.exports = CAN;

Esquema colección playlist canción var mongoose =


require('mongoose'); var plcSchema = mongoose.Schema({
_id: Number, cancion_id: { type: Number,
ref: 'cancion' }, playlist_id: { type:
Number, ref: 'playlist' } }); var PLC =

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');

var nuevoArtista = new Artista({ _id: 1,


nombre_art: "Marc Anthony", pais_art: "Estados Unidos",
url_biografia:"https://es.wikipedia.org/wiki/Marc_Anthony" });
nuevoArtista.save(function(err) { if (err) throw err;
console.log('Artista successfully saved.'); });
});

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;

console.log('Discografica successfully saved.'); });


});

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.'); });
});

Ingreso de canciones var mongoose = require('mongoose'); var Cancion =


require('./cancion');
mongoose.connect('mongodb://localhost/musicaDB', function (err) {
if (err) throw err; console.log('Successfully connected');
var nuevoCancion = new Cancion({ _id: 1, nombre_can:
"Si te vas", file_can: "sitevas.mp4", letra_can:
"sitevas.docx", genero_can: "Salsa", compositor_id:
1, album_id: 1 }); nuevoCancion.save(function(err) {

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.'); });
});

Ingreso de playlist canciones var mongoose = require('mongoose');


var Plc = require('./plc');
mongoose.connect('mongodb://localhost/musicaDB', function (err) {
if (err) throw err; console.log('Successfully connected');
var nuevoPLC = new Plc({

_id: 1, cancion_id: 1, playlist_id: 1


}); nuevoPLC.save(function(err) { if
(err) throw err; console.log('Playlist canción
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

Figura 3 Ejecución del archivo ingresar_usuario.js

Así con cada uno de los archivos de ingreso

Figura 4 Archivos del proyecto

47
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Como resultado se obtiene

Figura 5 Colecciones de la base de datos musicaDB

Documentos

Figura 6 Documento de la colección usuarios

Figura 7 Documento de la colección artistas

Figura 8 Documento de la colección compositores

48
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Figura 9 Documento de la colección discográficas

Figura 10 Documento de la colección álbumes

Figura 11 Documento de la colección reseñas

Figura 12 Documento de la colección canciones

49
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Figura 13 Documento de la colección playlist

Figura 14 Documento de la colección playlist canciones

RESPALDO Y CONFIGURACIONES.

Mongodump permite hacer un backup de los datos, ya sea conectándonos a un


servidor Mongo DB (Mongod o Mongos) y extraer esos datos como un cliente común o
accediendo directamente a los archivos de datos en el sistema de archivos. El
resultado será los archivos BSON (Binary JSON) que contienen los datos de la base
especificada.

Acceder al directorio bin


Sintaxis
mongodump -db base_de _datos_a_respaldar -out directorio_de_salida
Mongorestore, que su trabajo principal es tomar los archivos BSON, se conecta a
algún servidor Mongo DB (Mongod o Mongos) y guardar los datos. También puede
guardar los datos localmente a través del sistema de archivos, las opciones del
comando son muy parecidas a las de mongodump, es decir, podemos especificar
hosts, puertos, bases de datos, colecciones y demás.
Por último, hay que tomar en cuenta si nuestros servidores requieren autenticación,
tenemos que especificar usuario y contraseña al conectarnos con estas utilerías tanto
al respaldar como al restaurar.
Sintaxis-db base
mongorestore directorio_donde_está_el_archivo_BSON
Respaldar y restaurar la base de datos…..
Respaldar

Restaurar

Actividad: Respaldar y restaurar una base de datos empleando mongoexport y


mongoimport

50
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
INTEGRACIÓN DE DATOS SQL A NOSQL.

Pentaho Data Integration

Pentaho Data Integration, cuyo nombre clave es Kettle, es una herramienta de la


suite de Pentaho de las que se denomina ETL (Extract – Transform – Load), es decir,
una herramienta de Extracción de datos de una fuente, Transformación de esos datos
y Carga de esos datos en otro sitio. El uso de Kettle permite evitar grandes cargas de
trabajo manual frecuentemente difícil de mantener y de desplegar.

Estas tareas son típicas en procesos de migración, integración con terceros,


explotación de Big Data, etc, y en general se podría decir que son necesarias en casi
cualquier proyecto mediano o grande.
Para cargar el Pentaho Data Integration se debe descomprimir el archivo
pdice-9.0.0.0-423.zip en una carpeta en el disco C: de preferencia con el
nombre pdi-ce-9.0.0.0-423
Instalar jdk-8u251-windows-x64.exe y crear las variables de entorno

51
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
Además de una variable de sistema

Spoon es una Interfaz Gráfica de Usuario (GUI), que permite diseñar


transformaciones y trabajos que se pueden ejecutar con las herramientas de
Kettle.

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.

Se establece la conexión a la base de datos origen a través de Database


Connections, configurando los siguientes parámetros.:

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:

Se debe crear la entrada de datos con table input

Se configura la tabla de entrada con los siguientes argumentos.

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

Para seleccionar la base de datos de MongoDB se da clic en GetDBs, y para la


colección Get Collections y después en las listas desplegables.

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,

Se ejecuta la transformación y la colección de la base de datos MongoDB


comienza a recibir los datos desde MySQL.
El resultado está visualizado con la ayuda de Robo 3T (herramienta gráfica)
para administrar MongoDB.

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.

SEGURIDAD E INTEGRIDAD DE LAS BASES DE DATOS.


Debido al aumento de la capacidad de almacenamiento de los sistemas informáticos
actuales y gracias a la globalización de las comunicaciones, conseguida por el
inmenso incremento de las redes de comunicaciones, el peligro de la pérdida de
intimidad por el acceso a los datos personales por parte de cualquier organización se
vuelve cada vez mayor. Las autoridades han intentado poner freno a estas
vulnerabilidades legislando, para dotar al individuo de medios que le permitan en la
mayor medida posible preservar su intimidad. Se debe asegurar que cada
organización que disponga de datos personales empleará todos los medios posibles
para protegerlos, tanto en su ubicación como durante el tránsito de estos datos por
redes no seguras. San, M. G. E. (2014). Salvaguarda y seguridad de los datos:
Administración de bases de datos (uf1473).

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.

La confidencialidad, integridad y disponibilidad (en inglés: confidentiality, integrity and


availability) son los principios básicos de la seguridad de la información:
• La confidencialidad es la propiedad de prevenir la divulgación de información a
personas o sistemas no autorizados. Se tiene el derecho a la intimidad y que
los datos propios no sean ni públicos ni conocidos por personas no
autorizadas. Es un derecho constitucional y debe ser objeto de amplia
protección.

• Para la seguridad de la información, la integridad es la propiedad que busca


mantener los datos libres de modificaciones no autorizadas. La falta de
integridad puede darse cuando un usuario o una aplicación (con o sin
intención) modifica o borra información. La integridad debe asegurar que el
contenido de la información permanezca inalterado, a menos que sea
modificado por personal autorizado, y esta modificación sea registrada,
asegurando que sea precisa y confiable.
• La disponibilidad significa que la información tiene que estar disponible para su
uso y que no haya ninguna interrupción que evite el funcionamiento. En un
61
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
SGBD se obliga a que esté funcionando tanto el servidor que suministra los
datos como los terminales desde donde se accede a ellos, y que también las
líneas de comunicación funcionen correctamente. Se deben evitar cortes en el
servicio producidos por cualquier causa, como puede ser fallos en el suministro
de energía o incluso una actualización del sistema.

Mencione cuatro artículos del Convenio sobre la Ciberdelincuencia (Tratado de


Budapest)
Artículo Definición

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.

• Seguridad de Hardware se puede relacionar con un dispositivo que se utiliza


para escanear un sistema o controlar el tráfico de red. Los ejemplos más
comunes incluyen cortafuegos o firewalls de hardware y servidores proxy.
Otros ejemplos menos comunes incluyen módulos de seguridad de hardware
(HSM), los cuales suministran claves criptográficas para funciones críticas tales
como el cifrado, descifrado y autenticación para varios sistemas. De entre los
diferentes tipos de seguridad informática, son los sistemas de hardware los que
pueden proporcionar una seguridad más robusta, además de que también
pueden servir como capa adicional de seguridad para los sistemas importantes.
La seguridad de hardware también se refiere a cómo podemos proteger
nuestros equipos físicos de cualquier daño. Para evaluar la seguridad de un
dispositivo de hardware, es necesario tener en cuenta las vulnerabilidades
existentes desde su fabricación, así como otras fuentes potenciales, tales como
código que se ejecuta en dicho hardware y los dispositivos entrada y salida de
datos que hay conectados en la red.

• Seguridad de Software se utiliza para proteger el software contra ataques


maliciosos de hackers y otros riesgos, de forma que nuestro software siga
funcionando correctamente con este tipo de riesgos potenciales. Esta
seguridad de software es necesaria para proporcionar integridad, autenticación
y disponibilidad. Entre los tipos de seguridad informática, este campo de la
seguridad de software es relativamente nuevo. Los primeros libros y clases
académicas sobre este tema aparecieron en 2001, lo que demuestra que ha
sido recientemente cuando desarrolladores, arquitectos de software y
científicos informáticos han comenzado a estudiar sistemáticamente cómo
construir software seguro. Los defectos de software tienen diversas
ramificaciones de seguridad, tales como errores de implementación,
desbordamientos de buffer, defectos de diseño, mal manejo de errores, etc.
Con demasiada frecuencia, intrusos maliciosos pueden introducirse en
nuestros sistemas mediante la explotación de algunos de estos defectos de
software. Las aplicaciones que tienen salida a Internet presentan además un
riesgo de seguridad más alto. Se trata del más común hoy en día. Los agujeros
de seguridad en el software son habituales y el problema es cada vez mayor.
La seguridad de software aprovecha las mejores prácticas de la ingeniería de
software e intenta hacer pensar en la seguridad desde el primer momento del
ciclo de vida del software.

• La seguridad de red se refiere a cualesquiera actividades diseñadas para


proteger la red. En concreto, estas actividades protegen la facilidad de uso,
fiabilidad, integridad y seguridad de su red y datos. La seguridad de red
efectiva se dirige a una variedad de amenazas y la forma de impedir que entren
o se difundan en una red de dispositivos. ¿Y cuáles son las amenazas a la
red? Muchas amenazas a la seguridad de la red hoy en día se propagan a
través de Internet. Los más comunes incluyen: o Virus, gusanos y caballos de
Troya o Software espía y publicitario o Ataques de día cero, también llamados

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/

LA SEGURIDAD DE LAS BASES DE DATOS.


En la actualidad se acostumbra hablar de dos tipos de mecanismos de seguridad en
las bases de datos:
• Los mecanismos de seguridad discrecionales se usan para otorgar
privilegios a los usuarios, incluida la capacidad de tener acceso a archivos,
registros o capacidad de tener acceso a archivos, registros o campos de datos
específicos en un determinado modo.
• Los mecanismos de seguridad obligatorios sirven para imponer igualdad de
múltiples niveles clasificando los datos y los usuarios en varias clases (o
niveles) de seguridad e implementando después la política de seguridad
apropiada de la organización.
Actividad: Elaborar un organizador gráfico con los tipos de seguridad y los
mecanismos de seguridad.

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

TIPOS DE FALLOS. PLANES DE CONTINGENCIA.

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:

• Fallos lógicos. Cualquier fallo que afecta a los procesos y transacciones


abiertos en las bases de datos. Pueden ser de tres tipos:

o Fallos de transacción Estos se caracterizan por que el resto de las


transacciones continúan ejecutándose (salvo a la que le afecte el fallo),
y pueden ser de dos tipos:
 Fallos locales previstos por la aplicación. La transacción no
puede continuar ejecutándose normalmente a causa de alguna
condición interna, como puede ser una entrada de datos
incorrecta, datos que no aparecen, desbordamiento, etc.
 Fallos locales no previstos. El sistema en ese momento está en
un estado no deseado, en el que la transacción no puede
ejecutarse normalmente en ese momento (pero se podrá
ejecutar más tarde), por ejemplo, un interbloqueo.

o Fallos por imposición del control de concurrencia, Por ejemplo, si este


subsistema decide abortar una transacción para reiniciarla luego,
porque se vulneró la seriabilidad de las transacciones o porque alguna
está en bloqueo mortal. El control de concurrencia es el que evita que
las transacciones que se ejecutan a la vez no interfieran entre sí.

o Fallos del sistema Como un error en el software del sistema operativo,


que causa la pérdida de la memoria volátil, aunque el contenido de la
memoria no volátil se mantiene. Todas las transacciones que se

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:

o Fallos de disco Que es la caída de cualquier tipo de dispositivo físico de


almacenamiento, como puede ser el fallo de disco en el que una parte
de este puede perder su información por cualquier tipo de fallo físico en
el mismo. Igual que en el anterior, todas las transacciones afectadas en
ese momento deben ser recuperadas.
o Fallos catastróficos Pueden ser debidos a fenómenos tales como un
corte en la energía eléctrica, cualquier hecho catastrófico, inundación,
incendio, robo, sabotaje, etc.
San, M. G. E. (2014). Salvaguarda y seguridad de los datos:
Administración de bases de datos (uf1473).

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

Identifique que riesgos informáticos existentes en su domicilio o lugar de trabajo.

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

Una costumbre (mala costumbre) que tienen muchos administradores o usuarios es


usar el acceso con root (super-usuario o administrador) para todas las bases de datos,
instalan un sitio usando el CMS WordPress, y como datos de acceso a la base de
datos (para que WP use el servidor MariaDB y use su DB) le ponen el usuario de
administración del servidor MariaDB: root
También, instalan cualquier otra aplicación web (un chat, paste, foro, etc) y hacen lo
mismo, siempre usan el usuario root de MariaDB (Domínguez, 2015).
Actividad: ¿Qué medidas de seguridad emplearía en cada uno de los niveles?
Nivel Medida
Sistema de
base de datos
Sistema
operativo

Red

Físico

Humano

Privilegios, autorizaciones y vistas.


Cuando se crea el usuario habrá que dotarlo de los privilegios que se consideren
oportunos, para que pueda realizar unas operaciones determinadas en la base de
datos. Estos privilegios pueden dividirse en dos tipos:
• Privilegios del sistema (son las operaciones que afectan a todo el sistema):
estos permiten ejecutar un tipo de comando SQL o realizar alguna operación
determinada sobre un determinado tipo de objeto, que previamente se haya
especificado. Por ejemplo, poder crear tablespaces es un privilegio de sistema.

• Privilegios de objeto (tablas, vistas, etc.): estos privilegios permiten que se


acceda y se realicen cambios en los datos de otros usuarios. Por ejemplo,
poder consultar la tabla de otro usuario es un privilegio sobre objetos.
San, M. G. E. (2014). Salvaguarda y seguridad de los datos: Administración de
bases de datos (uf1473).

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:

• Procesar objetos de base de datos  Leer datos de base de datos.


• Leer metadatos de base de datos.
• Agregar usuarios a funciones de base de datos existentes.
• Crear funciones de base de datos nuevas.
• Definir permisos para funciones de base de datos.

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).

Argumente el uso de vistas como medida de seguridad

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

tanto posibilidad de conseguir la clave es mayor ya que su


propagación puede ser interceptada por personas indeseables.

• 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

Actividad: Crear un disparador que permita encriptar mediante el método AES la


contraseña ingresada por el usuario.
Debe crear una tabla usuario en la base de datos biblioteca.

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.

SISTEMAS DE BASES DE DATOS DISTRIBUIDAS.


¿Qué es sistema?
……

Es una colección de datos que pertenecen lógicamente a un sólo sistema, pero se


encuentra físicamente esparcido en varios "sitios" de la red. Un sistema de base de
datos distribuidos se compone de un conjunto de sitios, conectados entre sí mediante
algún tipo de red de comunicaciones, en el cual:
• Cada sitio es un sistema de base de datos en sí mismo.
• Los sitios trabajan en conjunto si es necesario con el fin de que un usuario de
cualquier sitio pueda obtener acceso a los datos de cualquier punto de la red
tal como si todos los datos estuvieran almacenados en el sitio propio del
usuario.

Recuperado de: http://repositorio.utn.edu.ec/bitstream/123456789/522/3/04%20ISC


%20151%20CAPIT
ULO%20I.pdf

ESTRUCTURAS DE BASES DE DATOS DISTRIBUIDAS.


La tecnología y prototipo de los sistemas de gestión de bases de datos distribuidas se
han desarrollado de uno a otro y cada sistema adopta datos una arquitectura particular
propia. (Rosa, 2007, p.4). Bases de datos distribuidas.

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.

¿Qué consecuencias puede ocasionar las siguientes situaciones?


Situación Consecuencia
Se está realizando
una transacción a
través de un portal
web y de justo en
ese instante se
genera un corte
eléctrico.

SGBDD homogéneos: Un DDBMS homogéneo tiene recaudos múltiples de datos;


integra recursos múltiples de datos. Las bases de datos distribuidas homogéneas son
similares a las bases de datos centralizadas, pero en vez de almacenar todos los datos
en un sitio, los datos se distribuyen en diferentes sitios de una red. Si nosotros
queremos partir de una arquitectura conceptual DDBMS, debemos conocer que partir
de la arquitectura nosotros podríamos incluir un DBMS local y esquemas locales estos
no tienen que estar explícitamente presentes en ninguna particular. Para manejar la
distribución de otros aspectos, nosotros debemos agregar dos niveles adicionales, a la
arquitectura estándar tercer - nivel ANSI-SPARC, los que nombramos fragmentación y
localización de schemas. estándar para los de ANSI-SPARC, recordando que
implementación.

SGBDD heterogéneos: Esta clase se caracteriza por el uso de diferentes DBMS en


los nodos locales. Hay dos subclases principales: los que hacen su integración
totalmente dentro del sistema, y los más simples “hooks” o los apéndices externos
llamados gateways, para permitir enlace a sistemas ajenos. La anterior subclase
puede ser adicionalmente refinada en una subclase que provee un subconjunto
importante de funciones que uno esperaría desde cualquier SGBD, y que enfatiza en
los aspectos más pragmáticos del manejo de datos colectivos, tales como
conversiones entre sistemas y algún aspecto básico de desempeño (sistemas
74
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
multidatabase). Los sistemas multidatabase (SGBDMs) tienen múltiples SGBD,
posiblemente de diferentes tipos, y múltiples DBs preexistentes. La integración es
desempeñada por lo tanto por múltiples softwares de subsistemas.

Actividad: Ubique un ejemplo para cada SGBDD


SGBDD Ejemplo
Homogéneos

Heterogéneos

CONSIDERACIONES AL DISTRIBUIR LA BASE DE DATOS.

Utilización compartida de los datos y distribución del control: La ventaja principal


de compartir los datos por medio de la distribución es que cada localidad pueda
controlar hasta cierto punto los datos almacenados localmente. En un sistema
centralizado, el administrador de base de datos de la localidad central controla la base
de datos. En un sistema distribuido existe un administrador global de la base de datos
que se encarga de todo el sistema. Parte de esta responsabilidad se delega al
administrador de base de datos de cada localidad. Dependiendo del diseño del
sistema distribuido, cada administrador local podrá tener un grado de autonomía
diferente, que se conoce como autonomía local. La posibilidad de contar con
autonomía local es en muchos casos una ventaja importante de las bases de datos
distribuidas.

Fiabilidad y disponibilidad: Si se produce un fallo en una localidad de un sistema


distribuido, es posible que las demás localidades puedan seguir trabajando. En
particular, si los datos se repiten en varias localidades, una transacción que requiere
un dato específico puede encontrarlo en más de una localidad. Así, el fallo de una
localidad no implica necesariamente la desactivación del sistema.
El sistema debe detectar cuando falla una localidad y tomar las medidas necesarias
para recuperarse del fallo. El sistema no debe seguir utilizando la localidad que falló.
Por último, cuando se recupere o repare esta localidad, debe contarse con
mecanismos para reintegrarla al sistema con el mínimo de complicaciones.
La disponibilidad es fundamental para los sistemas de bases de datos que se utilizan
en aplicaciones de tiempo real. Por ejemplo, si una línea aérea no puede tener acceso
a la información, es posible que pierda clientes a favor de la competencia.

¿Qué consecuencias puede ocasionar las siguientes situaciones?


Situación Consecuencia

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/

LAS DOCE REGLAS.


Principio fundamental de los sistemas distribuidos: Para el usuario un sistema
distribuido debe ser igual que uno centralizado.

1. Autonomía local. Los sitios de un sistema distribuido deben ser autónomos


(hasta donde sea posible). Ningún sitio X deberá depender para su buen
funcionamiento de un sitio Y. Todas las operaciones de un sitio se controlan en
ese sitio.
2. No dependencia de un sitio central. Todos los sitios deben tratarse igual; no
debe haber dependencia de un sitio maestro para obtener un servicio central
(centralización de consultas o transacciones). Razones: Cuello de botella
Vulnerabilidad
3. Operación continua. Lo mismo que en un sistema centralizado, nunca deberá
haber la necesidad de apagar a propósito el sistema.
4. Independencia con respecto a la localización. Transparencia de
localización, no será necesario que ningún usuario sepa donde están
almacenados físicamente los datos, debe, el sistema comportarse como si
todos los datos estuvieran almacenados en su propio sitio local.
5. Independencia con respecto a la fragmentación. Un sistema maneja
fragmentación si es posible dividir una relación en partes o “fragmentos” para
propósitos de almacenamiento físico. Los datos se almacenan donde se usa

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.

Transparencia sobre la localización de datos. Esto es, el comando que se usa es


independiente de la ubicación de los datos en la red y del lugar en donde la operación
se lleve a cabo. Permite a los usuarios acceder a la información de un archivo
cualquiera de la base de datos sin necesidad de indicar en qué computadora se
encuentra el archivo. La transparencia de localización busca que los usuarios no
puedan distinguir la localización de los recursos.

La transparencia de localización se logra creando un conjunto de seudónimos o alias


para cada usuario. Así, el usuario puede referirse a los datos usando nombres

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

La transparencia a nivel de fragmentación de datos permite que cuando los objetos


de las bases de datos están fragmentados, el sistema tiene que manejar la conversión
de consultas de usuario definidas sobre relaciones globales a consultas definidas
sobre fragmentos. Así también, será necesario mezclar las respuestas a consultas
fragmentadas para obtener una sola respuesta a una consulta global. El acceso a una
base de datos distribuida debe hacerse en forma transparente. Es el mayor nivel, el
usuario o programador no necesita saber que una base de datos está en particiones.
Ni los nombres, ni la ubicación se especifican antes de acceder a los datos. Permite al
usuario acceso a la información de un archivo fragmentado como si todos los datos del
archivo estuvieran en una misma computadora. Es decir, cuando se crea transparencia
de fragmentación, el sistema crea la ilusión de que los archivos no están
fragmentados. La transparencia a nivel de fragmentación de datos permite que cuando
los objetos de las bases de datos están fragmentados, el sistema tiene que manejar la
conversación de consultas de usuarios definidas sobre relaciones globales a consultas
definidas sobre fragmentos. Así también, será necesario mezclar las respuestas a
consultas fragmentadas para obtener una sola respuesta a una consulta global. El
acceso a una base de datos distribuida debe hacerse en forma transparente.

La transparencia sobre la replicación de datos se refiere a que si existen réplicas


de objetos de la base de datos, su existencia debe ser controlada por el sistema, no
por usuario, se debe tener en cuenta que cuando el sistema se encarga de manejar las
réplicas en un sistema, el trabajo de éste es mínimo por lo que se puede obtener una
eficiencia mayor. Sin embargo, el usuario puede olvidarse de mantener la consistencia
de las réplicas teniendo así datos diferentes. Por lo que se sugiere que las réplicas las
haga el sistema en su totalidad sin que el usuario se percate si está trabajando o no
sobre una réplica.
Los usuarios ven cada objeto de datos como lógicamente único. Puede que el sistema
distribuido replique los objetos para incrementar el rendimiento del sistema o la
disponibilidad de los datos. Los usuarios no deben preocuparse por los objetos que se
hayan replicado ni por la ubicación de esas réplicas. El sistema conserva replicas
(copias) idénticas de la relación y guarda cada replica en un sitio diferente. La
alternativa a las réplicas es almacenar solo una copia de la relación r. Si un archivo
esta replicado, el usuario no distingue cuál de las réplicas está leyendo. Si un proceso

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

TÉCNICAS DE FRAGMENTACIÓN, REPLICA Y ASIGNACIÓN DE DATOS PARA EL


DISEÑO DE LAS BASES DE DATOS DISTRIBUIDAS.

Cuando un fragmento se almacena en más de un nodo se dice que está replicado. La


réplica de datos resulta útil para mejorar la disponibilidad de los datos dado el gran
número de usuarios que puede tener una base de datos distribuida. La des - ventaja
de la réplica de datos es que puede reducir la rapidez de las operaciones de
actualización. Una sola operación de actualización se deberá ejecutar con todas las
copias del dato a fin de mantener la consistencia de la base de datos. El número de
copias de cada fragmento puede ir desde uno hasta el número total de nodos en el
sistema distribuido. Determinar en qué nodos se debe replicar cada fragmento de la
base de datos se denomina diseñar un esquema de réplica. (Aramburu, 2012, p.102).
Bases de datos avanzadas.

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 horizontal. La tabla T se divide en subconjuntos, T1, T2, ...Tn. Cada


tupla de T debe pertenecer al menos a uno de los fragmentos para poder reconstruir la
tabla original a partir de los fragmentos. Los fragmentos se definen a través de una
80
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.
operación de selección y su reconstrucción se realizará en base a una operación de
unión de los fragmentos componentes.

Fragmentación vertical. La fragmentación vertical, en cambio, se basa en los


atributos de la relación para efectuar la división o fragmentación. Es la subdivisión de
atributos en grupos. Los fragmentos se obtienen proyectando la relación global sobre
cada grupo. La fragmentación es correcta si cada atributo se mapea en al menos un
atributo del fragmento.

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.

Actividad: Desarrollar ejemplos para cada una de las fragmentaciones:


Fragmentación Ejemplo
Horizontal

Vertical

Mixta

Replicación de datos. La replicación de datos se refiere al almacenamiento de copias


de datos en sitios múltiples servidos por una red de computadoras. Pueden guardarse
copias de fragmento para satisfacer requerimientos de información específicos.
Base de datos totalmente replicada, guarda varias copias de cada fragmento de la
base de datos en varios sitios. No es práctica debido la cantidad de carga impuesta al
sistema.
Base de datos parcialmente replicada, guarda múltiples copias de algunos
fragmentos de la base de datos en múltiples sitios. Se tiene un buen manejo. Base de
datos no replicada, guarda cada fragmento de base de datos en un solo sitio.

PROCESAMIENTO DISTRIBUIDO DE CONSULTAS.

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 se encuentra en múltiples servidores y distribuye


a un número determinado de nodos tenemos:
• El servidor recibe una petición de un nodo.
• El servidor es atacado por el acceso concurrente a la base de datos cargada
localmente.
• El servidor muestra un resultado y le da un hilo a cada una de las maquinas
nodo de la red local.

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.

RECUPERACIÓN EN SISTEMAS DISTRIBUIDOS.


En los entornos distribuidos de datos podemos encontrar lo siguiente:
Fallo de los nodos. Cuando un nodo falla, el sistema deberá continuar trabajando con
los nodos que aún funcionan. Si el nodo a recuperar es una base de datos local, se

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

MES FECHA DE ENVIO DE FECHA DE RECEPCIÓN


LA TAREA DE LA TAREA

Agosto

Septiembre

Octubre

Noviembre

Diciembre

84
ELABORADO: Ing. Luis Alfonso Núñez Freire, MBA.

También podría gustarte