Informe Final MySQL

Autores: • Andy Hirvyn Rucoba Reategui. • Jorge Sleyther Morales Mundaca. • Edinson Villalobos Ramos. • Clark Erick Cruz

Views 65 Downloads 1 File size 6MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Autores: • Andy Hirvyn Rucoba Reategui. • Jorge Sleyther Morales Mundaca. • Edinson Villalobos Ramos. • Clark Erick Cruz Arvildo

2

Administración de Base de Datos con MySQL

INTRODUCCIÓN

Las bases de datos requieren de un sistema gestor que permita el almacenamiento, modificación y extracción de datos y puede también actualizar los registros modificando, añadiendo, analizando o borrando datos, la mayoría también como MySQL generan informes de datos e implementan un lenguaje de consulta (SQL en inglés). Otra función del SGBD (Sistema gestor de bases de datos) es el de mantener integridad y la seguridad de los datos. Para la seguridad el sistema administra los permisos de acceso a los datos mediante usuarios con credenciales y distintos tipos de usuarios. La integridad, para que sea de dominio se comprueba la validez de las columnas, para que sea de la entidad la clave primaria tendrá un valor único para cada fila de la tabla, y para que sea referencial asegura la integridad entre las llaves foráneas y primarias (Wikilibros, 2017). MySQL es un sistema de gestión de base de datos relacional (RDBMS) de código abierto, basado en lenguaje de consulta estructurado (SQL). MySQL se ejecuta en prácticamente todas las plataformas, incluyendo Linux, UNIX y Windows. A pesar de que se puede utilizar en una amplia gama de aplicaciones, MySQL se asocia más con las aplicaciones basadas en la web y la publicación en línea y es un componente importante de una pila empresarial de código abierto llamado LAMP. LAMP es una plataforma de desarrollo web que utiliza Linux como sistema operativo, Apache como servidor web, MySQL como sistema de gestión de base de datos relacional y PHP como lenguaje de programación orientado a objetos (a veces, Perl o Python se utiliza en lugar de PHP), (Margaret Rouse, 2019).

3

Administración de Base de Datos con MySQL

ÍNDICE GENERAL

CAPITULO I Evolución Historica del Gestor de Base de Datos ............................................................................... 4 CAPITULO II Conociendo el Gestor de Base de Datos ........................................................................................... 13 CAPITULO III Diccionario de Datos ......................................................................................................................... 46 CAPITULO IV Integridad en Base de Datos .............................................................................................................. 62 CAPITULO V Seguridad en Base de Datos .............................................................................................................. 70 CAPITULO VI Migración de Datos ........................................................................................................................... 82 CAPITULO VII Rendimiento en Base de Datos.......................................................................................................... 97 CAPITULO VIII Encriptación o Cifrado de Datos ..................................................................................................... 104 CAPITULO IX Disponibilidad en Base de Datos .................................................................................................... 112

4

Administración de Base de Datos con MySQL

CAPITULO I Evolución Histórica del Gestor de Base de Datos

5

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO I ..................................................................................................................................... 4 EVOLUCIÓN HISTÓRICA DEL GESTOR MySQL ............................................................... 6 1.1.

Como, Cuando y Donde se Creo ...................................................................................... 6

1.2.

Hechos Trascendentales .................................................................................................... 7

1.3.

Evolución de Versiones y Ediciones ................................................................................. 7

1.3.1 MySQL Enterprise Edition ............................................................................................. 7 1.3.2. MySQL Standard Edition .............................................................................................. 8 1.3.3. MySQL Classic Edition .................................................................................................. 8 1.3.4. MySQL Cluster CGE ...................................................................................................... 8 1.3.5.

MySQL Embedded (OEM/ISV) ............................................................................... 9

1.3.6.

MySQL Community Edition .................................................................................. 10

1.4.

Mejoras hasta la fecha (Ultima Versión) ....................................................................... 10

Referencias Bibliográficas .............................................................................................................. 12

6

Administración de Base de Datos con MySQL

EVOLUCIÓN HISTÓRICA DEL GESTOR MySQL 1.1. Como, Cuando y Donde se Creo Según página MySQL (2019), Comenzamos con la intención de utilizar el mSQL sistema de base de datos para conectarnos a nuestras tablas utilizando nuestras propias rutinas rápidas de bajo nivel (ISAM). Sin embargo, después de algunas pruebas, llegamos a la conclusión de que mSQL no era lo suficientemente rápido o lo suficientemente flexible para nuestras necesidades. Esto dio como resultado una nueva interfaz SQL para nuestra base de datos, pero con casi la misma interfaz API que mSQL. Esta API fue diseñada para permitir que el código de terceros que fue escrito para su uso mSQL sea portado fácilmente para su uso con MySQL. MySQL lleva el nombre de la hija del cofundador Monty Widenius, My. El nombre de la MySQL Dolphin (nuestro logo) es “Sakila,” que fue elegido de una gran lista de nombres sugeridos por los usuarios en “Nombre del delfín” concurso. El nombre ganador fue presentado por Ambrose Twebaze, un desarrollador de software de código abierto de Swazilandia, África. Según Ambrose, el nombre femenino Sakila tiene sus raíces en SiSwati, el idioma local de Swazilandia. Sakila es también el nombre de una ciudad en Arusha, Tanzania, cerca del país de origen de Ambrose, Uganda. Según la página oficial de Wikipedia (2019), el gestor MySQL fue creado por una compañía sueca MySQL AB en 1995. Los desarrolladores de la plataforma fueron Michael Widenius David Axmark y Allan Larsson. MySQL es un sistema gestor de base de datos el cual sigue el modelo relacional de CODD, además de utilizar SQL (Structured Query Language). Según la página oficial de Ecured (2019), Edgar Frank Codd fue un científico informático inglés, conocido por sus aportes a la teoría de bases de datos relacionales, considerado el modelo más usado hoy en día y para muchas personas, el único que conocen. Según la página oficial de Logicalis (2015), el Modelo relacional es, actualmente, el modelo más utilizado en la gestión de datos dinámicos (o lo que es lo mismo, aquellos datos sujetos a modificaciones y actualizaciones). Sin embargo, la gestión de bases de datos relacionales entraña una espesa red de conceptos que a veces, para los profanos, pueden resultar algo difíciles de manejar. Según la página oficial de Wikipedia (2019), el gestor MySQL, al contrario de proyectos como Apache, donde el software es desarrollado por una comunidad pública y los derechos de autor del código están en poder del autor individual, MySQL es patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de doble licenciamiento anteriormente mencionado. La base de datos se distribuye en varias versiones, una Community, distribuida bajo la Licencia pública general de GNU, versión 2, y varias versiones Enterprise, para aquellas empresas que quieran incorporarlo en productos privativos. Las versiones Enterprise incluyen productos o servicios adicionales tales como herramientas de monitorización y asistencia técnica oficial. En 2009 se creó un fork denominado MariaDB por algunos desarrolladores (incluido algunos desarrolladores originales de MySQL) descontentos con el modelo de desarrollo y el hecho de que una misma empresa controle a la vez los productos MySQL y Oracle Database.

7

Administración de Base de Datos con MySQL

1.2. Hechos Trascendentales Según la página oficial de Wikipedia (2019), La Open Source Initiative (OSI, en español Iniciativa para el Código Abierto) es una organización dedicada a la promoción del código abierto. Fue fundada en febrero de 1998 por Bruce Perens y Eric S. Raymond. Según la página Universia Perú (2015), redacta que, tras numerosos estudios, la OSI establece que para poder catalogar a un software como Open Source debe responder a los siguientes parámetros: distribución libre, código fuente, trabajos derivados, integridad del autor, no restringir otros programas, así como también disponer de licencias neutras en lo que refiere a tecnología. Como sucede con toda innovación, el software libre generó posiciones a favor y en contra. Los más conservadores consideran que esta clase de software conduce al anarquismo digital; por el contrario, quienes lo defienden lo ven como una gran posibilidad de negocio para la industria de los softwares. A pesar de las posturas en contra, el Open Source ha recibido el respaldo de muchos negocios tradicionales, por lo que se espera que en los próximos años su crecimiento continué en ascenso, al punto de formar parte de la vida cotidiana de todos los usuarios. Asimismo, uno de los logros más reconocidos en esta área ha sido el sistema operacional Linux. Según la página de Wikipedia (2019), Sun Microsystems fue una empresa informática que se dedicaba a vender estaciones de trabajo, servidores, componentes informáticos, software (sistemas operativos) y servicios informáticos. En febrero 2008, Sun compró MySQL AB, un sistema de gestión de base de datos. Según Wikipedia (2019), Oracle fue adquirida en el año 2010 por Oracle Corporation, y formó parte de los iconos de Silicon Valley, como fabricante de semiconductores y software. Los ingenieros Larry Ellison, Ed Oates y Bob Miner fundan en 1977 una empresa de consultoría llamada Software Development Laboratories (SDL), y tiempo después obtienen un contrato con la CIA para diseñar un sistema especial de bases de datos con código clave "Oracle". El 20 de abril se anuncia la adquisición de Sun Microsystems, en una operación que ronda los 7.400 millones de dólares y que amplía enormemente la cartera de servicios de Oracle. 1.3. Evolución de Versiones y Ediciones Versiones Según Laura gittins (2010). La compañía de software de MySQL AB creó la versión original el 23 de mayo 1995. En 1999, se lanzó la versión 3.23.0, la primera versión importante. En octubre de 2001, MySQL AB lanzó la versión 4.0.0 y, en abril de 2003, la versión 4.1.0. En diciembre de 2003, se liberó la versión 5.0.0, y la versión 5.5 fue lanzada en diciembre de 2009. Y la última versión, 8.0.15 se lanzó el 1 de febrero de 2019. Ediciones 1.3.1 MySQL Enterprise Edition Según la página oficial de MySQL (2019), el gestor MySQL Enterprise Edition incluye el conjunto más completo de funciones avanzadas, herramientas de administración y soporte técnico para lograr los niveles más altos de escalabilidad, seguridad, confiabilidad y tiempo de actividad de MySQL. Reduce el riesgo, el costo y la complejidad en el desarrollo, implementación y administración de aplicaciones MySQL críticas para el negocio.

8

Administración de Base de Datos con MySQL

1.3.2. MySQL Standard Edition Según la página oficial MySQL (2019), el gestor MySQL Standard Edition le permite ofrecer aplicaciones OLTP (procesamiento de transacciones en línea) escalables y de alto rendimiento. Proporciona la facilidad de uso que ha hecho famoso a MySQL junto con el rendimiento y la fiabilidad de la fuerza industrial. MySQL Standard Edition incluye InnoDB, por lo que es una base de datos totalmente integrada, segura para transacciones y compatible con ACID. Además, MySQL Replication le permite ofrecer aplicaciones escalables y de alto rendimiento. ✓ TCO más bajo: MySQL le permite minimizar el TCO de su base de datos. ✓ Fiabilidad, rendimiento y facilidad de uso: MySQL ha demostrado ser la base de datos de código abierto más popular del mundo. ✓ Desarrollo, diseño y administración de bases de datos: MySQL Workbench proporciona un entorno integrado de desarrollo, diseño y administración para que los desarrolladores y los DBA sean más productivos. 1.3.3. MySQL Classic Edition Según página oficial de MySQL (2019). MySQL Classic Edition es la base de datos integrada ideal para ISV, OEM y VAR que desarrollan aplicaciones de lectura intensiva utilizando el motor de almacenamiento MyISAM. Está probado como una base de datos de alto rendimiento y cero administraciones. ✓ TCO más bajo: MySQL le permite minimizar el TCO de su base de datos. ✓ Facilidad de uso: MySQL es famoso por "15 minutos para el éxito" desde la descarga hasta la instalación. ✓ Baja administración: MySQL es fácil de administrar, lo que permite que los DBA administren más servidores. Admite más de 20 plataformas y sistemas operativos, incluidos Linux, Unix, Mac y Windows, para que tenga la máxima flexibilidad en las opciones de desarrollo e implementación. MySQL Classic Edition solo está disponible para ISV, OEM y VAR para licenciar como una base de datos integrada. Cuando necesita capacidades adicionales, es fácil actualizar a MySQL Standard Edition, MySQL Enterprise Edition o MySQL Cluster Carrier Grade Edition. 1.3.4. MySQL Cluster CGE Según MySQL.com (2019), el gestor MySQL Cluster es la base de datos distribuida que combina escalabilidad lineal y alta disponibilidad. Proporciona acceso en memoria en tiempo real con consistencia transaccional en conjuntos de datos particionados y distribuidos. Está diseñado para aplicaciones de misión crítica. MySQL Cluster tiene replicación entre clústeres en múltiples sitios geográficos incorporados. Una arquitectura de nada compartido con conciencia de localidad de datos lo convierten en la opción perfecta para ejecutarse en hardware básico y en infraestructura de nube distribuida globalmente. MySQL Cluster le brinda los siguientes beneficios:

9

Administración de Base de Datos con MySQL

MySQL Cluster 7.6 se trata de soportar el último hardware, escalando a sistemas aún más grandes y fáciles de mantener. ✓ Recuperación mejorada: reinicios más rápidos, puntos de control más rápidos y menos espacio en disco para construir sistemas más grandes. ✓ Carga de datos mejorada: herramienta de importación para cargar datos en el clúster a la máxima velocidad paralela. ✓ Soporte SQL mejorado: incluso más procesamiento de consultas paralelas, lo que hace que algunas uniones sean hasta un 50% más rápidas. ✓ Comunicación mejorada: los nodos locales se conectan a través de la memoria compartida para una comunicación más rápida. ✓ Paralelismo mejorado: para operaciones más rápidas y más equilibradas, haciendo un mejor uso de los recursos de hardware. 1.3.5. MySQL Embedded (OEM/ISV) Según página oficial de MySQL (2019), más de 2000 ISV, OEM y VAR confían en MySQL como la base de datos integrada de sus productos para hacer que sus aplicaciones, hardware y dispositivos sean más competitivos, llevarlos al mercado más rápido y reducir sus COG (costo de los bienes vendidos), Estos clientes de ISV y OEM eligen MySQL por su: ✓ Bajo costo, hasta un 90% menos que Microsoft SQL Server con características que aseguran que los COGS permanezcan bajos durante el ciclo de vida de una aplicación. Los costos más bajos de la base de datos permiten a los proveedores ofrecer sus productos a una fracción del costo de las soluciones de la competencia y la flexibilidad para atraer a clientes más sensibles al precio. ✓ Flexibilidad multiplataforma con soporte para más de 20 plataformas que brindan la libertad de enviar productos en múltiples combinaciones de hardware y sistema operativo y en más mercados. ✓ Alto rendimiento, confiabilidad y escalabilidad para cumplir con los requisitos de las aplicaciones más exigentes, como Telco y gestión de redes. La inclusión de un RDBMS con todas las funciones ayuda a que los productos sean más competitivos inicialmente y con el tiempo a medida que las necesidades de datos de los clientes aumentan inevitablemente. ✓ Facilidad de uso con instalación, configuración e integración rápidas para que los desarrolladores puedan enfocarse en el desarrollo de aplicaciones, reduciendo costos y tiempo de comercialización. ✓ Administración cero, eliminando la necesidad de que los clientes contraten un DBA dedicado o gasten cualquier ciclo en la administración de la base de datos, y reducen o eliminan las costosas llamadas de soporte relacionadas con la base de datos.

10

Administración de Base de Datos con MySQL

1.3.6. MySQL Community Edition Según página oficial de MySQL (2019), el gestor MySQL Community Edition es una versión de descarga gratuita de la base de datos de código abierto más popular del mundo que cuenta con el respaldo de una comunidad activa de desarrolladores y entusiastas de código abierto. MySQL Community Edition incluye: ✓ SQL y NoSQL para desarrollar aplicaciones relacionales y NoSQL. ✓ MySQL Document Store que incluye el protocolo X, XDev API y MySQL Shell. ✓ Diccionario de datos transaccionales con declaraciones DDL atómicas para una confiabilidad mejorada. ✓ Arquitectura de motor de almacenamiento enchufable (InnoDB, NDB, MyISAM, etc.). ✓ Replicación MySQL para mejorar el rendimiento y la escalabilidad de la aplicación. ✓ MySQL Group Replication para replicar datos mientras proporciona tolerancia a fallas, failover automatizado y elasticidad. ✓ MySQL InnoDB Cluster para ofrecer una solución integrada, nativa y de alta disponibilidad para MySQL. ✓ MySQL Router para un enrutamiento transparente entre su aplicación y cualquier servidor MySQL de fondo. ✓ Particionamiento MySQL para mejorar el rendimiento y la gestión de grandes aplicaciones de bases de datos. ✓ Procedimientos almacenados para mejorar la productividad del desarrollador. ✓ Desencadenantes para aplicar reglas comerciales complejas a nivel de base de datos. ✓ Vistas para garantizar que la información confidencial no se vea comprometida. ✓ Esquema de rendimiento para el monitoreo a nivel de usuario / aplicación del consumo de recursos. ✓ Esquema de información para facilitar el acceso a los metadatos. ✓ Conectores MySQL (ODBC, JDBC, .NET, etc.) para crear aplicaciones en varios idiomas. ✓ MySQL Workbench para modelado visual, desarrollo y administración de SQL. Disponible en más de 20 plataformas y sistemas operativos, incluidos Linux, Unix, Mac y Windows. 1.4. Mejoras hasta la fecha (Ultima Versión) Que hay de nuevo en MySQL 8.0.18 Según la página oficial de MYSQL (2019), nos indica las nuevas características agregadas en MySQL 8.0 ✓ Diccionario de datos. MySQL ahora incorpora un diccionario de datos transaccionales que almacena información sobre objetos de bases de datos. En versiones anteriores de

11

Administración de Base de Datos con MySQL





✓ ✓



MySQL, los datos del diccionario se almacenaban en archivos de metadatos y tablas no transaccionales. Sentencias de definición de datos atómicos (Atomic DDL). Una declaración DDL atómica combina las actualizaciones del diccionario de datos, las operaciones del motor de almacenamiento y las escrituras de registros binarios asociados con una operación DDL en una única transacción atómica. Procedimiento de actualización. Anteriormente, después de la instalación de una nueva versión de MySQL, el servidor MySQL actualiza automáticamente las tablas del diccionario de datos en el siguiente inicio, después de lo cual se espera que el DBA invoque mysql_upgrade manualmente para actualizar las tablas del sistema en el MySQL esquema, así como los objetos en otros esquemas como el sysesquema y los esquemas de usuario. Seguridad y gestión de cuentas. Estas mejoras se agregaron para mejorar la seguridad y permitir una mayor flexibilidad de DBA en la administración de cuentas. Administración de recursos. MySQL ahora admite la creación y administración de grupos de recursos, y permite asignar hilos que se ejecutan dentro del servidor a grupos particulares para que los hilos se ejecuten de acuerdo con los recursos disponibles para el grupo. Los atributos de grupo permiten el control sobre sus recursos, para habilitar o restringir el consumo de recursos por hilos en el grupo. Gestión de cifrado de tablas. El cifrado de tablas ahora se puede administrar globalmente definiendo y aplicando los valores predeterminados de cifrado. El default_table_encryption variable define un valor predeterminado de cifrado para los esquemas recién creados y el espacio de tabla general.

A partir de MySQL 8.0.16, el servidor realiza las tareas previamente manejadas por mysql_upgrade. Después de la instalación de una nueva versión de MySQL, el servidor ahora realiza automáticamente todas las tareas de actualización necesarias en el próximo inicio y no depende del DBA que invoca mysql_upgrade. Además, el servidor actualiza el contenido de las tablas de ayuda (algo que mysql_upgrade no hizo). Una nueva --upgrade opción de servidor proporciona control sobre cómo el servidor realiza el diccionario de datos automático y las operaciones de actualización del servidor.

12

Administración de Base de Datos con MySQL

Referencias Bibliográficas Wikilibros (2017), Introducción gestor MySQL, recuperado (22 ago. 2019), https://es.wikibooks.org/wiki/MySQL/Introducci%C3%B3n/Clasificaci%C3%B3n_de_base s_de_datos Searchdatacenter (2019), Introducción gestor MySQL, recuperado (22 ago. 2019), https://searchdatacenter.techtarget.com/es/definicion/MySQL Wikipedia (2019), Evolución histórica del gestor de base de datos, recuperado (22 ago. 2019), https://es.wikipedia.org/wiki/MySQL, https://es.wikipedia.org/wiki/Open_Source_Initiative, https://es.wikipedia.org/wiki/Sun_Microsystems Ecured (2019), Evolución histórica del gestor de base de datos, recuperado (22 ago. 2019), https://www.ecured.cu/Edgar_Frank_Codd, https://blog.es.logicalis.com/analytics/conceptos-basicos-del-modelo-relacional-en-lagestion-de-bases-de-datos, https://noticias.universia.edu.pe/en-portada/noticia/2014/04/02/1093085/open-source-quees-surge.html. MySQL.com (2019), MySQL Evolución de versiones y ediciones, recuperado (22 ago. 2019), https://www.mysql.com/products/enterprise/, https://www.mysql.com/products/standard/, https://www.mysql.com/products/classic/, https://www.mysql.com/products/cluster/, https://www.mysql.com/oem/, https://www.mysql.com/products/community/

13

Administración de Base de Datos con MySQL

CAPITULO II Conociendo el Gestor de Base de Datos

14

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO II................................................................................................................................ 133 CONOCIENDO EL GESTOR DE BASE DE DATOS .............................................................. 155 2.1. Características Propias del Gestor ................................................................................... 155 2.1.1. Partes internas y portabilidad .................................................................................... 155 2.1.2. Tipo de datos ................................................................................................................ 156 2.1.3. Declaraciones y funciones ............................................................................................. 16 2.1.4. Seguridad ....................................................................................................................... 16 2.1.5. Escabilidad y limites...................................................................................................... 16 2.1.6. Conectividad ................................................................................................................ 177 2.1.7. Localización ................................................................................................................... 17 2.1.8. Clientes y herramientas ................................................................................................ 17 2.2. Diferencias Frente a otros Gestores .................................................................................. 188 2.3. Demostración del Gestor y sus Herramientas Básicas (Creación de base de datos, Tablas, Vistas, etc.) en modo Gráfico y en Comandos SQL .................................................. 199 2.3.1. Proceso de Instalación de MySQL (Versión 8.0.18) ................................................. 199 2.3.1.1. Requerimientos y prerrequisitos ......................................................................... 199 2.3.1.2. Descarga e instalación de MySQL ........................................................................ 19 2.3.2. Creación de base de datos ........................................................................................... 377 2.3.3. Creación de tablas ......................................................................................................... 40 2.3.4. Creación de vistas .......................................................................................................... 42 Referencias Bibliográficas ............................................................................................................ 455

15

Administración de Base de Datos con MySQL

CONOCIENDO EL GESTOR DE BASE DE DATOS 2.1. Características Propias del Gestor Según página MySQL (2019), en esta sección describe algunas de las características importantes del software de base de datos MySQL. En la mayoría de los aspectos, la hoja de ruta se aplica a todas las versiones de MySQL. 2.1.1. Partes internas y portabilidad ✓ Escrito en C y C ++. ✓ Probado con una amplia gama de compiladores diferentes. ✓ Funciona en muchas plataformas diferentes. ✓ Para la portabilidad, utiliza CMake en MySQL 5.5 y superior. Las series anteriores usan GNU Automake, Autoconf y Libtool. ✓ Probado con Purify (un detector de fugas de memoria comercial), así como con Valgrind, una herramienta GPL ✓ Utiliza un diseño de servidor de varias capas con módulos independientes. ✓ Diseñado para ser completamente multiproceso utilizando hilos de kernel, para usar fácilmente múltiples CPU si están disponibles. ✓ Proporciona motores de almacenamiento transaccional y no transaccional. ✓ Utiliza tablas de disco B-tree muy rápidas (MyISAM) con compresión de índice. ✓ Diseñado para que sea relativamente fácil agregar otros motores de almacenamiento. Esto es útil si desea proporcionar una interfaz SQL para una base de datos interna. ✓ Utiliza un sistema de asignación de memoria basado en subprocesos muy rápido. ✓ Ejecuta uniones muy rápidas utilizando una unión de bucle anidado optimizada. ✓ Implementa tablas hash en memoria, que se utilizan como tablas temporales. ✓ Implementa funciones de SQL utilizando una biblioteca de clases altamente optimizada que debería ser lo más rápida posible. Por lo general, no hay asignación de memoria después de la inicialización de la consulta. ✓ Proporciona el servidor como un programa separado para su uso en un entorno de red cliente / servidor, y como una biblioteca que puede integrarse (vincularse) en aplicaciones independientes. Dichas aplicaciones se pueden usar de forma aislada o en entornos donde no hay red disponible. 2.1.2. Tipo de datos Muchos tipos de datos: firmados / enteros sin signo de 1, 2, 3, 4, y 8 bytes de largo, FLOAT, DOUBLE, CHAR, VARCHAR, BINARY, VARBINARY, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM, y OpenGIS tipos espaciales. Según página MySQL (2019), el gestor admite varios tipos de datos SQL en varias categorías: tipos numéricos, tipos de fecha y hora, tipos de cadenas (caracteres y bytes), tipos espaciales y el JSON tipo de datos. Este capítulo proporciona una descripción general de estos tipos de datos, una descripción más detallada de las propiedades de los tipos en cada categoría y un resumen de los requisitos de almacenamiento de tipos de datos. Las descripciones de tipo de datos utilizan estas convenciones: ✓ Para tipos enteros, M indica el ancho máximo de visualización. Para los tipos de punto flotante y de punto fijo, M es el número total de dígitos que se pueden almacenar (la precisión). Para los tipos de cadena, M es la longitud máxima. El valor máximo permitido de M depende del tipo de datos. ✓ D se aplica a los tipos de coma flotante y de punto fijo e indica el número de dígitos que siguen al punto decimal (la escala). El valor máximo posible es 30, pero no debe ser mayor que M−2.

16

Administración de Base de Datos con MySQL

✓ FSP se aplica a las TIME, DATETIME y TIMESTAMP los tipos y representa la precisión de fracciones de segundo; es decir, el número de dígitos que siguen al punto decimal para partes fraccionarias de segundos. El fsp valor, si se da, debe estar en el rango de 0 a 6. Un valor de 0 significa que no hay una parte fraccional. Si se omite, la precisión predeterminada es 0. (Esto difiere del valor predeterminado estándar de SQL de 6, por compatibilidad con versiones anteriores de MySQL). ✓ Los corchetes ([y]) indican partes opcionales de las definiciones de tipo. 2.1.3. Declaraciones y funciones ✓ Soporte completo de operador y función en la SELECT lista y WHERE cláusula de consultas. Por ejemplo:

Fuente: MySQL.com ✓ Soporte completo para SQL GROUP BY y ORDER BY cláusulas. El apoyo a las funciones de grupo (COUNT (), AVG (), STD (), SUM (), MAX (), MIN (), y GROUP_CONCAT ()). ✓ Soporte para LEFT OUTER JOIN y RIGHT OUTER JOIN con sintaxis estándar SQL y ODBC. ✓ Soporte para alias en tablas y columnas según lo requiera el SQL estándar. ✓ Soporte para DELETE, INSERT, REPLACE, y UPDATE para devolver el número de filas que se han cambiado (afectados), o para devolver el número de filas coincidentes en lugar mediante el establecimiento de una bandera cuando se conecta al servidor. ✓ Soporte para SHOW declaraciones específicas de MySQL que recuperan información sobre bases de datos, motores de almacenamiento, tablas e índices. Soporte para la INFORMATION_SCHEMA base de datos, implementado de acuerdo con SQL estándar. ✓ Una EXPLAIN declaración para mostrar cómo el optimizador resuelve una consulta. ✓ Independencia de los nombres de funciones de los nombres de tabla o columna. Por ejemplo, ABS es un nombre de columna válido. La única restricción es que, para una llamada de función, no se permiten espacios entre el nombre de la función y el " (" que le sigue. ✓ Puede hacer referencia a tablas de diferentes bases de datos en la misma declaración. 2.1.4. Seguridad ✓ Un sistema de privilegios y contraseñas que es muy flexible y seguro, y que permite la verificación basada en el host. ✓ Seguridad de contraseña mediante el cifrado de todo el tráfico de contraseña cuando se conecta a un servidor. 2.1.5. Escabilidad y limites ✓ Soporte para grandes bases de datos. Usamos MySQL Server con bases de datos que contienen 50 millones de registros. También conocemos usuarios que usan MySQL Server con 200,000 tablas y alrededor de 5,000,000,000 de filas. ✓ Soporte para hasta 64 índices por tabla. Cada índice puede constar de 1 a 16 columnas o partes de columnas. El ancho máximo del índice para las InnoDB tablas es de 767 bytes o 3072 bytes.

17

Administración de Base de Datos con MySQL

✓ El ancho máximo del índice para las MyISAM tablas es de 1000 bytes. Un índice puede usar un prefijo de una columna para CHAR, VARCHAR, BLOB, o TEXT tipos de columna.

2.1.6. Conectividad Los clientes pueden conectarse al servidor MySQL usando varios protocolos: ✓ Los clientes pueden conectarse mediante sockets TCP / IP en cualquier plataforma. ✓ En los sistemas Windows, los clientes pueden conectarse utilizando canalizaciones con nombre si el servidor se inicia con la named_pipevariable del sistema habilitada. Los servidores de Windows también admiten conexiones de memoria compartida si se inicia con la shared_memoryvariable del sistema habilitada. Los clientes pueden conectarse a través de la memoria compartida utilizando la --protocol=memoryopción ✓ En los sistemas Unix, los clientes pueden conectarse utilizando archivos de socket de dominio Unix. ✓ Los programas cliente MySQL pueden escribirse en muchos idiomas. Una biblioteca de clientes escrita en C está disponible para clientes escritos en C o C ++, o para cualquier lenguaje que proporcione enlaces en C. ✓ Las API para C, C ++, Eiffel, Java, Perl, PHP, Python, Ruby y Tcl están disponibles, lo que permite que los clientes MySQL se escriban en muchos idiomas. ✓ MySQL Connector / NET permite a los desarrolladores crear fácilmente aplicaciones .NET que requieren conectividad de datos segura y de alto rendimiento con MySQL. Implementa las interfaces ADO.NET necesarias y se integra en las herramientas compatibles con ADO.NET. Los desarrolladores pueden crear aplicaciones utilizando su elección de lenguajes .NET. MySQL Connector / NET es un controlador ADO.NET totalmente administrado escrito en C # 100% puro. 2.1.7. Localización ✓ El servidor puede proporcionar mensajes de error a los clientes en muchos idiomas ✓ Soporte completo para distintos conjuntos de caracteres, incluyendo latin1(CP1252), german, big5, ujis, varios conjuntos de caracteres Unicode, y mucho más. Por ejemplo, los caracteres escandinavos " å”, " ä" y " ö" están permitidos en los nombres de tablas y columnas. ✓ Todos los datos se guardan en el juego de caracteres elegido. ✓ La clasificación y las comparaciones se realizan de acuerdo con el conjunto de caracteres y la clasificación predeterminados. es posible cambiar esto cuando se inicia el servidor MySQL. 2.1.8. Clientes y herramientas ✓ MySQL incluye varios clientes y programas de utilidad. Estos incluyen tanto programas de línea de comandos como mysqldump y mysqladmin, como programas gráficos como MySQL Workbench. ✓ MySQL Server tiene soporte incorporado para sentencias SQL para verificar, optimizar y reparar tablas. Estas declaraciones están disponibles desde la línea de comandos a través del cliente mysqlcheck. MySQL también incluye myisamchk, una utilidad de línea de comandos muy rápida para realizar estas operaciones en MyISAM tablas. Consulte el Capítulo 4, Programas MySQL. ✓ Los programas MySQL se pueden invocar con la opción: “--help u –?”, para obtener asistencia en línea.

Es el más usado al nivel mundial.

Transacciones.

Multiplataforma, aunque pertenezca a Microsoft.

Transacciones, disparadores y afirmaciones.

Nuevos motores de almacenamiento más eficientes. Aria y Existen algunas mejoras al código XtraDB vienen a reemplazar a MyISAM e InnoDB DBUG para hacer su ejecución más respectivamente. rápida cuando se compila, pero no se usa. Estadísticas para índices y tablas que pueden ayudar para la optimización de la base de datos. LA TABLA DE CHEQUEO DE REDUNDANCIA es más rápida.

No es intuitivo

La migración de un sistema muy testado y fiable como es MySQL. Aunque se garantiza una absoluta compatibilidad, y un gran sistema estable y potente, hay que valorar si a día de hoy merece pasar todo mi sistema a MariaDB.

ventajas

Características

DB2

Desventajas

Se tiene que ver con las aplicaciones que se tienen Tablas de resumen Tablas replicadas desarrolladas y las que se van a implementar.

MARIA DB

Al igual que otros motores de bases de datos de alto rendimiento, IBM Db2 cuenta con todas las funciones capaces de manejar grandes cantidades de datos y servir simultáneamente a muchos usuarios.

Gran volumen de datos.

Requiera hardware

POSTGRESQL

En sistemas grandes la base más usada es DB2 ya que corre Permite agilizar el tiempo de respuestas de esta consulta en diferentes plataformas operativas, pero en realidad, en la mayoría de los casos la decisión para optar por Recuperación utilizando accesos de sólo índices. un software de estas características es corporativa. Predicados correlacionados.

Código abierto y gratuito, multiplataforma.

Respuesta lenta.

ORACLE

Tiene la extensión POSTGIS para base de datos espaciales

Base de datos de gran tamaño

Dispone de su propio lenguaje PL/SQL, soporta

Pertenece a Oracle licencia GLP/licencia comercial

GESTORES

Elevado coste de información, tratado por trabajadores Multiplataforma. formados por Oracle Es intuitiva y fácil de usar

Precio muy elevado

No tiene soporte capacidad limitada

MYSQL

18 Administración de Base de Datos con MySQL

2.2. Diferencias Frente a otros Gestores Según cursosgis.com (2017), a la hora de la realización de un proyecto web, tenemos que tener muy claro que Sistema Gestor de Base de Datos elegir para optimizar dicho proyecto. A continuación, exponemos una comparativa con los distintos SGBD. DIF ERE NCI AS

19

Administración de Base de Datos con MySQL

2.3. Demostración del Gestor y sus Herramientas Básicas (Creación de base de datos, Tablas, Vistas, etc.) en modo Gráfico y en Comandos SQL 2.3.1. Proceso de Instalación de MySQL (Versión 8.0.18) 2.3.1.1. Requerimientos y prerrequisitos Características mínimas ✓ Procesador con 2 núcleos ✓ 2 GB de RAM ✓ Subsistema de E/S de disco aplicable a una base de datos de escritura intensiva Características recomendadas ✓ Procesador con 4 núcleos ✓ 8 GB de RAM o mas ✓ Arreglo de disco en RAID 10 Prerrequisitos ✓ Tener instalado .Net framework 4.5.2

2.3.1.2. Descarga e instalación de MySQL 1. Visitar el sitio ‘https://www.mysql.com’ y hacer clic en ‘DOWNLOADS’

Figura 1. Sitio de descarga de MySQL.com

20

Administración de Base de Datos con MySQL

2. Desplazar la página hacia abajo y hacer clic en MySQL Community (GPL) Downloads»

Figura 2. Opción para descargar MySQL Community 3. En la página MySQL Community Downloads hacer clic en MySQL Installer for Windows

Figura 3. Opciones de descarga de MySQL Community

21

Administración de Base de Datos con MySQL

4. En el siguiente paso seleccionamos el paquete de instalación de MySQL que deseemos y damos e Download.

Figura 4. Descarga de paquetes de instalación de MySQL 5. Una vez completada la descarga se procederá hacer la instalación de MySQL Community Instalación del servidor MySQL y la herramienta visual de diseño de bases de datos MySQL Workbench 1. Ubicamos el paquete de instalación de MySQL, que por defecto debe estar ubicada en la carpeta Descargas de nuestro equipo. A continuación, damos en Instalar.

Figura 5. Ubicación del paquete de instalación en el equipo.

22

Administración de Base de Datos con MySQL

2. Ejecutar el archivo ‘mysql-installer-web-community-8.0.msi’, en el formulario que se mostrara en pantalla marcar la casilla ‘I accept the license terms’ y hacer clic en ‘Next’

Figura 6. Términos y condiciones de instalación de MySQL 3. Seleccionamos la opción Custom, luego damos clic en Next.

Figura 7. Elección de la instalación personalizada de MySQL

23

Administración de Base de Datos con MySQL

4. De los productos disponibles seleccionar para instalar ‘MySQL Server 8.0’. Tomar en cuenta la distribución correcta según el procesador en el equipo en que está instalando. Para equipos con procesador de 64bits seleccionar la distribución marcada como ‘X64’.

Figura 8. Seleccionando productos a instalar 5. Para instalar en una ruta diferente a la predeterminada por el sistema seleccionar el producto de la lista y hacer clic en el enlace marcado como ‘Advanced Options’, esto mostrara un dialogo con opciones adicionales.

Figura 9. Selección de opciones avanzadas

24

Administración de Base de Datos con MySQL

Nota: Puede omitir este paso si no le es necesario instalar en una ruta diferente a la predeterminada. 6. Esta ventana muestra los requerimientos necesarios para la instalación, si alguno de ellos esta faltante el instalador tiene la capacidad de descargar estos elementos, el usuario tendrá que vigilar y aceptar la instalación de cada uno. Haga clic en ‘Execute’ para iniciar. Dependiendo de la conexión a internet las ventanas emergentes para la instalación de estos elementos pueden demorar en mostrarse. Nota: Es necesario instalar ✓ Microsoft Visual C++ 2015 Runtime

Figura 10. Lista de requerimientos de MySQL

25

Administración de Base de Datos con MySQL

7. La ventana emergente muestra el producto faltante a instalar, marcar la casilla ‘Acepto los términos y condiciones de licencia’ y posteriormente hacer clic en ‘Install’. Este proceso puede tardar varios minutos.

Figura 11. Instalación de Microsoft Visual

8. A l finalizar el proceso hacer clic en ‘Close’.

Figura 12. Instalación completada correctamente de Microsoft Visual

26

Administración de Base de Datos con MySQL

9. Al cumplirse los requerimientos se mostrará la siguiente ventana. Hacer clic en ‘Next’.

Figura 13. Requerimientos instalados correctamente 10. El instalador descargara e instalara los productos necesarios. Hacer clic en ‘Execute’ para iniciar el proceso.

Figura 14. Instalación de MySQL Server y Workbench

27

Administración de Base de Datos con MySQL

11. Si el proceso se completó correctamente el ‘Status’ de los productos mostrara la leyenda ‘Complete’. Hacer clic en ‘Next’ para continuar.

Figura 15. Proceso de instalación de MySQL Server y Workbench completada. Nota: Si el producto MySQL Workbench muestra la leyenda ‘Failed’ no se ha realizado el proceso de instalación correctamente Solución: Descargar ‘.Net Framework 4.5.2’, indicaciones para descargar este paquete se encuentran en la sección ‘Prerrequisitos’, posteriormente continúe en la sección ‘Parte 2: instalación de MySQL Workbench’. 12. Posterior a la instalación se configurará el producto para su utilización. Hacer clic en ‘Next’ para continuar.

28

Administración de Base de Datos con MySQL

Figura 16. Proceso de configuración del MySQL 13. En la ventana ‘Group Replication’ seleccionar la opción ‘Standalone MSQL Server / Classic MySQL Replication’. Hacer clic en ‘Next’ para continuar.

Figura 17. Proceso de elección de grupo de replicación de MySQL

29

Administración de Base de Datos con MySQL

14. En la ventana ‘Type and Networking’ sobre la opción ‘Config Type’se muestran tres opciones: ✓ ‘Develepment Machine’ - consumo de memoria bajo - seleccione esta opción si el equipo de cómputo tendrá otras funciones además de funcionar como servidor de base de datos (es un equipo de uso personal). ✓ ‘Server Machine’ consumo de memoria medio - seleccione esta opción si el equipo de cómputo realizara otras funciones o Servicios ✓ ‘Dedicated Machine’ consumo de memoria alto - seleccione esta opción si la única función del equipo en que se instala será el servidor de base de datos. Esta opción presenta el mejor rendimiento. En el apartado ‘Connectivity’ asegurarse que las siguientes opciones se encuentran marcadas: marcar la casilla ‘TCP/IP’ ‘Port Number’: 3306 marcar la casilla ‘Open Firewall por for network access’. Hacer clic en ‘Next’ para continuar

Figura 18. Configuración del tipo de conexión de MySQL

30

Administración de Base de Datos con MySQL

15. En la ventana ‘Authentication Method’ seleccionar la opción ‘Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)’. Hacer clic en ‘Next’ para continuar.

Figura 19. Configurando el método de autenticación de MySQL. 16. En esta ventana se dan de alta los usuarios que utilizaran el servicio de base de daros. Cuenta de usuario ‘Root’; utilizada para administración, es necesario capturar una contraseña para esta cuenta. Para capturar una contraseña segura: ✓ Las contraseñas deben de contener una combinación de mayúsculas, minúsculas, números y caracteres especiales con una longitud mínima de 8 caracteres. Agregar una cuenta nueva haciendo clic en el botón ‘Add User’

31

Administración de Base de Datos con MySQL

Figura 20. Configurando cuentas de autenticación y roles de usuario. 17. Capturar un nombre y contraseña para la cuenta. Hacer clic en ‘OK’.

Figura 21. Testeando la conexión de MySQL.

32

Administración de Base de Datos con MySQL

18. Una vez que se ha captura la contraseña para el usuario ‘Root’ y se ha agregado un usuario haga clic en ‘Next’.

Figura 22. Usuarios y roles de MySQL. 19. En la siguiente ventana revisar que las siguientes opciones estén marcadas: ✓ Marcar la casilla ‘Configure MySQL Server as a Windows Service’ ✓ Windows Service Name: ‘MySQLXX’ ✓ Marcar la casilla ‘Start the MySQL Server at System Startup’ ✓ Seleccionar la opción ‘Standard System Account’ Hacer Clic en Next.

33

Administración de Base de Datos con MySQL

Figura 22. Seleccionando los servicios de Windows en MySQL. 20. En la siguiente ventana se aplicarán las opciones seleccionadas y se iniciara el servicio de base de datos. Haga clic en ‘Execute’ para iniciar. Las acciones pueden tardar algunos minutos.

Figura 23. Ventana de instalación de los servicios de base de datos MySQL.

34

Administración de Base de Datos con MySQL

21. Al terminar todas las acciones hacer clic en ‘Finish’.

Figura 24. Configuración de los servicios de base de datos instalados correctamente. Nota: Si alguna tarea no logro completarse correctamente se interrumpirá el proceso. Solución: El usuario deberá contactar a su administrador de red para solucionar los inconvenientes que pudieran existir. 22. Se muestra ahora el estado de la configuración del producto. Hacer clic en ‘Next’.

35

Administración de Base de Datos con MySQL

Figura 25. Estado de configuración del producto completado. 23. Instalación completada. Marcar la casilla ‘Start MySQL Workbench after Setup’ y hacer clic en ‘Finish’ para terminar.

Figura 26. Finalización del proceso de instalación.

36

Administración de Base de Datos con MySQL

24. Al iniciar la aplicación se muestra la siguiente ventana. Hacer clic sobre ‘Local instance MySQL80’.

Figura 27. Interfaz de inicio de MySQL Workbench. 25. Finalmente se mostrará una interfaz grafica de MYSQL Workbench, y esta listo para empezar a trabajar.

Figura 28. Interfaz de MySQL Workbench

37

Administración de Base de Datos con MySQL

2.3.2. Creación de base de datos Modo Gráfico 1. Primeramente, damos clic en el icono de Create new schema in the connected server.

Figura 29. Selección del icono Server para crear un nuevo Schema. 2. Una vez que hemos dado clic nos mostrará una interfaz donde, nombramos a nuestra base de datos en mi caso tendrá el nombre de naturaldiaz y luego damos en Apply.

Figura 30. Interfaz para crear una nueva base de datos. 3. En este paso se mostrará una interfaz con comandos SQL donde, se podrá modificar el nombre de la base datos e inclusive nombras mas de una base de datos. Luego damos clic en Apply para continuar con el proceso.

38

Administración de Base de Datos con MySQL

Figura 31. Consulta SQL para crear una base de datos. 4.

Luego de aplicar los cambios damos clic en Finish, para finalizar el proceso

Figura 32. Finalización de creación de una base de datos en modo gráfico.

39

Administración de Base de Datos con MySQL

5. Una vez finalizada la acción vemos el panel de navegación y la salida de acciones nos mostrara el mensaje que la base de datos fue creada correctamente.

Figura 33. Base de datos naturaldiaz creada correctamente. Comandos SQL 1. Para le creación de una base de datos por medio de sentencias SQL, digitamos los comandos necesarios, finalmente ejecutamos la sentencia SQL.

Figura 34. Base de datos creada mediante sentencias SQL

40

Administración de Base de Datos con MySQL

2.3.3. Creación de tablas Modo Gráfico 1. Para la creación de tablas en modo grafico nos dirigimos a File y luego damos clic en New Model.

Figura 35. Interfaz de la ventana MySQL Model. 2. En este paso damos clic en Add new Diagram, para poder trabajar con la inserción de tablas.

Figura 36. Interfaz de diagramas para insertar tablas 3. Finalmente damos clic en el icono de insertar tabla de la figura anterior y la tabla se creará correctamente.

41

Administración de Base de Datos con MySQL

Figura 37. Inserción de la tabla user creada correctamente. Comando SQL 1. Para la inserción de tablas mediante sentencias SQL, primero digitaremos una serie de sentencias como se demostrará en la siguiente figura.

Figura 38. Sentencias SQL para insertar tablas 2. Una vez insertadas las sentencias damos en ejecutar y nos mostrara el mensaje que las tablas fueron creadas correctamente.

42

Administración de Base de Datos con MySQL

Figura 39. Inserción de las tablas correctamente 2.3.4. Creación de vistas Modo Gráfico 1. Para la creación de vistas en modo gráfico, primero damos clic en el incono de nombre Create a new view.

Figura 40. Creación de una vista en modo grafico

43

Administración de Base de Datos con MySQL

2. Una vez hecho lo anterior se mostrará una ventana para crear una nueva vista, en mi caso creare una vista que me muestre solo al usuario 1.

Figura 41. Creación de vista usuario 1. 3. Luego damos clic en Apply y nos mostrar la siguiente ventana, damos nueva mente en Apply, y por último damos en Finish, y nuestra vista_usuario 1 se habrá creado correctamente.

Figura 42. Ejecución de sentencias SQL correctamente. 4. Para demostrar que la vista fue creada, ubicamos en nuestro panel de navegación la vista creada recientemente y la ejecutamos.

44

Administración de Base de Datos con MySQL

Figura 43. Ejecución de la vista creada previamente. Comandos SQL 1. Para la creación de vistas mediante sentencias SQL se tendrá que ejecutar los scripts mostrados en la siguiente figura.

Figura 44. Sentencias SQL para la creación de una vista.

45

Administración de Base de Datos con MySQL

Referencias Bibliográficas MySQL.com (2019), Conociendo el gestor de base de datos, recuperado (24 ago. 2019), https://dev.mysql.com/doc/refman/8.0/en/features.html https://dev.mysql.com/doc/refman/8.0/en/data-types.html Cursosgis.com (2017), Diferencias frente a otros gestores, recuperado (24 ago. 2019), https://www.cursosgis.com/comparativa-de-los-principales-sistemas-gestores-de-bases-dedatos-sgbd/ http://ibmadmindb2.blogspot.com/p/ventajas-y-desventajas.html WikiHow.com (2019), Creación de base de datos, recuperado (24 ago. 2019), https://es.wikihow.com/crear-una-base-de-datos-en-MySQL

46

Administración de Base de Datos con MySQL

CAPITULO III Diccionario de Datos

47

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO III .............................................................................................................................. 466 DICCIONARIO DE DATOS ....................................................................................................... 488 3.1. Definición de Metadatos .................................................................................................... 488 3.1.1. Tipos de Metadatos ..................................................................................................... 488 3.2. Definición de Diccionario de Datos ................................................................................... 499 3.2.1. Significado .................................................................................................................... 499 3.2.2. Importancia.................................................................................................................. 499 3.3. Que Aplicaciones/Herramientas hacen uso el Diccionario de Datos ............................... 49 3.4. En qué consisten los siguientes estándares: ....................................................................... 50 3.5. Trabajo de Demostración de Diccionario de Datos en el Gestor ..................................... 51 Referencias Bibliográficas .............................................................................................................. 61

48

Administración de Base de Datos con MySQL

DICCIONARIO DE DATOS 3.1. Definición de Metadatos Según geoidep.gob.pe (2019), aporta que, la definición más concreta de los metadatos es qué son “datos acerca de los datos” y sirven para suministrar información sobre los datos producidos. Los metadatos consisten en información que caracteriza datos, describen el contenido, calidad, condiciones, historia, disponibilidad y otras características de los datos. Datos estructurados que describen y permiten encontrar, gerenciar, comprender o preservar documentos archivísticos al largo del tiempo. (CTDE - Cámara Técnica de Documentos Electrónicos – Conselho Nacional de Arquivos – Brasil). Según conarq.arquivonacional.gov.br (2007) tiene como funciones: ✓ Apoyar el acceso a los documentos; ✓ Apoyar y documentar la gestión y la preservación de documentos digitales. Los metadatos deben ser registrados durante todo el ciclo de vida de los documentos, incluyendo las actividades de: creación, identificación, descripción, acceso, almacenamiento y preservación. Nota: Los productores TIENEN que registrar los metadatos desde la creación de los documentos. 3.1.1. Tipos de Metadatos ✓ Administrativos. Auxilia en la gestión de documentos, la gestión de derechos y la gestión de la preservación. Registra características técnicas. Ejemplos: • Fecha de recibimiento. • Acción de preservación (conversión, refrescamiento). • Tipo de archivo (.DOC, .ODT). • Derechos de acceso (confidencialidad, propiedad, intelectual). ✓ Estructurales. Describen las relaciones entre documentos y la estructura interna de documentos complejos. Ejemplos: • Versiones de documentos. • Documentos de un expediente. • Tablas de una base de datos. • Archivos de una página de la web. Documentos complejos (formados por diversos archivos relacionados) Ejemplos: • Bases de datos. • Páginas de la web. • Correos electrónicos con anexos. ✓ Descriptivos. Auxilia en la búsqueda de los documentos. Ejemplos: • Autor • Destinatario • Fecha de creación • Institución productora

49

Administración de Base de Datos con MySQL

• •

Clasificación. Asunto, etc.

3.2. Definición de Diccionario de Datos 3.2.1. Significado Según Diana Gabriela Higuera Robles en blogpost.com (2019), el diccionario de datos es un listado organizado de todos los datos que pertenecen a un sistema. El objetivo de un diccionario de datos es dar precisión sobre los datos que se manejan en un sistema, evitando así malas interpretaciones o ambigüedades. Define con precisión los datos de entrada, salida, componentes de almacenes, flujos, detalles de las relaciones entre almacenes, etc. Los diccionarios de datos son buenos complementos a los diagramas de flujo de datos, los diagramas entidad-relación, etc. 3.2.2. Importancia El diccionario de datos guarda y organiza los detalles del Diagrama de Flujo de Datos (DFD). Es el segundo componente del análisis estructurado. También se conoce como "Data Repository". Incluye el contenido de los data flow (flujos de datos), los "data store", las entidades externas y los procesos. Data elements (elementos de datos). Es la parte más pequeña de los datos que tiene significado en el sistema de información. Se combinan varios elementos de datos para hacer los récords o "data structures". Ejemplo: nombre, dirección, seguro social. Data Structure (Estructura de datos) También se conocen como récord. Es la combinación de elementos de datos relacionados que se incluye en un flujo de datos o se retiene en un "data store". 3.3. Que Aplicaciones/Herramientas hacen uso el Diccionario de Datos

Según Ana Isabel Gomez Carrero (2015), aporta lo siguiente: ✓ DaD18K Tool (Aplicación para la gestión de diccionario de datos) ✓ DaD18k Services (Servicios web para la gestión de diccionario de datos) ✓ Herramienta CASE. Base de datos central de una herramienta CASE. El repositorio amplio el concepto de diccionario de datos para incluir toda la información que se va generando a lo largo del ciclo de vida del sistema, como, por ejemplo: componentes de análisis y diseño (diagramas de flujo de datos, diagramas entidad-relación, esquemas de bases de datos, diseños de pantallas), estructuras de programas, algoritmos, etc. En algunas referencias se le denomina Diccionario de Recursos de Información. ✓ DDBuilder. Es una herramienta que, de una manera rápida y fácil, le permite definir y modificar diccionarios de datos de BASIS, para ser usados con PRO/5, Visual PRO/5, BBxPROGRESSION/4, y TAOS (El Workbench del Diseñador), así como también definir Vistas SQL para ser usadas con el ODBC driver de BASIS. El diccionario de datos proporciona la documentación inmediata de estructuras de datos, incluso la composición del archivo y el tipo de datos. Pueden diseñarse aplicaciones para preguntar en tiempo de corrida al diccionario de datos, eliminando el utilizar estructuras de datos rígidas en el código de programa. DDBuilder corre bajo Windows 95, 98, Windows NT 4.0, Windows 2000 y puede usarse para:

50

Administración de Base de Datos con MySQL

• • • •

Crear y Definir la estructura de datos, incluso la composición del archivo. Definir diccionarios de datos que se crearon en otras aplicaciones, y modificarlos para el uso con productos de BASIS. Imprimir una representación de la estructura de la base de datos y su contenido. Aprovechar la funcionalidad del ODBC Driver de BASIS y de TAOS.

3.4. En qué consisten los siguientes estándares: ✓ ISO/IEC 10027:1990 (Information technology -- Information Resource Dictionary System (IRDS) framework) Según iso.org (2019), ISO crea documentos que proporcionan requisitos, especificaciones, pautas o características que se pueden usar de manera consistente para garantizar que los materiales, productos, procesos y servicios sean adecuados para su propósito. Según webstore.ansi.org (2019), Esta Norma Internacional describe el marco para una serie de Normas Internacionales que especifican un sistema de información especializado, llamado Sistema de Diccionario de Recursos de Información (IRDS). Un IRDS se utiliza para controlar y documentar los recursos de información de una empresa. Esta Norma Internacional define los niveles de datos relevantes para un IRDS. Define las interfaces IRDS prescritas por otras normas internacionales en la familia de normas IRDS. También define los tipos de contenido de datos prescritos por otras normas internacionales en la familia.

Fuente: www.iso.org

51

Administración de Base de Datos con MySQL

✓ ISO/IEC 10728:1993 (Information technology -- Information Resource Dictionary System (IRDS) Services Interface) La interfaz de servicios especificada le da a cualquier programa acceso completo a todos los servicios IRDS. Define la semántica de esta interfaz y también especifica los enlaces de idioma para ISO Pascal (ISO 7185). Los enlaces de idiomas para otros lenguajes de programación estándar ISO se proporcionan como estándares separados. No hace suposiciones sobre un entorno de implementación y no asume interfaces de tiempo de ejecución o tiempo de compilación específicas. Los detalles de la serie de normas IRDS se encuentran en ISO / IEC 10027.

Fuente: www.iso.org 3.5. Trabajo de Demostración de Diccionario de Datos en el Gestor 1. Crear una base de datos con al menos 5 tablas relacionadas, 3 vistas, 3 procedimientos almacenados y 2 disparadores en el Gestor MySQL Creación de la Base de Datos

Figura 47. Creación de la base de datos con sentencias SQL

52

Administración de Base de Datos con MySQL

Creación de las Tablas

Figura 48. Creación de Tablas Parte 1

Figura 49. Creación de Tablas Parte 2

53

Administración de Base de Datos con MySQL

Figura 50. Creación de Tablas Parte 3 Creación de Vistas

Figura 51. Creación de Vistas con sentencias SQL

54

Administración de Base de Datos con MySQL

Creación de Procedimientos Almacenados

Figura 52. Creación de Procedimientos Almacenados Parte 1

Figura 53. Creación de Procedimientos Almacenados Parte 2

55

Administración de Base de Datos con MySQL

Creación de Disparadores

Figura 54. Creación de Disparadores con sentencias SQL 2. Elaborar scripts SQL, que den como resultado lo siguiente: ✓ Relación de objetos de la base de datos • Una consulta SQL que muestre las Tablas

56

Administración de Base de Datos con MySQL

Figura 55. Consulta que muestra todas las tablas de la base de datos. •

Una consulta SQL que muestre las Vistas

57

Administración de Base de Datos con MySQL

Figura 56. Consulta que muestra todas las vistas en la base de datos •

Una consulta SQL que muestre los Procedimientos Almacenados

Figura 57. Consulta que muestra los Procedimientos Almacenados •

Una consulta SQL que muestre los Disparadores

Figura 58. Consulta que muestra los Disparadores

58

Administración de Base de Datos con MySQL



Una consulta SQL que las Llaves Primarias

Figura 59. Consulta para mostrar las Llaves Primarias •

Una consulta SQL que muestre las Llaves Foráneas

Figura 60. Consulta para mostrar las Llaves Foráneas

59

Administración de Base de Datos con MySQL

✓ Consulta SQL que muestre una lista de los campos de una de las tablas creadas con sus respectivos tipos de datos y tamaños.

Figura 61. Consulta para mostrar Tipo de Datos, Tamaño de una tabla ✓ Consulta SQL que muestre las Definiciones SQL de Vistas, Procedimientos Almacenados, Disparadores.

60

Administración de Base de Datos con MySQL

Definiciones de Vistas

Figura 62. Consulta para mostrar Definiciones de Vistas Definiciones de Procedimientos

Figura 63. Consulta para mostrar Definiciones de Procedimientos

61

Administración de Base de Datos con MySQL

Referencias Bibliográficas geoidep.gob.pe (2019), Definición de metadatos, recuperado (28 ago. 2019), https://www.geoidep.gob.pe/conoce-las-ides/metadatos/que-son-los-metadatos Conarq (2007), Definición de metadatos, recuperado (28 ago. 2019); http://conarq.arquivonacional.gov.br/images/ctde/apresentacoes_gestao/chile__metad atos_2007.pdf Diana Gabriela Higuera Robles (2019), Definición de diccionario de datos, recuperado (28 ago. 2019) http://katyygaby.blogspot.com/p/diccionario-de-datos.html Ana Isabel Gómez Carrero (2015), Aplicaciones y herramientas que hacen uso del diccionario de datos, recuperado (28 ago. 2019), https://ruidera.uclm.es/xmlui/bitstream/handle/10578/6654/TFG_AnaIsabel_G%C3% B3mez_Carretero.pdf?sequence=1 Webstore.ansi.org (2019), Concepto de estándares, recuperado (29 ago. 2019), https://webstore.ansi.org/standards/iso/isoiec100271990 https://webstore.ansi.org/standards/iso/isoiec100271990#PDF Iso.org (2019), Conceptos de estandarización, recuperado (29 ago. 2019) https://www.iso.org/standard/18821.html https://www.iso.org/standard/17985.html

62

Administración de Base de Datos con MySQL

CAPITULO IV Integridad en Base de Datos

63

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO IV ................................................................................................................................ 62 INTEGRIDAD EN BASE DE DATOS........................................................................................ 644 4.1. Definición de Integridad .................................................................................................... 644 4.2. Definición de Integración de Datos ................................................................................... 644 4.3. Categorías de Integridad de Datos.................................................................................... 644 4.2.1. Integridad de Entidad ................................................................................................. 644 4.2.2. Integridad de Dominio ................................................................................................ 644 4.2.3. Integridad Referencial ................................................................................................ 655 4.2.4. Integridad Definida por el Usuario ............................................................................ 655 4.4. Trabajo Demostración de la Integridad de Datos en el Gestor ...................................... 666 Referencias Bibliográficas ............................................................................................................ 699

64

Administración de Base de Datos con MySQL

INTEGRIDAD EN BASE DE DATOS 4.1. Definición de Integridad La integración de datos es una combinación de procesos técnicos y de negocio que se utilizan para combinar información de diferentes fuentes para convertirla en datos fiables y valiosos. Estas soluciones de integración ayudan a comprender, limpiar, monitorizar, transformar y entregar datos para que las empresas puedan estar seguras de que la fuente de información es confiable, consistente y está gestionada en tiempo real. 4.2. Definición de Integración de Datos Según powerdata.es (2019), la integridad de datos es el proceso que permite combinar datos heterogéneos de muchas fuentes diferentes en la forma y estructura de una única aplicación. Esto facilita que diferentes tipos de información, tales como matrices de datos, documentos y tablas, sean fusionados por usuarios, organizaciones y aplicaciones para un uso personal, de procesos de negocio o de funciones. Un proyecto de integración de datos generalmente implica los siguientes pasos: ✓ Acceso a los datos desde todas las fuentes y localizaciones tanto si se trata de locales, en la nube o de una combinación de ambos. ✓ Integración de datos de modo que los registros de una fuente de datos mapean registros en otra. Por ejemplo, incluso si un conjunto de datos utilizara “nombre, apellidos” y otro “nom, ape”, el conjunto integrado se asegurará de que en ambos casos los datos van al lugar correcto. Se trata de un tipo de preparación de datos esencial para que las analíticas y otras aplicaciones sean capaces de utilizar los datos con éxito. ✓ Entrega de datos integrados al negocio justo en el momento en que la empresa los necesita, ya sea por lotes, casi en tiempo real o en tiempo real. El mundo empresarial se está centrando cada vez más en el consumidor. Enfocarse en el servicio al cliente y escucharle para obtener Feedback era vital en el pasado, pero los negocios de hoy en día necesitan alcanzar ideas más profundas de lo que los clientes quieren, recopilando datos que van desde el uso de patrones con productos, a publicaciones en medios sociales. 4.3. Categorías de Integridad de Datos 4.2.1. Integridad de Entidad La integridad de entidad define una fila como entidad única para una tabla determinada. La integridad de entidad exige la integridad de las columnas de los identificadores o la clave principal de una tabla, mediante índices y restricciones UNIQUE, o restricciones PRIMARY KEY. Regla de integridad de entidad de la clave primaria. La regla de integridad de entidad de la clave primaria dispone que los atributos de la clave primaria de una relación no pueden tener valores nulos. 4.2.2. Integridad de Dominio Según EcuRed.cu (2019), resalta que la regla de integridad de dominio está relacionada con la noción de dominio. Esta regla establece dos condiciones. ✓ La primera condición consiste en que un valor no nulo de un atributo Ai debe pertenecer al dominio del atributo Ai; es decir, debe pertenecer a dominio (Ai). Esta condición implica que todos los valores no nulos que contiene la base de datos para un determinado atributo deben ser del dominio declarado para dicho atributo.

65

Administración de Base de Datos con MySQL

✓ La segunda condición sirve para establecer que los operadores que pueden aplicarse sobre los valores dependen de los dominios de estos valores; es decir, un operador determinado sólo se puede aplicar sobre valores que tengan dominios que le sean adecuados. 4.2.3. Integridad Referencial Según blogpost.com (2013), La integridad referencial protege las relaciones definidas entre las tablas cuando se crean o se eliminan filas. En SQL Server la integridad referencial se basa en las relaciones entre claves externas y claves principales o entre claves externas y claves exclusivas, mediante restricciones FOREIGN KEY y CHECK. La integridad referencial garantiza que los valores de clave sean coherentes en las distintas tablas. Para conseguir esa coherencia, es preciso que no haya referencias a valores inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se cambien en consecuencia en toda la base de datos. Cuando se exige la integridad referencial, SQL Server impide a los usuarios: ✓ Agregar o cambiar filas en una tabla relacionada si no hay ninguna fila asociada en la tabla principal. ✓ Cambiar valores en una tabla principal que crea filas huérfanas en una tabla relacionada. ✓ Eliminar filas de una tabla principal cuando hay filas relacionadas coincidentes. Regla de integridad referencial La regla de integridad referencial está relacionada con el concepto de clave foránea. Concretamente, determina que todos los valores que toma una clave foránea deben ser valores nulos o valores que existen en la clave primaria que referencia. 4.2.4. Integridad Definida por el Usuario La integridad definida por el usuario permite definir reglas de empresa específicas que no pertenecen a ninguna otra categoría de integridad. Todas las categorías de integridad admiten la integridad definida por el usuario. Esto incluye todas las restricciones de nivel de columna y nivel de tabla en CREATE TABLE, procedimientos almacenados y desencadenadores.

66

Administración de Base de Datos con MySQL

4.4. Trabajo Demostración de la Integridad de Datos en el Gestor 1. Cree una base de datos y con un ejemplo indique de qué manera el gestor MySQL aplica cada una de las categorías de integridad. Para esta demostración usaremos la Base de Datos pizzaramos, que previamente fue creada en el capítulo anterior

Figura 64. Utilización de la base de datos pizzaramos. Integridad de Entidad 1. Para aplicar la integridad de entidad utilizaremos la base de datos pizzaramos, la cual insertaremos un nuevo usuario, pero con la columna idusuario repetida y nos mostrara el siguiente mensaje:

Figura 65. Mensaje de error, violación de integridad de entidad.

67

Administración de Base de Datos con MySQL

Integridad de Dominio 1. Para aplicar la integridad de dominio, insertamos un nuevo usuario con idusuario diferente al tipo de dato especificado al momento de crear la tabla. Nos mostrar el siguiente mensaje:

Figura 66. Mensaje de error, violación de integridad de dominio. Integridad Referencial 1. Para aplicar la integridad referencial, insertamos un nuevo usuario con idempleado referenciado en la tabla empleados con un empleado que no existe. Nos mostrara el siguiente mensaje:

Figura 67. Mensaje de error, violación de integridad referencial. Integridad Definida por el Usuario 1. Para aplicar la integridad definida por el usuario, usaremos como ejemplo la tabla empleados, quien tiene la columna dni con tamaño (8).

68

Administración de Base de Datos con MySQL

Figura 68. Restricción del tamaño de dato del campo dni definida por el usuario. 2. Ahora insertaremos un nuevo empleado con variables mayores que 8, especificados en la columna dni. Nos mostrara el siguiente mensaje:

Figura 69. Violación de integridad definida por el usuario.

69

Administración de Base de Datos con MySQL

Referencias Bibliográficas PowerData (2019), Definición de Integridad, recuperado (10 set 2019), https://www.powerdata.es/integracion-de-datos BlogPost (2013), Integridad de Entidad, Referencial y Definida por él usuario, recuperado (10 set 2019), http://blackmoralresistance.blogspot.com/2013/03/informatica-integridad-de-entidad-e.html http://clasedatos.blogspot.com/p/integridadde-entidad-laintegridad-de.html Ecured (2019), Integridad de Dominio, recuperado (10 set 2019), https://www.ecured.cu/Integridad_de_las_Bases_de_Datos

70

Administración de Base de Datos con MySQL

CAPITULO V Seguridad en Base de Datos

71

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO V .................................................................................................................................. 70 SEGURIDAD EN BASE DE DATOS............................................................................................ 72 5.1. Definición de Seguridad ....................................................................................................... 72 5.1.1. Confidencialidad en Base de Datos .............................................................................. 72 5.2. Seguridad del Gestor............................................................................................................ 72 5.2.1. Inicios de Sesión............................................................................................................. 72 5.2.2. Usuarios .......................................................................................................................... 73 5.2.4. Roles ............................................................................................................................... 73 5.2.5. Funciones en el Servidor ............................................................................................... 73 5.2.6. Privilegios ....................................................................................................................... 73 5.3. Autenticación o Autentificación .......................................................................................... 74 5.3.1. Políticas de Contraseñas ............................................................................................... 74 5.4. Trabajo de Demostración de la Seguridad en el Gestor ................................................... 75 Referencias Bibliográficas .............................................................................................................. 81

72

Administración de Base de Datos con MySQL

SEGURIDAD EN BASE DE DATOS 5.1. Definición de Seguridad Según Powerdata.es, la seguridad de datos, también conocida como seguridad de la información o seguridad informática, es un aspecto esencial de TI en organizaciones de cualquier tamaño y tipo. Se trata de un aspecto que tiene que ver con la protección de datos contra accesos no autorizados y para protegerlos de una posible corrupción durante todo su ciclo de vida. Seguridad de datos incluye conceptos como encriptación de datos, tokenización y prácticas de gestión de claves que ayudan a proteger los datos en todas las aplicaciones y plataformas de una organización. Hoy en día, organizaciones de todo el mundo invierten fuertemente en la tecnología de información relacionada con la ciberdefensa con el fin de proteger sus activos críticos: su marca, capital intelectual y la información de sus clientes. En todos los temas de seguridad de datos existen elementos comunes que todas las organizaciones deben tener en cuenta a la hora de aplicar sus medidas: las personas, los procesos y la tecnología. Hay 2 tipos de seguridad: ✓ Direccional. Se usa para otorgar y revocar privilegios a los usuarios a nivel de archivos, registros o campos en un modo determinado (consulta o modificación). ✓ Obligatoria. Sirve para imponer seguridad de varios niveles tanto para los usuarios como para los datos. Para eso se utilizan mecanismos de protección. 5.1.1. Confidencialidad en Base de Datos Según Incibe.es (2019), la confidencialidad, implica que la información es accesible únicamente por el personal autorizado. Es lo que se conoce como need-to-know. Con este término se hace referencia a que la información solo debe ponerse en conocimiento de las personas, entidades o sistemas autorizados para su acceso. Ejemplos de falta de confidencialidad, son el robo de información confidencial por parte de un atacante a través de internet, la divulgación no autorizada a través de las redes sociales de información confidencial o el acceso por parte de un empleado a información crítica de la compañía ubicada en carpetas sin permisos asignados, a la que no debería tener acceso. También debemos tener en cuenta que la adopción de un determinado control para mejorar la seguridad en una dimensión, puede afectar de forma negativa o positiva a otra de las dimensiones, por ello, es esencial conocer cuál de estas dimensiones es más importante proteger en cada sistema de información. Por ejemplo, implantar un control de acceso para proteger la confidencialidad en un aparato médico de una sala de operaciones, puede producir un retardo en el acceso a la información afectando a su disponibilidad, lo cual no sería lo más adecuado. 5.2. Seguridad del Gestor 5.2.1. Inicios de Sesión Las variables de sesión se utilizan para almacenar información individual de los clientes en el servidor web para su uso posterior, como un servidor web, que no sabe de la petición del cliente para ser responder porque la dirección HTTP no mantiene estado. Según Cibertec (2019), una cuenta de usuario de Windows puede ser necesaria para conectarse a una base de datos. También, podría ser necesaria la autenticación de MySQL. Tanto si se va a usar autenticación de Windows o autenticación de modo mixto, la cuenta que

73

Administración de Base de Datos con MySQL

se usa para la conexión a MySQL Workbench se le conoce como inicio de sesión de MySQL Server. 5.2.2. Usuarios Según gplsi.dlsi.ua.es (2019), Hay 2 tipos de usuarios: ✓ Usuario con derecho a crear, borrar y modificar objetos y que además puede conceder privilegios a otros usuarios sobre los objetos que ha creado. ✓ Usuario con derecho a consultar, o actualizar, y sin derecho a crear o borrar objetos. Privilegios sobre los objetos, añadir nuevos campos, indexar, alterar la estructura de los objetos, etc. 5.2.4. Roles Según docs.plesk.com (2019), con MySQL, un usuario puede seleccionar roles para los usuarios de bases de datos, así como añadir o eliminar privilegios de forma independiente. Asimismo, MySQL ofrece soporte para el rol Personalizado, que corresponde a un grupo de privilegios definidos por los usuarios. Los usuarios de SQL Server no pueden modificar los conjuntos de permisos incluidos en los roles. 5.2.5. Funciones en el Servidor Según Infranetworking.com (2019). Un servidor de base de datos, también conocido como database server o RDBMS (Relational DataBase Management Systems) en caso de bases de datos relacionales, es un tipo de software de servidor que permiten la organización de la información mediante el uso de tablas, índices y registros. A nivel de hardware, un servidor de base de datos es un equipo informático especializado en servir consultas a clientes remotos o locales que solicitan información o realizan modificaciones a los registros y tablas que existen dentro de las bases de datos del sistema (en muchos casos desde un servidor web o de aplicaciones). Si vamos a la función fundamental de un servidor de base de datos, encontraremos que es el servicio que provee de información a otras aplicaciones web o equipos/hosts, tal como se especifica en el modelo cliente servidor. Mediante el uso de un cliente de base de datos, se puede acceder a la información que se guarda en las diferentes bases de datos. Una vez el cliente ha accedido mediante un usuario, contraseña y nombre de host, se le permiten realizar diferentes tareas, dependiendo del nivel de privilegios que posea. Algunos usuarios tienen privilegios de administrador y pueden administrar por completo las bases de datos a las que se conectan, mientas que otros usuarios tienen privilegios parciales para solo leer datos (hacer consultas de lectura, también llamado (SELECT). Los motores de bases de datos modernos permiten simultaneidad de consultas, lo que significa que un usuario puede escribir en determinada tabla, mientras que otro hace lectura de datos, o también escribe al mismo tiempo, todos desde diferentes lugares geográficos incluso una vez que el cliente de base de datos termina la consulta, la conexión con el server finaliza. 5.2.6. Privilegios Según codigofacilito.com (2019), el servidor de base de datos permite que más de un usuario pueda trabajar con los recursos del servidor (registros, tablas, bases de datos, funciones, etc.). Hasta este punto del curso, todos los ejercicios los hemos realizado utilizando el usuario root.

74

Administración de Base de Datos con MySQL

Si nosotros somos los únicos administradores del servidor (algo que muy pocas veces sucede) no deberíamos tener problemas en seguir utilizando root, sin embargo, si más personas trabajarán con el servidor, será necesario que generemos nuevos usuarios y asignemos los permisos pertinentes. Los privilegios que se otorgan a los usuarios son los siguientes: (Seleccionar, Insertar, Actualizar, Eliminar, Crear, Drop, Alter, Index, Create temporary tables, Lock tables, Create views, Show Views). 5.3. Autenticación o Autentificación En un SGBD existen diversos elementos que ayudan a controlar el acceso a los datos. En primer lugar, el sistema debe identificar y autentificar a los usuarios utilizando alguno de las siguientes formas: ✓ ✓ ✓ ✓

Código y contraseña Identificación por hardware Conocimiento, aptitudes y hábitos del usuario Información predefinida (Aficiones, cultura)

Además, el administrador deberá especificar los privilegios que un usuario tiene sobre los objetos: ✓ ✓ ✓ ✓ ✓ ✓ ✓

Usar una base de datos Consultar ciertos datos Actualizar datos Crear o actualizar objetos Referencias objetos Indexar objetos Crear identificadores

5.3.1. Políticas de Contraseñas El validate_password complemento sirve para mejorar la seguridad al requerir contraseñas de cuenta y permitir pruebas de resistencia de contraseñas potenciales. Este complemento expone un conjunto de variables del sistema que le permiten configurar la política de contraseña. ✓ Se necesita el rol Admin (Administrador) (a) para configurar las propiedades de la política de contraseñas. ✓ Toda contraseña correspondiente a cuentas de usuario final es personal e intransferible, por lo tanto, no debe compartirse por ningún motivo. ✓ La política de contraseñas se aplica solo a las cuentas de usuario local. No afecta a las cuentas del servicio de autenticación de usuario remoto como LDAP o Active Directory. Una vez guardados los cambios de las propiedades de política de contraseñas, sucede lo siguiente: ✓ Se suprimen todas las configuraciones de cuenta de usuario local ✓ Se restaura la cuenta de usuario local por defecto (root) que se incluye en el sistema de fábrica. ✓ En el primer inicio de sesión de root, se solicita que el usuario root cambie la contraseña de la cuenta root.

75

Administración de Base de Datos con MySQL

5.4. Trabajo de Demostración de la Seguridad en el Gestor 1. Cree diferentes usuarios en la base de datos y cada uno va asignándolo sus respectivos permisos y privilegios demostrando lo que pasa en cada nivel de seguridad, a nivel base de datos, objetos, acciones y columnas. Para poder agregar un nuevo usuario lo primero que debemos de hacer ejecutamos la siguiente sentencia: Agregando 4 Nuevos Usuarios

Figura 70. Consulta SQL para añadir nuevos usuarios Hasta este punto, nosotros ya podemos autenticarnos con el servidor utilizando el nuevo usuario, sin embargo, una vez autenticado las acciones que podemos hacer son mínimas, debido a que este usuario no posee los permisos necesarios para trabajar con las bases de datos. Asignando Permisos Para poder establecer permisos, las siguientes sentencias deben de ejecutarse utilizando el usuario root.

Figura 71. Asignando permisos y privilegios

76

Administración de Base de Datos con MySQL

Usuario 1: Puede Ingresar a la BD1y no a la DB2.

Figura 72. Usuario 1 teniendo acceso solo a la base de datos ejemplodba. Usuario 2: Puede Ingresar a la BD1, tiene acceso a la Tabla1 y no a la Tabla2 (Validar con ALTER) Con el siguiente script, al usuario2 le otorgamos el privilegio de solo acceder a la base de datos ejemplodba, además de tener acceso a la tabla clientes, pero no tendrá acceso a la tabla privilegios:

Figura 73. Sentencia SQL para otorgar privilegios.

77

Administración de Base de Datos con MySQL

Luego de conectarse con el usuario2 tendremos acceso solo la tabla clientes de la base de datos ejemplodba, como se muestra en la siguiente imagen:

Figura 74. Usuario2 teniendo acceso a la tabla clientes. Usuario 3: Puede Ingresar a la BD1, tiene acceso a la Tabla1, puede hacer UPDATE Y SELECT, pero INSERT y DELETE. Con el siguiente script, al usuario3 le otorgamos el privilegio de solo acceder a la base de datos ejemplodba, además de tener acceso a la tabla clientes, se podrá hacer Update y Select, pero no se podrá hacer Insert y Delete:

Figura 75. Sentencia SQL para otorgar privilegios

78

Administración de Base de Datos con MySQL

Figura 76. Sentencia SELECT para demostración de seguridad de datos. Usando UPDATE, cambiamos el nombre de Jorge Morales por Edinson Villalobos, nos mostrara el siguiente resultado:

Figura 77. Sentencia UPDATE para demostración de seguridad de datos

79

Administración de Base de Datos con MySQL

Usando INSERT y DELETE respectivamente, nos mostrara resultado que las acciones no están privilegiadas en este usuario:

Figura 78. Sentencias INSERT y DELETE para demostración de seguridad de datos Usuario 4: Puede Ingresar a la BD1, tiene acceso a la Tabla1, puede hacer UPDATE y SELECT, pero solo en la columna1, columna2 y no en la columna3. Para este caso usaremos como ejemplo la base de datos practicadba, ejecutando el siguiente script el usuario4, le otorgamos el privilegio de solo tener acceso a la tabla empleados, además de hacer UPDATE y SELECT, pero solo en las columnas (idempleado, dni):

Figura 79. Sentencias SQL para otorgar permisos Usando SELECT y UPDATE ejecutamos el script respectivamente como lo siguiente:

Figura 80. Sentencias SQL para modificar la tabla empleados

80

Administración de Base de Datos con MySQL

Una vez ejecutado la acción los resultados se muestran de la siguiente manera. Ejecutando SELECT, tenemos:

Figura 81. Sentencias SELECT para modificar la tabla empleados Ejecutando UPDATE tenemos lo siguiente: (El idempleado = 1 se actualizará por idempleado = 4):

Figura 82. Sentencias UPDATE para demostración de seguridad de datos Como se muestra en la imagen el “dni” = 74530858, se actualizo por el “idempleado” = 4, ya que anteriormente tenía como “idempleado” = 1.

81

Administración de Base de Datos con MySQL

Referencias Bibliográficas Powerdata.es (2019), Definición de seguridad, recuperado (13 sep. 2019), https://www.powerdata.es/seguridad-de-datos Incibe.es (2019), Confidencialidad de datos, recuperado (13 sep. 2019), https://www.incibe.es/sites/default/files/contenidos/dosieres/metad_proteccion-de-lainformacion.pdf Gplsi.dlsi.ua.es (2019), Usuarios en base datos, recuperado (14 sep. 2019), http://gplsi.dlsi.ua.es/bbdd/bd1/lib/exe/fetch.php?media=bd1:0910:trabajos:seguridadbd.pdf Docs.plesk.com (2019), Roles de los usuarios en base de datos, recuperado (14 sep. 2019), https://docs.plesk.com/es-ES/onyx/administrator-guide/74697/ Infranetworking.com (2019), Funciones en el servidor de base de datos, recuperado (14 sep. 2019), https://blog.infranetworking.com/servidor-base-de-datos/

82

Administración de Base de Datos con MySQL

CAPITULO VI Migración de Datos

83

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO VI ................................................................................................................................ 82 MIGRACIÓN DE DATOS ............................................................................................................. 84 6.1. Definición de Migración de Datos, Propósito de una migración ...................................... 84 6.2. Fuentes u Orígenes de Datos ............................................................................................... 85 6.3. Etapas Básicas de una Migración de Datos........................................................................ 86 6.4. Proveedores de Acceso a Datos (ADO, OLEDB, ODBC y JDBC) ................................... 86 6.4.1. ADO ................................................................................................................................ 86 6.4.2. OLEDB ........................................................................................................................... 87 6.4.3. ODBC ............................................................................................................................. 88 6.4.4. JDBC .............................................................................................................................. 89 6.5. Herramientas de Migración de Datos................................................................................. 89 6.5.1. Migración de almacenamiento ..................................................................................... 89 6.5.2. Migración de la base de datos ...................................................................................... 90 6.5.3. Migración de aplicaciones............................................................................................. 90 6.5.4. Codificación de caracteres ............................................................................................ 90 6.6. Demostración de Migración de Datos en el Gestor hacia Otros Gestores ....................... 91 Referencias Bibliográficas .............................................................................................................. 96

84

Administración de Base de Datos con MySQL

MIGRACIÓN DE DATOS 6.1. Definición de Migración de Datos, Propósito de una migración Según PowerData.es (2019). La información es un activo esencial para cualquier organización y el potencial de su valor reside en los datos que, en ocasiones, deben migrar para mejorar el desempeño de una base de datos, actualizar versiones, reducir costes o aplicar políticas de seguridad. Pero, ¿qué es la migración de datos? Este proceso consiste en la transferencia de datos de un sistema a otro y suele tener lugar en momentos de transición provocados por la llegada de una nueva aplicación, un cambio en el modo o medio de almacenamiento o las necesidades que impone el mantenimiento de la base de datos corporativa. Generalmente, una migración de datos se produce durante una actualización de hardware o la transferencia de un sistema existente a otro completamente nuevo. Algunos ejemplos son: ✓ Actualización de una base de datos. ✓ Migración hacia o desde la plataforma de hardware. ✓ Migración a un nuevo software. Fusión de dos sistemas paralelos en uno solo que se requiere cuando una empresa absorbe a otra o cuando dos negocios se fusionan. En ningún caso se debe confundir el término migración de datos con otros que, aunque similares, muestra diferencias esenciales en cuanto al número de fuentes de origen y destino de datos o a su diversidad. Consolidación, integración o actualización de datos son procesos diferentes con propósitos distintos. La migración de datos se ve muy bien representada por las siglas ETL, que corresponden a los términos: extracción, transformación y carga. Pese a que se puede aplicar un proceso ETL con otros objetivos, al plantearse qué es la migración de datos es inevitable aludir a su tarea principal: extracción y carga (ya que la transformación no tiene por qué aplicarse en todos los casos, sólo si fuese necesario). Hay tres opciones principales para llevar a cabo la migración de datos: ✓ Combinar los sistemas de las dos empresas o fuentes en uno nuevo. ✓ Migrar uno de los sistemas al otro. ✓ Mantener la integridad de ambos sistemas, dejándolos intactos, pero creando una visión común a ambos: un almacén de datos. Según GrupoKorporate.com (2019). La herramienta más indicada para llevar a cabo una migración de datos es una de extracción transformación y carga, frente a opciones menos productivas, como la codificación manual; a otras inaplicables, como la integración de aplicaciones (EAI) o a otras que no aportan todo lo necesario para realizar el proceso con plenas garantías, como es el caso de las de replicación. Para llevar a cabo una migración de datos es necesario recorrer los siguientes pasos: 1. Planificación: Desde la definición de la estrategia y el alcance del proyecto hasta el análisis de viabilidad. 2. Analítica: Considerando variables como la integridad, exactitud o consistencia de los datos a migrar y teniendo en cuenta las características de las bases de datos de origen y destino. 3. Selección de aplicación: Puede desarrollarse de forma interna o adquirirse tras evaluar las distintas alternativas.

85

Administración de Base de Datos con MySQL

4. Testing: Aplicación de los ciclos de pruebas a las aplicaciones que emplearán la base de datos. 5. Migración: Comprende las etapas de extracción, transformación y carga. 6. Evaluación: Se trata de medir los resultados y analizarlos, determinando los ajustes necesarios. 6.2. Fuentes u Orígenes de Datos Según GrupoKorporate.com (2019). En realidad, el volumen de datos que pueden llegar a manejar las organizaciones es cada día más ingente y para sacar beneficio a ese caudal de información, que ayuda a tomar las mejores decisiones o conocer más al cliente, lo primero que conviene comprender es cuáles son las categorías de datos a los que se enfrenta y las fuentes de origen de los mismos, lo que le ayudará a dirigirse a lo que verdaderamente necesita. Se trata de identificar primero para capturar, evaluar y analizar sólo aquellos activos que propicien información relevante a su objetivo, ya que sin él la información que maneje probablemente no le lleven a ningún lado. La primera división que nos encontramos en las compañías en función de la categoría de datos existentes son los datos no estructurados, estos conforman nada menos que el 80 por ciento de la información que manejamos en el entorno empresarial. Estos son: archivos de audio, vídeo, fotografías, formatos de texto, SMS, artículos, correos electrónicos. Conviene saber que este tipo de datos no tiene campos fijos y normalmente se tiene poco control sobre ellos. Su manipulación requiere herramientas como Hadoop (la más popular), bases de datos NoSQL, entre otras. De otro lado, están los llamados datos estructurados, son lo que se encuentran en un formato definido y bien especificado, son los datos tradicionales de las bases de datos relacionales, hojas de cálculo, archivos y cuentan con un orden claro. Ejemplo: fecha de nacimiento, DNI, el número de la cuenta corriente de un banco. Luego están los datos semiestructurados que, si bien no tienen formatos fijos, sí contienen etiquetas u otros marcadores que permiten su comprensión. Ejemplo: las etiquetas XML y HTML. Es importante saber si quiere sacar beneficios del Big Data, que la procedencia de estos datos viene de un total de cinco fuentes, lo que le ayudará a su estrategia de identificación para lograr una buena analítica de Big Data y con la que podrá descubrir realmente aquellos datos que han cambiado para reaccionar o conseguir mayores oportunidades de negocio, e incluso aumento de ingresos. ✓ Biométricos. Son los referidos a la identificación automática de una persona basada en sus características anatómicas o trazos personales, como la firma biométrica. Hablamos tanto de reconocimiento facial pero también genético (ADN). ✓ Máquina a máquina. Se refiere a Internet de las Cosas, son aquellas tecnologías que permiten la conexión de diferentes dispositivos entre sí. Un ejemplo son los GPS, pero también los denominados chips NFC (aquella tecnología que se sustenta en la comunicación inalámbrica y que permite la transmisión de datos de forma segura: integrada fundamentalmente en smarphone y tablets). Todo un mundo de posibilidades que puede hallarse también en parquímetros, cajeros, máquinas expendedoras… ✓ Datos de transacciones. Los datos que se registran en los departamentos de facturación forman parte de las operaciones normales que se producen en las transacciones habituales. También están los centros de llamada, mensajería, reclamaciones,

86

Administración de Base de Datos con MySQL

presentación y registro de documentos y los que se generan con los pagos por tarjeta, pago online. ✓ Generados por los humanos. Todas aquellas grabaciones a operadores de atención al cliente: Call Center, también los e-mails o los registros médicos electrónicos. ✓ Web y medios sociales. Son los que se originan en la red y configuran, según los expertos, el trozo más grande del pastel llamado Big Data y es una de las fuentes de datos más utilizadas en la actualidad. Hablamos de la información que se genera sobre clics en vínculos y elementos. Pero también de toda aquella contenida en las búsquedas que realizamos por ejemplo en Google, las publicaciones en las Redes sociales (Twitter, Facebook, LinkedIn) y el contenido web como páginas, enlaces o imágenes. Una vez hayamos identificado cuáles son las fuentes de datos necesarias para nuestra estrategia, aplicaremos las técnicas de analítica para operar sobre ellos y sacar así, valor a la información. 6.3. Etapas Básicas de una Migración de Datos Según PowerData.es (2019). En líneas generales, al hablar de etapas de la migración de datos se pueden concretar cuatro: 1. Extraer los datos relevantes y depositarlos en un área intermedia donde la estructura sea similar a la estructura de origen. 2. Realizar el proceso de calidad de datos, que puede contener varias iteraciones, hasta lograr garantizar que el dato está limpio y es confiable. Para ello se procederá a la eliminación de inconsistencias y errores; y se continuará con la homogeneización de los datos y su enriquecimiento. 3. Una vez que la calidad de los datos está asegurada, se procede a la fase de transformación, en la que se aplican una serie de reglas del negocio o funciones sobre los datos extraídos para convertirlos en los datos que serán cargados. 4. Por último, la última etapa se ocupa en llevar a cabo la carga de los datos, ya convertidos y validados. 6.4. Proveedores de Acceso a Datos (ADO, OLEDB, ODBC y JDBC) Según WordPress.com (2008), aclara todos los puntos a tratar: 6.4.1. ADO

ADO es un contenedor COM de OLE DB que facilita la programación de aplicaciones de acceso a datos (consumidores). OLE DB es una tecnología de acceso a datos universal basada en COM, que permite utilizar cualquier origen de datos, no sólo los indizados, los de método de acceso secuencial (ISAM) o las bases de datos basadas en SQL. Los proveedores OLE DB permiten tener acceso a datos desde varios orígenes de datos diferentes y no están limitados a utilizar consultas SQL para obtener datos, sino que pueden utilizar consultas definidas en el proveedor. ADO es el sucesor de DAO y RDO. La funcionalidad de ADO 2.0 es prácticamente idéntica a la de RDO y en general existe una correspondencia de funciones similares en ambos modelos. ADO permite “allanar” el modelo de objetos empleado por DAO y RDO, en el sentido de que contiene menos objetos y más propiedades, métodos (y argumentos) y eventos. Por ejemplo, en ADO no existe un equivalente de los objetos rdoEngine y rdoEnvironment expuestos por el administrador de controladores ODBC y las interfaces hEnv. Tampoco es posible crear orígenes de datos ODBC desde ADO, a pesar de que puede exponer su propia interfaz a través del proveedor de servicios OLE DB de ODBC.

87

Administración de Base de Datos con MySQL

Muchas de las características incluidas en los modelos DAO y RDO fueron refundidas en objetos únicos para simplificar en gran medida el modelo de objetos. No obstante, debido a esto es posible que inicialmente encuentre dificultades cuando intente localizar un objeto, colección, propiedad, método o evento de ADO apropiado a sus necesidades. A diferencia de DAO y RDO, aunque los objetos ADO son jerárquicos, se pueden crear también fuera del alcance de la jerarquía. Sin embargo, conviene tener en cuenta que ADO no admite actualmente toda la funcionalidad de DAO. ADO incluye principalmente funcionalidad para interactuar con los orígenes de datos OLE DB en una forma similar a RDO, así como operaciones remotas y tecnología DHTML. En general, dado el estado de la evolución de ADO, probablemente sea prematuro migrar directamente a ADO la mayoría de las aplicaciones DAO (excepto posiblemente las que utilizan ODBCDirect), ya que ADO no admite por el momento definición de datos (bibliotecas DDL), usuarios, grupos y otras características. Sin embargo, probablemente podrá migrar desde ahora a ADO si utiliza DAO únicamente para aplicaciones cliente-servidor y no se basa en el motor de base de datos Jet ni utiliza bibliotecas DDL. Con el tiempo, Microsoft proporcionará un componente DDL de ADO para facilitar la migración de DAO a ADO y compatibilidad genérica con DDL para los proveedores de OLE DB. 6.4.2. OLEDB Es una interfaz de programación de aplicaciones (API) basada en COM para el acceso a datos. OLE DB admite el acceso a datos almacenados en cualquier formato (bases de datos, hojas de cálculo, archivos de texto, etc.) para el que haya un proveedor OLE DB disponible. Cada proveedor OLE DB expone datos en un tipo particular de origen de datos (como bases de datos de SQL Server, bases de datos de Microsoft Access u hojas de cálculo de Microsoft Excel). Estructura OLE DB permite separar los datos de la aplicación que los requiere. Esto se hizo así ya que diferentes aplicaciones requieren acceso a diferentes tipos y almacenes de datos, y no necesariamente desean conocer cómo tener acceso a cierta funcionalidad con métodos de tecnologías específicas. OLE DB está conceptualmente dividido en consumidores y proveedores; el consumidor es la aplicación que requiere acceso a los datos y el proveedor es el componente de software que expone una interfaz OLE DB a través del uso del Component Object Model (COM). Familia tecnológica OLEDB OLE DB hace parte de los “Componentes de Microsoft para Acceso a Datos” o Microsoft Data Access Components (MDAC); MDAC es un grupo de tecnologías de Microsoft que interactúan en conjunto como una infraestructura que brinda a los programadores una forma para desarrollar aplicaciones con acceso a casi cualquier almacén de datos. Los proveedorees OLE DB pueden ser creados para tener acceso a almacenes de datos que van desde simples archivos de texto y hojas de cálculo, hasta bases de datos complejas como Oracle, Microsoft SQL Server o Sybase ASE. Como las diferentes fuentes de datos pueden tener diferentes capacidades, es posible que los proveedores OLE DB no implementen todas las interfaces posibles para OLE DB. Las capacidades disponibles son implementadas a través del uso de objetos COM – el proveedor OLE DB asocia la funcionalidad de una tecnología a una interfaz COM particular. Microsoft califica la disponibilidad de una interfaz como “específica del proveedor”, ya que puede no ser aplicable dependiendo de la tecnología de base de datos involucrada. Adicionalmente, los proveedores pueden aumentar las capacidades de una fuente de datos – capacidades conocidas como servicios, usando la jerga de Microsoft.

88

Administración de Base de Datos con MySQL

Conexiones OLE DB Puede utilizar un proveedor OLE DB para comunicar con la base de datos. La creación de una conexión directa de base de datos OLE puede mejorar la velocidad de la conexión mediante la eliminación de la capa ODBC entre la aplicación Web y la base de datos Si no especifica un proveedor OLE DB para la base de datos, ASP utilizará el proveedor OLE DB predeterminado para controladores ODBC para comunicar con un controlador ODBC que, a su vez, comunica con la base de datos. OLE DB está disponible sólo con Windows NT, 2000 o XP. Existen distintos proveedores OLE DB para las distintas bases de datos. Puede obtener proveedores OLE DB para Microsoft Access y SQL Server descargando e instalando los paquetes Microsoft Data Access Components (MDAC) 2.5 y 2.7 en el equipo Windows que está ejecutando IIS. 6.4.3. ODBC ODBC es una abreviatura para la Conectividad abierta de base de datos, y es una interfaz para acceder a bases de datos a través de consultas SQL. El ODBC se puede utilizar como una herramienta de acceso a diferentes bases de datos tales como MS-Access, dBase, DB2, Excel y Texto. A través de estos Nivel Call Interface (CLI) de las especificaciones de SQL Access Group, el OBDC permite una forma neutral de acceso a los datos almacenados en las computadoras personales y diversas bases de datos. Fue creado por Microsoft y Simba Technologies. ODBC 1.0 fue liberado en septiembre de 1992, y eventualmente se convirtió en una parte del SQL estándar internacional en 1995. Microsoft originalmente enviado el ODBCs como un conjunto de DLLs y todavía hoy, el conjunto de buques con cada copia de Microsoft Windows. Hoy en día, más y más los sistemas operativos tales como UNIX y Apple están adoptando los ODBC. La fuerza de ODBC es que, al ofrecer un acceso universal de datos de interfaz, que permite a las empresas de software independientes y los partidos para no tener que aprender múltiples interfaces de programación de aplicaciones. Para simplemente, con ODBC, las aplicaciones pueden acceder simultáneamente, ver y modificar la base de datos de numerosas y muy diversas bases de datos. Esto se debe a que el ODBC “volver a los códigos de” la consultas SQL a fin de que pueda ser leído por las diferentes bases de datos. Sin embargo, el ODBC también tiene sus inconvenientes. Como la gestión de un gran número de clientes ODBC puede significar una inmensa cantidad de conductores y DLLs ejecutándose, esto podría dar lugar a un sistema de administración generales. Sin embargo, esta cuestión menor condujo a los usos adicionales de la tecnología de servidores ODBC (o el “Multi-Tier ODBC Drivers”) para aliviar la carga. Además, como los conductores son un elemento clave en ODBCs, algunos han planteado la cuestión de los nuevos conductores de ‘estabilidad, como a menudo muchos de ellos han demostrado tener errores en ellas. ¿Cómo se procesa ODBC? Para usar el ODBC, tres componentes son necesarios: cliente ODBC, el controlador ODBC, DBMS y un servidor (por ejemplo, Microsoft Access, SQL Server, Oracle, y FoxPro). En primer lugar, el cliente ODBC utilizará un comando (denominado “ODBC”) para interactuar (solicitante y / o envío de datos) con el servidor DBMS (back-end). Sin embargo, el DBMS servidor no entender el comando de la ODBC cliente aún, como el comando todavía no se ha procesado a través del controlador ODBC (front-end). Entonces, el controlador ODBC se decodificar el comando que puede ser procesado por el servidor ODBC y ser

89

Administración de Base de Datos con MySQL

enviados allí. El servidor ODBC entonces en contacto con el controlador ODBC que se encargará de traducir el producto final al cliente ODBC. 6.4.4. JDBC JDBC (Java DataBase Connectivity) es un API de Java que permite al programador ejecutar instrucciones en lenguaje estándar de acceso a Bases de Datos, SQL (Structured Query Language, lenguaje estructurado de consultas), que es un lenguaje de muy alto nivel que permite crear, examinar, manipular y gestionar Bases de Datos relacionales. Para que una aplicación pueda hacer operaciones en una Base de Datos, ha de tener una conexión con ella, que se establece a través de un driver, que convierte el lenguaje de alto nivel a sentencias de Base de Datos. Es decir, las tres acciones principales que realizará JDBC son las de establecer la conexión a una base de datos, ya sea remota o no; enviar sentencias SQL a esa base de datos y, en tercer lugar, procesar los resultados obtenidos de la base de datos. Conectividad JDBC Para la gente del mundo Windows, JDBC es para Java lo que ODBC es para Windows. Windows en general no sabe nada acerca de las bases de datos, pero define el estándar ODBC consistente en un conjunto de primitivas que cualquier driver o fuente ODBC debe ser capaz de entender y manipular. Los programadores que a su vez deseen escribir programas para manejar bases de datos genéricas en Windows utilizan las llamadas ODBC. Con JDBC ocurre exactamente lo mismo: JDBC es una especificación de un conjunto de clases y métodos de operación que permiten a cualquier programa Java acceder a sistemas de bases de datos de forma homogénea. Lógicamente, al igual que ODBC, la aplicación de Java debe tener acceso a un driver JDBC adecuado. Este driver es el que implementa la funcionalidad de todas las clases de acceso a datos y proporciona la comunicación entre el API JDBC y la base de datos real. La necesidad de JDBC, a pesar de la existencia de ODBC, viene dada porque ODBC es un interfaz escrito en lenguaje C, que, al no ser un lenguaje portable, haría que las aplicaciones Java también perdiesen la portabilidad. Y, además, ODBC tiene el inconveniente de que se ha de instalar manualmente en cada máquina; al contrario que los drivers JDBC, que al estar escritos en Java son automáticamente instalables, portables y seguros. 6.5. Herramientas de Migración de Datos El éxito en un proyecto de migración de datos dependerá en gran medida del nivel de comprensión que se llegue a alcanzar acerca del proceso y sus implicaciones. Conocer los retos que implica una iniciativa de este tipo es el primer paso. Entre los más importantes se encuentran los siguientes: 6.5.1. Migración de almacenamiento En un proyecto de este tipo no debería existir problema, siempre y cuando la aplicación sólo utilice interfaces generales para acceder a los datos. En la mayoría de los sistemas esto no es ningún inconveniente, aunque, cuando se trate de aplicaciones antiguas que se ejecutan en sistemas propietarios, sí podría serlo. En ese caso, la iniciativa se complicaría y sería preciso llevar a cabo las pruebas necesarias antes de liberar la solución en producción. Principalmente por dos motivos: ✓ El código fuente de la aplicación puede no estar disponible. ✓ Podría darse el caso de que el proveedor de la aplicación no continuase activo en el mercado.

90

Administración de Base de Datos con MySQL

6.5.2. Migración de la base de datos Se trata de una de las formas más sencillas de movimiento de datos, siempre y cuando la database se utilice como almacenamiento. Sin embargo, a pesar de la aparente simplicidad del proceso, pueden surgir contratiempos relacionados con: ✓ Tipos de datos no coincidentes (fecha, número, subregistros): en este caso habría que trabajar por mantener la integridad de los datos, pudiendo ser preciso el orientar la gestión a la modificación de algunas de las aplicaciones que utilizan la base de datos. ✓ Diferentes conjuntos de caracteres (codificaciones distintas en cada columna para una misma tabla): cuando esto suceda habrá que revisar a fondo las aplicaciones que utilizan la base de datos. Las herramientas ETL son muy adecuadas para la tarea de migrar datos de una base de datos a otra, estando su uso aún más indicado en proyectos en que existen pocas conexiones entre origen y destino. En los casos en que, además de ejercer la función de almacenamiento de datos, la base de datos represente también la lógica empresarial en forma de procedimientos almacenados y disparadores, realizar un estudio de viabilidad de la migración a la base de datos de destino, podría ser la acción más indicada. De esta forma, si se demostrase que la base de destino no admite algunas de las características, todavía se estaría a tiempo de implementar cambios en las aplicaciones o en el software middleware. 6.5.3. Migración de aplicaciones Al enfrentarse a una iniciativa de este tipo es imperativo el recurrir a un proceso ETL completo. Esto es así debido a que, incluso cuando las aplicaciones están diseñadas por el mismo proveedor, almacenan datos en formatos y estructuras significativamente diferentes. Esta particularidad complica la transferencia de datos. El paso de transformación, por ejemplo, es uno de los principales inconvenientes y, aunque apoyarse en una herramienta ETL otorga la ventaja de su conectividad, que la hace estar lista para usar con fuentes y destinos de datos dispares; las dificultades pueden aparecer al migrar datos de sistemas mainframe o aplicaciones usando determinadas formas de almacenamiento de datos, ya que: ✓ Los sistemas mainframe utilizan formatos basados en registros para almacenar datos que, aunque son sencillos de gestionar suelen incorporar optimizaciones. ✓ Las optimizaciones incluyen almacenamiento de números decimales codificados binarios, almacenamiento no estándar de valores de números positivos / negativos o almacenamiento de los subíndices mutuamente excluyentes dentro de un registro. Es decir, aspectos que complican la migración de datos. La forma de proceder sería llevando a cabo la extracción en el propio sistema fuente; para después convertir los datos en un formato imprimible que se pudiese analizar más tarde utilizando herramientas estándar. 6.5.4. Codificación de caracteres En este caso, la complejidad radica en el hecho de que la mayoría de los sistemas desarrollados en la plataforma basada en el PC utilizan codificación ASCII. Sin embargo, los sistemas mainframe se basan principalmente en la codificación EBCDIC que es incompatible con ASCII y la conversión es necesaria para mostrar los datos. Para poder superar este desafío hay que tener previsto al elegir herramientas ETL que éstas deben soportar las conversiones entre conjuntos de caracteres, incluyendo EBCDIC.

91

Administración de Base de Datos con MySQL

6.6. Demostración de Migración de Datos en el Gestor hacia Otros Gestores 1. Cree una fuente de datos y utilizando las herramientas propias del gestor migre los datos a otro gestor. En este caso, para hacer la demostración de migración de datos del gestor SQL Server a MySQL, para ello utilizaremos la base de datos “DBAFISI” como ejemplo de esta, la cual se necesitará la herramienta llamada “Full Converter Enterprise” con la cual se ejecutará una serie de pasos para lograr nuestro objetivo: 1. Ejecutamos la herramienta “Full Converter Enterprise” y creamos un “Nuevo Proyecto”. Luego seleccionamos el gestor de origen “SQL Server”, junto con la base de datos “DBAFISI”, como se muestra en la figura:

Figura 82. Selección de la base datos origen

92

Administración de Base de Datos con MySQL

2. Después de finalizar el paso 1, en este caso se selecciona el gestor de destino “MySQL”, autenticándose con el usuario y contraseña del propio gestor, además seleccionamos la base de datos donde se almacenará que esta con el nombre de “dbafisi”, como se muestra en la siguiente figura:

Figura 83. Selección de la base destino 3. Luego de ejecutar todo lo anterior hacemos clic en “Next”, lo cual nos llevara a otra ventana donde seleccionaremos las tablas a migrar, en nuestro caso seleccionamos todas las tablas y hacemos clic en “Next”, como se muestra en la siguiente figura:

Figura 84. Selección de las tablas de la base datos

93

Administración de Base de Datos con MySQL

4. En este paso hacemos clic en “Finish” para empezar el proceso de migración como se muestra en la siguiente figura:

Figura 85. Finalización de configuración de migración Una vez hecho todo lo anterior solo queda esperar a que se termine todo el proceso.

Figura 86. Conversión o migración de datos en proceso

94

Administración de Base de Datos con MySQL

5. Para garantizar que los datos fueron migrados correctamente, como último paso nos resta verificar, que los datos de la base de datos de origen sea la misma en nuestro gestor MySQL, ya sea utilizando cualquier sentencia mostrada a continuación (SELECT, UPDATE, INSERT, DELETE, ALTER, etc.). Al ejecutar el script “select count (*) from DetalleVentas;” en el gestor SQL Server, nos muestra como resultado las cifras de “2879675” datos contados.

Figura 87. Ejecutando consulta SELECT en el gestor SQL Server

95

Administración de Base de Datos con MySQL

De igual manera ejecutaremos el mismo script de la base de datos en nuestro servidor MySQL. Al ejecutar “select count (*) from DetallVentas;”, nos muestra como resultado las cifras de “2879675” datos contados.

Figura 88. Sentencia SELECT en el gestor MySQL

96

Administración de Base de Datos con MySQL

Referencias Bibliográficas Powerdata.es (2019), Definición de una migración de datos, recuperado (25 sep. 2019), https://blog.powerdata.es/el-valor-de-la-gestion-de-datos/bid/397387/qu-es-la-migraci-n-dedatos https://grupokorporate.com/los-cinco-tipos-de-fuentes-de-datos/ Powerdata.es (2019), Etapas básicas de una migración de datos, recuperado (25 sep. 2019), https://blog.powerdata.es/el-valor-de-la-gestion-de-datos/bid/353128/etapas-de-unamigraci-n-de-datos-el-lado-pr-ctico Wordpress.com (2008), Proveedores de acceso a datos, recuperado (27 sep. 2019), https://yovanypulido.wordpress.com/2008/08/26/acceso-a-datos/

97

Administración de Base de Datos con MySQL

CAPITULO VII Rendimiento de Base de Datos

98

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO VII ............................................................................................................................... 97 RENDIMIENTO DE BASE DE DATOS ...................................................................................... 99 7.1. Control de Concurrencia ..................................................................................................... 99 7.2. Optimización ......................................................................................................................... 99 7.2.1. Consultas ...................................................................................................................... 100 7.2.2. Heurística ..................................................................................................................... 100 7.2.3. Creación de Índices ..................................................................................................... 101 7.2.4. Plan de Ejecución de Consultas ................................................................................. 101 7.3. Estimación de Costos de Procesamiento de Consultas.................................................... 101 7.4. Balanceo de Carga.............................................................................................................. 102 7.5. Demostración del Rendimiento en el Gestor .................................................................... 102 Referencias Bibliográficas ............................................................................................................ 103

99

Administración de Base de Datos con MySQL

RENDIMIENTO DE BASE DE DATOS 7.1. Control de Concurrencia Según fdi.ucm.es (2019), los SGBD son sistemas concurrentes y admiten la ejecución concurrente de consultas. Ejemplo: Sistema de venta de billetes de avión. Por tanto, es necesario: ✓ Modelo de procesos concurrentes para admitir operaciones concurrentes que preserven la integridad de los datos. Según Guerrero.blogpost.com (2011) redacta que, además, el término concurrencia se refiere al hecho de que los DBMS (Sistemas de Administración de Bases de Datos) permiten que muchas transacciones accedan a una misma base de datos a la vez. Como bien es sabido, en un sistema de éstos se necesita algún tipo de mecanismo de control de concurrencia para asegurar que las transacciones concurrentes no interfieran entre sí El control de accesos concurrentes y específicamente de transacciones concurrentes es manejado por un módulo del DBMS llamado "scheduler". Es importante recordar que muchos de los datos de la base no se encuentran nada más en disco, sino también en los buffers de memoria, de ahí que el scheduler interactúa con ellos y en su defecto solicita la lectura de los datos del disco. Schuleder del DBMS El calendarizador crea agendas, secuencias ordenadas de las acciones tomadas por una o más transacciones. El siguiente ejemplo muestra 2 transacciones cuya única característica de consistencia es que A=B ya que ambas operaciones son iguales para ambos elementos. Por otro lado, sabemos que si las transacciones son ejecutadas aisladamente la consistencia se preservará. 7.2. Optimización Los factores que más suelen afectar al tiempo de carga global, son las imágenes en el frontend y el acceso a base de datos en el back-end. Hoy toca hablar de optimización de base de datos. La optimización del acceso a los datos es vital para el tiempo de carga de la página, debido a que suele ser el factor que más afecta al tiempo que tiene que esperar el navegador para recibir el HTML. Este tipo de optimización es probablemente la más compleja de todas, en primer lugar, porque depende de dos factores variables en el tiempo: por un lado, de cómo y de qué tipo son las consultas que se van a realizar y, por otro, de la carga de trabajo que tenga que soportar el servidor o servidores. Según Humanlevel.com (2019), si nos vamos a SGDB no relacionales o NoSQL, tenemos una gran variedad de tipos de modelo de datos: modelos clave/valor, orientados a grafos, columnares, multidimensionales, orientadas a objetos, etc. Pero el modelo de datos que más ha popularizado el término NoSQL, son las bases de datos orientadas a documentos, donde tenemos parejas clave/valor, donde el valor suele ser una estructura jerárquica. Muchos desarrolladores se tiran a la piscina al usar estos nuevos SGBD (MongoDb, Google BigTable, Apache, Cassandra), pensando en la velocidad que van a ganar, pero sin pensar en que esa velocidad que logran estos SGBD, la consiguen no implementando características ACID ni operaciones JOIN. Las primeras permiten no terminar con datos corruptos e inservibles, y al elegir un NoSQL, se supone que las operaciones JOIN no se van a necesitar nunca.

100

Administración de Base de Datos con MySQL

Lo que pasa en estos casos es que los requisitos del cliente cambian, ya sea durante el desarrollo o el mantenimiento, por lo que el esquema de la base de datos tiene que modificarse, dejando de ser el SGBD NoSQL una alternativa que se pueda ajustar al modelo de negocio, siendo al final el programador el que termina implementado en el código lo que hace el SGBD relacional, pero con código mucho más lento del que tendríamos con uno de estos SGBD. 7.2.1. Consultas Según el Dr. Víctor J. Sosa (2019), la optimización de consultas es el proceso de selección del plan de evaluación de las consultas más eficiente entre las estrategias disponibles para el procesamiento de una consulta dada. ✓ A través del álgebra relacional intenta hallar una expresión equivalente a la expresión dada. ✓ Elección de una estrategia detallada para el procesamiento de la consulta: • Selección del algoritmo que se usará para ejecutar una operación • Selección de los índices concretos que se van a emplear La diferencia en costo (en términos de tiempo de evaluación) entre una estrategia buena y una mala suele ser sustancial, por tanto, vale la pena la selección de una buena estrategia para el procesamiento de la consulta. Etapas en la generación de planes de evaluación de consultas: 1. Generación de expresiones lógicas equivalentes a la expresión dada. 2. Anotación de las expresiones resultantes en maneras alternativas de generar planes de evaluación de consultas alternativos. Estas etapas están entrelazadas en el optimizador de consultas y se ejecutan en ese orden consecutivamente. 7.2.2. Heurística Según Fing.edu.uy (2019). Basada en equivalencia de las expresiones del álgebra y ciertas estrategias básicas para limitar el tamaño de los resultados. Además, implica la aplicación de determinadas estrategias (heurísticas) y consultas al catálogo para tamaños de las relaciones para transformar el árbol original. ✓ Cambiar la consulta original por otra equivalente de forma de minimizar los resultados intermedios. ✓ Pueden existir varias alternativas. ✓ Se basa en aplicar equivalencias de los operadores del álgebra de forma que: Las selecciones y las proyecciones se apliquen lo antes posible. •

Las operaciones de selección y JOIN que son más restrictivas se apliquen antes que las demás. • Reglas para reducir los tamaños intermedios: - Cambiar las selecciones conjuntivas por una “cascada” de selecciones simples. - Mover las selecciones lo más abajo que se pueda en el árbol. ✓ Reacomodar las hojas del árbol de modo que las selecciones más restrictivas son ejecutadas antes, evitando productos cartesianos. ✓ Cambiar secuencias de selecciones y productos por JOIN. ✓ Mover las proyecciones lo más abajo posible en el árbol, agregando las proyecciones que sean necesarias.

101

Administración de Base de Datos con MySQL

7.2.3. Creación de Índices Según Ecured.cu (2019). Un índice es una estructura de datos definida sobre una columna de tabla (o varias) y que permite localizar de forma rápida las filas de la tabla en base a su contenido en la columna indexada además de permitir recuperar las filas de la tabla ordenadas por esa misma columna. Un índice simple está definido sobre una sola columna de la tabla mientras que un índice compuesto está formado por varias columnas de la misma tabla (tabla sobre la cual está definido el índice). Cuando se define un índice sobre una columna, los registros que se recuperen utilizando el índice aparecerán ordenados por el campo indexado. Los índices resuelven este problema tomando datos de una columna en su tabla y almacenándolos alfabéticamente en una ubicación separada llamada índice. 7.2.4. Plan de Ejecución de Consultas Según SqlShack (2015), en Planes de ejecución de consultas SQL, describimos los planes de ejecución de consultas en SQL Server y por qué son importantes para el análisis de desempeño Un plan de ejecución estimado es un plan de consultas SQL que es generado sin realmente correr la consulta (o procedimiento almacenado) para el cual el plan es creado. Está basado en una estimación de comportamiento esperado. Es útil para analizar cómo se comportaría una consulta sin realmente correrla. Esto es muy útil para propósitos de pruebas en ambientes donde el desempeño no debería ser afectado al correr el código real (por ejemplo, correr una sentencia SELECT con uniones complejas con tablas enormes), o cuando correr el código no es posible debido a los cambios en los datos que hace (por ejemplo, ejecutar un UPDATE). Su desventaja es que puede ser poco preciso en algunos escenarios. Un plan de ejecución real es el plan de consultas SQL que es generado después de que una consulta fuera ejecutada. Es más confiable, y está basado en la ejecución real, no estimados. También provee más información y estadísticas, por lo que es mucho más útil al resolver problemas. 7.3. Estimación de Costos de Procesamiento de Consultas ✓ Se basa en estimaciones de coste de las operaciones. ✓ Busca la estrategia de menor coste (puede NO ser la óptima). ✓ Es el enfoque más apropiado para consultas compiladas. ✓ En consultas interpretadas: conviene reducir el N.º de estrategias (puede llevar demasiado tiempo). Componentes del coste: ✓ Bloques transferidos: depende de las estructuras de acceso y de la colocación de los bloques (contiguos, mismo cilindro, dispersos). ✓ Ficheros intermedios generados. ✓ Cómputos en memoria sobre los ficheros intermedios: búsqueda, ordenación, fusión, cálculos. ✓ Comunicación: envío de la consulta y recepción del resultado coste principal: ✓ BD grandes: bloques transferidos. ✓ BD pequeños (entran en memoria): cómputos. ✓ BD distribuidos: comunicación.

102

Administración de Base de Datos con MySQL

7.4. Balanceo de Carga Según vadebits.com (2018), los tipos de balanceo para operaciones de consultas son: ✓ Solo Lectura: Este es el balanceo más sencillo dado que podemos disponer de múltiples bases de datos de lectura de una manera sencilla y balancear nuestras consultas sin demasiada dificultad, incluso si necesitamos hacerlo en diversas localizaciones geográficas. ✓ Escritura / Lectura: Implica diferenciar entre consultas de escritura y de lectura, enviando dichas consultas al servidor apropiado (master o Slave respectivamente). Si no necesitamos disponer de varios servidores master, este balanceo no resulta demasiado complicado, ahora bien, si necesitamos realizar esto en diversas localizaciones geográficas o con varios servidores master la cosa se complica. ✓ Solo Escritura: Este balanceo es más difícil de conseguir y su implementación puede resultar compleja puesto que implica múltiples servidores maestros, y muy cara si utilizamos soluciones comerciales (aunque obtendríamos funcionalidad adicional que conviene tener en cuenta). En realidad, no tendría mucho sentido balancear solo las operaciones de escritura (aunque imagino que habrá casos en los que una parte de una aplicación o micro servicio solo escriba datos) y dado que nos vamos a complicar la vida mejor hacerlo para lectura y escritura. Las diversas soluciones de las que disponemos se pueden aplicar a todos los casos mencionados, aunque hay que tener en cuenta que cada una de ellas tiene sus propios beneficios y limitaciones. Como ya he dicho, todo depende de lo que tu aplicación necesite y, como no, del dinero que tu o tu empresa esté dispuesta a gastarse puesto que tenemos desde soluciones gratuitas, a soluciones empresariales que nos ofrecen SLAS (Service Level Agreements) para solucionar nuestros problemas en tiempo récord. 7.5. Demostración del Rendimiento en el Gestor 1. Elaborar una base de datos con dos tablas(x) como mínimo y que estén relacionadas y que tengan un millón de registros, luego haga una consulta que involucre las tablas, ejecútelo y mida el tiempo de procesamiento, luego optimice la consulta y haga una comparación de los tiempos de procesamiento.

103

Administración de Base de Datos con MySQL

Referencias Bibliográficas Tamps.cinvestar.mx (2019), Optimización de consultas, recuperado (15 de oct. 2019), https://www.tamps.cinvestav.mx/~vjsosa/clases/bd/OptimizacionConsultas.pdf Humanlevel.com (2019), Optimización, recuperado (15 de oct.2019), https://www.humanlevel.com/articulos/desarrollo-web/optimizacion-de-base-de-datos.html Fing.edu.uy (2019), Optimización heurística, recuperado (15 de oct 2019), https://www.fing.edu.uy/tecnoinf/mvd/cursos/bd2/material/teo/bd2-teorico08.pdf Siteground.es (2019), Optimización de consultas, recuperado (18 de oct 2019), https://www.siteground.es/kb/optimizacion-mysql-usando-indexes/ Sqlshck.com (2015), Plan de ejecución de consultas, recuperado (18 de oct 2019), https://www.sqlshack.com/es/planes-de-ejecucion-de-consultas-sql-server-viendo-losplanes/ Vadebits.com (2018), Balanceo de carga, recuperado (19 de oct 2019), https://www.vadebits.com/mysql-balanceo-de-bases-de-datos/

104

Administración de Base de Datos con MySQL

CAPITULO VIII Encriptación o Cifrado de Datos

105

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO VIII ........................................................................................................................... 104 ENCRIPTACION O CIFRADO DE DATOS............................................................................. 106 8.1. Demostración de Encriptación en el Gestor..................................................................... 106 8.1.1. Password ...................................................................................................................... 106 8.1.2. Encriptación MD5 ....................................................................................................... 106 8.1.3. Encriptación SHA O SHA1 ........................................................................................ 107 8.1.4. Encriptación AES ........................................................................................................ 108 Referencias Bibliográficas ............................................................................................................ 111

106

Administración de Base de Datos con MySQL

ENCRIPTACION O CIFRADO DE DATOS 8.1. Demostración de Encriptación en el Gestor Según Solinget.com (2019). Todo buen administrador sabe que crear una tabla con contraseñas totalmente accesibles es un fallo de seguridad tremendo. Imaginemos por un momento que pasaría si un hacker consiguiese llegar hasta nuestra tabla usuarios, sacar un listado de las contraseñas o peor aún, modificarlas. Si este sistema guarda información sensible podría convertirse en un serio problema empresarial, por lo que la seguridad en cuanto a contraseñas siempre debe ser una premisa para nosotros. Por suerte, MySQL nos da diferentes herramientas para hacer nuestras contraseñas más seguras, vamos a enumerarlas desde la menos segura hasta la más segura de todas: 8.1.1. Password Esta función está presente desde hace unas cuantas versiones, pero sin embargo se ha demostrado que es fácilmente vulnerable por lo que no merece la pena explicarla. 1. Explique mediante el gestor los métodos de encriptación que soporta y como se aplica mediante ejemplos 8.1.2. Encriptación MD5 Para guardar una contraseña encriptada con MD5 necesitaremos una tabla con un campo de 32 caracteres, aunque se ha demostrado que el algoritmo MD5 puede ser vulnerado, la práctica es tan compleja que no merece la pena el esfuerzo, el algoritmo MD5 no puede ser revertido, es decir, no se pueden recuperar contraseñas de este sistema. Ejemplo de demostración en el Gestor MySQL 1. Se inserto el usuario “Edinson” con contraseña encriptada “MD5(‘ramos050599)” 2. Se inserto el usuario “Erick” con contraseña encriptada “MD5(erick1234)”

Figura 89. Inserción de usuarios con contraseña encriptada con MD5

107

Administración de Base de Datos con MySQL

Para demostrar que se ha https://md5online.es/cifrar-md5

encriptado

correctamente

visitamos

la

página:

Figura 90. Cifrado en página web MD5 8.1.3. Encriptación SHA O SHA1 La función SHA y SHA1 son sinónimos, por lo que hacen el mismo efecto, al igual que MD5 no puede ser revertido y este necesita un campo de 40 caracteres para su almacenamiento, es más seguro que MD5 ya que calcula el cheksum SHA de 160 bits de una cadena, mientras que MD5 la calcula de 128. Ejemplo de demostración en el gestor MySQL 1. Se inserto el usuario “Nelson” con contraseña encriptada “SHA(‘nelson1130)” 2. Se inserto el usuario “Jorge” con contraseña encriptada “SHA1 (jorge9977)”

Figura 91. Encriptación SHA y SHA1

108

Administración de Base de Datos con MySQL

8.1.4. Encriptación AES El algoritmo AES es el más completo y complejo, tiene posibilidad de revertirse y se utiliza con una llave privada, es decir, debemos proporcionar dicha llave para encriptar y desencriptar las contraseñas. Sería vulnerable en el caso de que alguien consiguiese violar nuestro código fuente y viera que llave estamos pasando a la cadena. Para almacenar estas contraseñas necesitamos que nuestro campo sea de tipo BLOB, ya que el resultado de la operación será un dato binario muy aleatorio. Al utilizar la función AES, debes de tener una versión de MySQL superior a la 4.0.2, ya que es cuando esta función fue agregada. Por lo tanto, ahora sabemos que la única manera (por ahora) de que nuestras contraseñas sean totalmente seguras, es utilizando la función AES, y asegurarse que nadie puede acceder a nuestro código fuente. Ejemplo de demostración en el Gestor MySQL Para poder utilizar la encriptación AES, se tuvo que proceder a implementar al menos un campo de la tabla de tipo de dato BLOB, para que de esta manera se pueda hacer la consulta. 1. Se inserto el usuario “Edinson” con contraseña encriptada “AES_ENCRYPT (‘ramos’, ‘admin’)” 2. Se inserto el usuario “Jorge” con contraseña encriptada “AES_ENCRYPT (‘jorge9977’,’admin’)”

Figura 92. Inserción de usuarios con AES_ENCRYPT

109

Administración de Base de Datos con MySQL

Para demostrar que se encripto correctamente damos clic derecho en dato BLOB, del usuario Edinson

Figura 93. AES_ENCRIPT en código binario.

Figura 94. AES_ENCRYPT en modo text.

110

Administración de Base de Datos con MySQL

3. Para poder desencriptar ejecutaremos sentencias SQL como por ejemplo SELECT.

Figura 95. Sentencias SQL para Desencriptar – AES_DECRYPT

111

Administración de Base de Datos con MySQL

Referencias Bibliográficas Solinget.com (2019), Encriptación de datos, recuperado (5 nov 2019), https://www.solingest.com/almacenar-contrasenas-en-mysql Mysql.conclase.net (2019), Solución al problema AES_DECRYPT, recuperado (5 nov 2019), http://mysql.conclase.net/curso/?sqlfun=AES_ENCRYPT

112

Administración de Base de Datos con MySQL

CAPITULO IX Disponibilidad en Base de Datos

113

Administración de Base de Datos con MySQL

ÍNDICE CAPITULO IX .............................................................................................................................. 112 DISPONIBILIDAD EN BASE DE DATOS ................................................................................ 114 9.1. Definición e Importancia de una Disponibilidad ............................................................. 114 9.2. Copia de Seguridad (Backups) de una Base de Datos ..................................................... 114 9.3. Técnicas de Recuperación de Datos para la Restauración de una base de datos corrupta a un estado previo libre de daños............................................................................................. 115 9.4. Alta Disponibilidad, Estrategias (Clustering, Replicación, Otros) ................................ 115 9.5. Demostración de las Herramientas de Disponibilidad en el Gestor. ............................. 117 Referencias Bibliográficas ............................................................................................................ 126

114

Administración de Base de Datos con MySQL

DISPONIBILIDAD EN BASE DE DATOS 9.1. Definición e Importancia de una Disponibilidad Según Powerdata.es (2019). La confidencialidad, la integridad y la disponibilidad de datos son factores claves a la hora de garantizar su seguridad. En lo que se refiere a esta última, el objetivo es posibilitar el acceso a un servicio o a determinados recursos, en este caso a los datos que hemos enmascarado. La disponibilidad de los datos en la empresa es muy importante ya que, si no están disponibles, las aplicaciones no pueden funcionar y la empresa pierde dinero. Según IBM.com (2019). Debe haber una base de datos una alta disponibilidad para asegurarse de que los datos estén disponibles si se produce una anomalía. Puede introducir una base de datos con funciones que se adapte a las necesidades de su organización, según el nivel de protección y los costes asociados. Un servidor de bases de datos puede fallar como resultado de cualquiera de los siguientes factores: ✓ ✓ ✓ ✓ ✓

Ambientales, como la temperatura Anomalía de hardware Error de software Interrupción conectividad de red Intervención de usuario

Diferentes configuraciones de bases de datos proporcionan migraciones tras error y posibilidades de protección del sistema. 9.2. Copia de Seguridad (Backups) de una Base de Datos Según techtarcher.com (2019). La copia de seguridad, también llamada respaldo o backup, se refiere a la copia de archivos físicos o virtuales o bases de datos a un sitio secundario para su preservación en caso de falla del equipo u otra catástrofe. El proceso de copia de seguridad de los datos es fundamental para un plan de recuperación de desastres (DRP) exitoso. Las empresas hacen una copia de seguridad (respaldo) de los datos que consideran vulnerables en caso de software defectuoso, corrupción de datos, falla de hardware, piratería maliciosa (hacking), error de usuario u otros eventos imprevistos. Las copias de seguridad capturan y sincronizan una instantánea de un punto en el tiempo que luego se usa para devolver los datos a su estado anterior. Las pruebas de copia de seguridad y recuperación examinan las prácticas y tecnologías de una organización para la seguridad y la replicación de datos. El objetivo es garantizar una recuperación de datos rápida y confiable en caso de que surja la necesidad. El proceso de recuperación de archivos de datos respaldados se conoce como restauración de archivos. Los términos copia de seguridad de datos y protección de datos a menudo se usan indistintamente, aunque la protección de datos abarca los objetivos más amplios de continuidad empresarial, seguridad de datos, administración del ciclo de vida de la información y prevención de malware y virus informáticos. Las mejores prácticas sugieren que se debe programar una copia de seguridad completa de los datos al menos una vez a la semana, a menudo durante los fines de semana o fuera del horario laboral. Para complementar las copias de seguridad completas semanales, las empresas generalmente programan una serie de tareas de respaldo de datos incrementales o diferenciales que solo realizan copias de los datos que han cambiado desde la última copia de seguridad completa.

115

Administración de Base de Datos con MySQL

9.3. Técnicas de Recuperación de Datos para la Restauración de una base de datos corrupta a un estado previo libre de daños. Según Apañados.es (2019). A veces, los datos pueden ser recuperados utilizando métodos y herramientas relativamente simples La recuperación de datos desde el hardware dañado físicamente puede implicar múltiples técnicas. Algunos daños puedes ser reparados mediante la sustitución de las piezas en el disco duro. Esto por sí solo puede hacer el disco utilizable, pero aún se puede presentar daño lógico. Se utiliza para recuperar todos los bits de lectura de la superficie un procedimiento especializado de imágenes de disco. Una vez que esta imagen se adquiere y se guarda en un soporte fiable, la imagen puede ser analizada de forma segura para buscar daños lógicos y posiblemente permitir que sea reconstruido la mayor parte del sistema de archivos original. Recuperación de hardware Un error común es que una placa de circuito impreso (PCB) dañada puede ser simplemente reemplazada durante los procedimientos de recuperación por una PCB idéntica de una unidad en buena salud. Aunque esto puede funcionar en raras circunstancias en unidades de discos duros fabricados antes de 2003, no va a funcionar en unidades más nuevas. Las tarjetas electrónicas de las unidades modernas suelen contener datos de adaptación específicos de la unidad, necesarios para acceder a las áreas del sistema, por lo que los componentes relacionados deben ser reprogramados (si es posible) o sin soldar transferidos entre dos placas electrónicas. Daño lógico El término "daño lógico" se refiere a situaciones en las que el error no es un problema en el hardware y requiere soluciones a nivel de software. En algunos casos, los datos de una unidad de disco duro pueden ser ilegibles debido a daños a la tabla de particiones o al sistema de archivos o a errores de medios (intermitentes). En la mayoría de estos casos, se pueden recuperar al menos una parte de los datos originales reparando la tabla de particiones dañada o el sistema de archivos utilizando software especializado de recuperación de datos como Testdisk. El software como el rescate del disco duro puede ver la imagen del medio a pesar de errores intermitentes, y los datos de imagen en bruto cuando hay tabla de particiones o daños en el sistema de archivos. Este tipo de recuperación de datos puede ser realizada por personas sin experiencia en unidades de hardware, ya que no requiere ningún equipo especial o el acceso físico a los platos. A veces, los datos pueden ser recuperados utilizando métodos y herramientas relativamente simples. Casos más graves pueden requerir la intervención de expertos, sobre todo si son irrecuperables partes de los archivos. La talla de datos es la recuperación de partes de archivos dañados usando el conocimiento de su estructura. 9.4. Alta Disponibilidad, Estrategias (Clustering, Replicación, Otros) Según Go.oracle.com (2019), el gestor MySQL utiliza InnoDB Cluster como herramienta para proporcionar la Alta Disponibilidad que le exigen sus usuarios. Además de desplegar y replicar los datos entre nodos y mientras sostiene una alta tolerancia frente a posibles fallos. La aplicación no requiere conocer nada acerca de los nodos: ni cuántos ni dónde. ✓ Alta disponibilidad • • •

Servicios siempre disponibles. Tolerancia a fallos. Redundancia y sistemas de remplazo.

116

Administración de Base de Datos con MySQL

✓ Replicación • • • • •

Replicar datos de un servidor MySQL (maestro) a otro (maestro/esclavo). Herramienta asincrónica Escalar soluciones Backup a nivel de esclavos Distribución de datos

✓ DRBD • •

Raid 1 a nivel de red Nodo primario/secundario

✓ Heartbeat • •

Migración de servicio más IP de nodo a otro Comunicación entre dos nodos

✓ Ruteando las consultas • • • •

Maestro: Insert, Update y Select Esclavo: Select Enlazados con la aplicación Transparente: MySQL Proxy

✓ Mejoras esperadas • • •

Replicación Master – Master en anillo Inclucion de un MySQL Heartbeat Autorrecuperación del relay log (CRASH)

117

Administración de Base de Datos con MySQL

9.5. Demostración de las Herramientas de Disponibilidad en el Gestor. 1. Hacer un ejemplo de cómo sacar una copia de seguridad y como restaurarlo, además de ciertas opciones de configuración de copias de seguridad propias de cada gestor. 1. Primero en nuestro gestor MySQL WorkBench, ubicamos el panel de navegación, donde tenemos dos opciones de vista (Admistration, Schemas), nos ubicaremos en la opción de Administration y luego ubicamos la vista Management y tendemos diferentes opciones incluidas Data Export y Data Import/Restore, pero hacemos clic en Data Export.

Figura 96. Panel de Navegación de Workbench

118

Administración de Base de Datos con MySQL

2. Después de hacer clic en Data Export, nos mostrara una ventana con las opciones para seleccionar que base de datos queremos restaurar, además la opción de objectos a exportar, como también la ruta de exportación llevara donde se guardara nuestro backup.

Figura 97. Interfaz para Export una copia de seguridad 3. Hacemos clic en Star Export y nos mostrara la ventana con el progreso de exportación y finalmente esperamos que termine de hacer la exportación.

Figura 98. Proceso de exportación de copia de seguridad.

119

Administración de Base de Datos con MySQL

4. Finalmente verificamos que nuestro backup se encuentra en la ruta especificada o en la ruta donde especificamos guardarla.

Figura 99. Ruta de exportación de la copia de seguridad Ahora veremos los pasos de como restaurar un backup en nuestro gestor MySQL 1. Primero hacemos clic en Data Import/Restore y nos mostrar una ventana con diferentes opciones de restauración y especificaremos la ruta donde se encuentra el archivo a restaurar y luego elegimos en que base de datos lo restauraremos sino crearemos una nueva.

Figura 100. Interfaz de Workbench para importar una copia de seguridad

120

Administración de Base de Datos con MySQL

2. Luego hacemos clic en Start Import, y a continuación nos mostrara la ventana de Proceso de Importación.

Figura 101. Proceso de importación de una copia de seguridad 3. Por último, nos ubicaremos en la parte de Schemas confirmando que nuestro backup se restauró correctamente.

Figura 102. Base de datos restaurada correctamente

121

Administración de Base de Datos con MySQL

2. Implemente una copia de seguridad automática (programada) a una cierta fecha y hora. Para implementar una copia de seguridad automáticamente seguiremos una serie de pasos para configurarlo. Para realizar backup automático de base de datos MySQL, lo más cómodo es crear una tarea con: 1. Creamos un archivo en el bloc de notas y lo guardamos como backup.bat que será el archivo ejecutable que hará el backup de la base de datos.

Figura 103. Creación del archivo bin con bloc de notas Este comando se conecta a la base de datos, crea una copia de todas las tablas y guarda el archivo añadiendo la fecha actual. Automatizar el Backup mediante el Programador de Tareas de Windows En Windows podemos encontrar el programador de tareas donde crearemos una tarea básica a la cual aplicaremos un nombre, una frecuencia de uso e iniciaríamos un programa donde le adjuntaríamos el archivo backup.bat que creamos anteriormente. De esta forma se haría el backup automáticamente con la frecuencia que queramos (diariamente, semanalmente, al iniciar el equipo, etc.). 1. Nos ubicamos en el icono de búsqueda y digitamos Programador de Tareas

Figura 104. Buscando la aplicación Programador de Tareas

122

Administración de Base de Datos con MySQL

2. Una vez en el Programador de tareas nos vamos a Crear tarea básica

Figura 105. Interfaz del programador de tareas 3. Se abrirá una ventana llamada “Asistente para crear tareas básicas”, aquí daremos el nombre a la tarea que queremos dejar programada con una pequeña descripción (este último es opcional).

123

Administración de Base de Datos con MySQL

Figura 106. Asignando nombre a nuestra tarea. 4. Seleccionamos cada cuando deseamos que se ejecute la tarea programada.

Figura 107. Desencadenador de tareas. 5. Elegimos la fecha de inicio y la hora que se ejecutara diariamente la tarea programada, si es para realizar backups de base de datos (nuestro caso) es recomendable que sea en un horario despejado.

Figura 108. Asignando fecha programada para realizar backups.

124

Administración de Base de Datos con MySQL

6. Ahora seleccionaremos la acción que va a realizar la tarea, en nuestro caso ejecutará un programa (Iniciar un programa).

Figura 109. Asignando acción a realizar del programador 7. En esta sección indicaremos la ruta donde se encuentra nuestro Script (archivo backup.bat).

125

Administración de Base de Datos con MySQL

Figura 110. Añadimos la ubicación del archivo.bat 8. Por último y para finalizar nos muestra un resumen de la tarea que acabamos de programar

Figura 111. Resumen del programador de tareas

126

Administración de Base de Datos con MySQL

Referencias Bibliográficas Powerdata.es (2019), Definición la importancia de la disponibilidad, recuperado (9 nov. 2019), https://blog.powerdata.es/el-valor-de-la-gestion-de-datos/disponibilidad-de-datos-en-eldata-masking https://www.ibm.com/support/knowledgecenter/es/SSALK7_7.5.1/com.ibm.mbs.doc/gp_hi ghavail/c_ctr_ha_for_databases.html Techtarcher.com (2019), Copias de seguridad, recuperado (9 nov. 2019), https://searchdatacenter.techtarget.com/es/definicion/Copia-de-seguridad-o-respaldo Apañados.es (2019), Técnicas de recuperación de datos, recuperado (9 nov 2019), https://www.xn--apaados-6za.es/tenemos-que-apanar-tecnologia.html/71282-tecnicasrecuperacion-datos-parte-2.html Go.oracle.com (2019), Alta disponibilidad de datos, recuperado (10 nov 2019), https://es.slideshare.net/denniscm20/alta-disponibilidad-con-mysql https://go.oracle.com/LP=80174?elqCampaignId=193342