Tema 1 v2.0: Bases de Datos (PDF)
Document Details
Uploaded by Deleted User
Tags
Summary
Este documento proporciona una introducción a los conceptos básicos de bases de datos, incluyendo su funcionamiento, tipos, y usos en diferentes contextos. Se centra en la comprensión fundamental de los sistemas de gestión de bases de datos (SGBD).
Full Transcript
**[1.- Introducción.]** ¿Te has preguntado alguna vez dónde y de qué manera se almacenan y gestionan los datos que utilizamos diariamente? Si pensamos en cualquier acción de nuestra vida cotidiana, o si analizamos la mayoría de los ámbitos de actividad, nos encontramos que la utilización de las bas...
**[1.- Introducción.]** ¿Te has preguntado alguna vez dónde y de qué manera se almacenan y gestionan los datos que utilizamos diariamente? Si pensamos en cualquier acción de nuestra vida cotidiana, o si analizamos la mayoría de los ámbitos de actividad, nos encontramos que la utilización de las bases de datos está ampliamente extendida. Éstas, y los datos contenidos en ellas, serán imprescindibles para llevar a cabo multitud de acciones. ¿Crees que no es para tanto? Piensa en las siguientes situaciones: - - - - - - - - - - - Suponemos que no es necesario que continuemos más para darnos cuenta de que casi todo lo que nos rodea, en alguna medida, está relacionado con los datos, su almacenamiento y su gestión. El gran volumen de datos que actualmente manejamos y sus innumerables posibilidades requieren de la existencia de técnicos perfectamente formados y capaces de trabajar con ellos. Este módulo profesional se centra en el estudio de las **Bases de Datos** y su uso en el desarrollo de aplicaciones. **[2.- Bases de datos.]** Antes de que se utilizaran las bases de datos, los ficheros permitían organizar y memorizar conjuntos de datos del mismo tipo o naturaleza con una determinada estructura, siendo un medio para el almacenamiento de los datos o resultados de una aplicación específica. Pero si las aplicaciones, al ser diseñadas, deben depender directamente de sus ficheros o archivos, se pierde independencia y surgen serios inconvenientes: como información duplicada, incoherencia de datos, fallos de seguridad, etc. Estos problemas debían ser solucionados, es cuando aparece el concepto de base de datos. Una base de datos permitirá reunir toda la información relacionada en un único sistema de almacenamiento, pudiendo cualquier aplicación utilizarla de manera independiente y ofreciendo una mejora en el tratamiento de la información, así como una evolución para el desarrollo de aplicaciones. La gestión de las bases de datos ha experimentado gran cantidad de cambios, partiendo de aplicaciones especializadas hasta llegar a convertirse en el núcleo de los entornos informáticos modernos. Con la llegada de Internet en los noventa, el número de usuarios de bases de datos creció exponencialmente, y aunque muchos de ellos no sean conscientes de ello, el acceso a dichas bases forma parte de la vida cotidiana de muchos de nosotros. Conocer los sistemas que gestionan las bases de datos, sus conceptos fundamentales, el diseño, lenguajes y la implementación de éstas, podemos considerarlo imprescindible para alguien que se está formando en el campo de la informática. **3.1.- Conceptos.** A finales de los setenta, la aparición de nuevas tecnologías de manejo de datos a través de los sistemas de bases de datos supuso un considerable cambio. Los sistemas basados en ficheros separados dieron paso a la utilización de sistemas gestores de bases de datos, que son sistemas software centralizados o distribuidos que ofrecen facilidades para la definición de bases de datos, selección de estructuras de datos y búsqueda de forma interactiva o mediante lenguajes de programación. Llegados a este punto, te preguntarás\... ¿Qué es una base de datos? **Base de datos:** Es una colección de datos relacionados lógicamente entre sí, con una definición y descripción comunes y que están estructurados de una determinada manera. Es un conjunto estructurado de datos que representa entidades y sus interrelaciones, almacenados con la mínima redundancia y posibilitando el acceso a ellos eficientemente por parte de varias aplicaciones y usuarios. La base de datos no sólo contiene los datos de la organización, también almacena una descripción de dichos datos. Esta descripción es lo que se denomina **metadatos**, se almacena en el **diccionario de datos o catálogo** y es lo que permite que exista **independencia de datos** lógica-física. Una base de datos constará de los siguientes elementos: - - - - Las ventajas fundamentales sobre el uso de base de datos se resumen a continuación: - - - - - - - - - - **[3.2.- Usos.]** Ya sabemos lo que es una base de datos y sus características principales, pero es necesario conocer quien las usa y para qué. **¿Quién utiliza las bases de datos?** Existen cuatro tipos de personas que pueden hacer uso de una base de datos: el administrador, los diseñadores de la base de datos, los programadores de aplicaciones y los usuarios finales. **¿Quién utiliza las bases de datos?** +-----------------------------------+-----------------------------------+ | **Tipo** | **Funciones y características** | +===================================+===================================+ | **El administrador** | Es la persona encargada de la | | | creación o implementación física | | | de la base de datos. Es quien | | | escoge los tipos de ficheros, los | | | índices que hay que crear, la | | | ubicación de éstos, etc. En | | | general, es quien toma las | | | decisiones relacionadas con el | | | funcionamiento físico del | | | almacenamiento de información. | | | Siempre teniendo en cuenta las | | | posibilidades del sistema de | | | información con el que trabaje. | | | Junto a estas tareas, el | | | administrador establecerá la | | | política de seguridad y de acceso | | | para garantizar el menor número | | | de problemas. | +-----------------------------------+-----------------------------------+ | **Los diseñadores** | Son las personas encargadas de | | | diseñar cómo será la base de | | | datos. Llevarán a cabo la | | | identificación de los datos, las | | | relaciones entre ellos, sus | | | restricciones, etc. Para ello han | | | de conocer a fondo los datos y | | | procesos a representar en la base | | | de datos. Si estamos hablando de | | | una empresa, será necesario que | | | conozcan las reglas de negocio en | | | la que esta se mueve. Para | | | obtener un buen resultado, el | | | diseñador de la base de datos | | | debe implicar en el proceso a | | | todos los usuarios de la base de | | | datos, tan pronto como sea | | | posible. | +-----------------------------------+-----------------------------------+ | **Los** | Una vez diseñada y construida la | | | base de datos, los programadores | | **programadores de aplicaciones** | se encargarán de implementar los | | | programas de aplicación que | | | servirán a los usuarios finales. | | | Estos programas de aplicación | | | ofrecerán la posibilidad de | | | realizar consultas de datos, | | | inserción, actualización o | | | eliminación de los mismos. Para | | | desarrollar estos programas se | | | utilizan lenguajes de tercera o | | | cuarta generación. | +-----------------------------------+-----------------------------------+ | **Los usuarios** | Son los clientes finales de la | | | base de datos. Al diseñar, | | **finales** | implementar y mantener la base de | | | datos se busca cumplir los | | | requisitos establecidos por el | | | cliente para la gestión de su | | | información. | +-----------------------------------+-----------------------------------+ **¿Para qué se utilizan las bases de datos?** Enumerar todos y cada uno de los campos donde se utilizan las bases de datos es complejo, aunque seguro que quedarán muchos en el tintero, a continuación se recopilan algunos de los ámbitos donde se aplican. - - - - - - - - - - - - - **[4.- Modelos de bases de datos.]** La clasificación tradicional de las bases de datos establece tres modelos de bases de datos: jerárquico, en red y relacional. En la actualidad el modelo de bases de datos más extendido es el relacional. Aunque, hay que tener en cuenta que los modelos noSQL están ganando presencia, especialmente en aplicaciones que requieren una escalabilidad horizontal, flexibilidad en la estructura de datos y alto rendimiento en el manejo de grandes volúmenes de información. En los siguientes epígrafes analizaremos cada uno de ellos, así como otros modelos de bases de datos existentes. **4.1.- Modelo jerárquico.** Cuando IBM creó su Sistema Administrador de Información o IMS, se establecieron las bases para que la gran mayoría de sistemas de gestión de información de los años setenta utilizaran el modelo jerárquico. También recibe el nombre de modelo en árbol, ya que utiliza una estructura en árbol invertido para la organización de los datos. La información se organiza con un jerarquía en la que la relación entre las entidades de este modelo siempre es del tipo padre/hijo. De tal manera que existen nodos que contienen atributos o campos y que se relacionarán con sus nodos hijos, pudiendo tener cada nodo más de un hijo, pero un nodo siempre tendrá un sólo padre. Los datos de este modelo se almacenan en estructuras lógicas llamadas segmentos. Los segmentos se relacionan entre sí utilizando arcos. La forma visual de este modelo es de árbol invertido, en la parte superior están los padres y en la inferior los hijos. Hoy en día, debido a sus limitaciones, el modelo jerárquico está en desuso. En el siguiente gráfico puedes observar la estructura de almacenamiento del modelo jerárquico. **4.2.- Modelo en red.** El modelo de datos en red aparece a mediados de los sesenta como respuesta a limitaciones del modelo jerárquico en cuanto a representación de relaciones más complejas. Podemos considerar a IDS (Integrated Data Store) de Bachman como el primer sistema de base de datos en red. Tras él se intentó crear un estándar de modelo de red por parte de CODASYL, siendo un modelo que tuvo gran aceptación a principios de los setenta. El modelo en red organiza la información en registros (también llamados nodos) y enlaces. En los registros se almacenan los datos, mientras que los enlaces permiten relacionar estos datos. Las bases de datos en red son parecidas a las jerárquicas sólo que en ellas puede haber más de un padre. En este modelo se pueden representar perfectamente cualquier tipo de relación entre los datos, pero hace muy complicado su manejo. Al no tener que duplicar la información se ahorra espacio de almacenamiento. El sistema de gestión de información basado en el modelo en red más popular es el sistema IDMS. ![](media/image2.png) **4.3- Modelo relacional.** Este modelo es posterior a los dos anteriores y fue desarrollado por Codd en 1970. Hoy en día las bases de datos relacionales son las más utilizadas. En el modelo relacional la base de datos es percibida por el usuario como un conjunto de tablas. Esta percepción es sólo a nivel lógico, ya que a nivel físico puede estar implementada mediante distintas estructuras de almacenamiento. El modelo relacional utiliza **tablas bidimensionales** (relaciones) para la representación lógica de los datos y las relaciones entre ellos. Cada relación (tabla) posee un nombre que es único y contiene un conjunto de columnas. Se llamará **registro, entidad o tuplas** a cada fila de la tabla y **campo o atributo** a cada columna de la tabla. A los conjuntos de valores que puede tomar un determinado atributo, se le denomina **dominio**. Una **clave** será un atributo o conjunto de atributos que identifique de forma única a una entidad. Las tablas deben cumplir una serie de requisitos: - - - - - - A continuación puedes observar cómo es una relación con sus entidades y atributos en el modelo relacional. El lenguaje habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. Durante su diseño, una base de datos relacional pasa por un proceso al que se conoce como normalización de una base de datos. **[4.4.- Modelo orientado a objetos.]** El modelo orientado a objetos define una base de datos en términos de **objetos**, sus propiedades y sus operaciones. Los objetos con la misma estructura y comportamiento pertenecen a una **clase**, y las clases se organizan en jerarquías. Las operaciones de cada clase se especifican en términos de procedimientos predefinidos denominados **métodos**. Algunos sistemas existentes en el mercado, basados en el modelo relacional, han sufrido evoluciones incorporando conceptos orientados a objetos. A estos modelos se les conoce como sistemas **objeto-relacionales**. El objetivo del modelo orientado a objetos es cubrir las limitaciones del modelo relacional. Gracias a este modelo se incorporan mejoras como la herencia entre tablas, los tipos definidos por el usuario, disparadores almacenables en la base de datos (triggers), soporte multimedia, etc. Los conceptos más importantes del paradigma de objetos que el modelo orientado a objetos incorpora son: - - - Desde la aparición de la programación orientada a objetos (POO u OOP) se empezó a pensar en bases de datos adaptadas a estos lenguajes. Este modelo es considerado como el fundamento de las bases de datos de tercera generación, siendo consideradas las bases de datos en red como la primera y las bases de datos relacionales como la segunda generación. Aunque no han reemplazado a las bases de datos relacionales, si son el tipo de base de datos que más está creciendo en los últimos años. **[4.5.- Otros modelos.]** Además de los modelos clásicos vistos hasta el momento, vamos a detallar a continuación las particularidades de otros modelos de bases de datos existentes y que, en algunos casos, son una evolución de los clásicos. a\. **Modelo Objeto-Relacional** Las bases de datos pertenecientes a este modelo, son un híbrido entre las bases del modelo relacional y el orientado a objetos. El mayor inconveniente de las bases de datos orientadas a objetos radica en los costes de la conversión de las bases de datos relacionales a bases de datos orientadas a objetos. En una base de datos objeto-relacional (BDOR) siempre se busca obtener lo mejor del modelo relacional, incorporando las mejoras ofrecidas por la orientación a objetos. En este modelo se siguen almacenando tuplas, aunque la estructura de las tuplas no está restringida sino que las relaciones pueden ser definidas en función de otras, que es lo que denominamos herencia directa. El estándar en el que se basa este modelo es SQL99. Este estándar ofrece la posibilidad de añadir a las bases de datos relacionales procedimientos almacenados de usuario, triggers, tipos definidos por el usuario, consultas recursivas, bases de datos OLAP, tipos LOB, \... Otra característica a destacar es la capacidad para incorporar funciones que tengan un código en algún lenguaje de programación como por ejemplo: SQL, Java, C, etc. La gran mayoría de las bases de datos relacionales clásicas de gran tamaño, como Oracle, SQL Server, etc., son objeto-relacionales. b\. **Modelo de bases de datos deductivas** En este modelo las bases de datos almacenan la información y permiten realizar deducciones a través de inferencias. Es decir, se derivan nuevas informaciones a partir de las que se han introducido explícitamente en la base de datos por parte del usuario. Las bases de datos deductivas son también llamadas bases de datos lógicas, al basarse en lógica matemática. Surgieron para contrarrestar las limitaciones del modelo relacional para la respuesta a consultas recursivas y la deducción de relaciones indirectas entre los datos almacenados. c\. **Bases de datos multidimensionales** Son bases de datos ideadas para desarrollar aplicaciones muy concretas. Básicamente almacena sus datos con varias dimensiones, es decir que en vez de un valor, encontramos varios dependiendo de los ejes definidos o una base de datos de estructura basada en dimensiones orientada a consultas complejas y alto rendimiento. En una base de datos multidimensional, la información se representa como matrices multidimensionales, cuadros de múltiples entradas o funciones de varias variables sobre conjuntos finitos. Cada una de estas matrices se denomina cubo. Eso facilita el manejo de grandes cantidades de datos dentro de empresas, dándole a esto una amplia aplicación dentro de varias áreas y diferentes campos del conocimiento humano. d\. **Bases de datos transaccionales** Son bases de datos caracterizadas por su velocidad para gestionar el intercambio de información, se utilizan sobre todo en sistemas bancarios, análisis de calidad y datos de producción industrial. Son bases de datos muy fiables, ya que en ellas cada una de las operaciones de inserción, actualización o borrado se realizan completamente o se descartan. **5.- Sistemas gestores de base de datos.** Para poder tratar la información contenida en las bases de datos se utilizan los sistemas gestores de bases de datos o SGBD, también llamados DBMS (DataBase Management System), que ofrecen un conjunto de programas que permiten acceder y gestionar dichos datos. El objetivo fundamental de los SGBD es proporcionar eficiencia y seguridad a la hora de recuperar o insertar información en las bases de datos. Estos sistemas están diseñados para la manipulación de grandes bloques de información. **Sistema Gestor de Base de Datos:** Conjunto coordinado de programas, procedimientos, lenguajes, etc., que suministra, tanto a los usuarios no informáticos, como a los analistas programadores, o al administrador, los medios necesarios para describir y manipular los datos contenidos en la base de datos, manteniendo su integridad, confidencialidad y seguridad. El SGBD permite a los usuarios la creación y el mantenimiento de una base de datos, facilitando la definición, construcción y manipulación de la información contenida en éstas. Definir una base de datos consistirá en especificar los tipos de datos, las estructuras y las restricciones que los datos han de cumplir a la hora de almacenarse en dicha base. Por otro lado, la construcción de la base será el proceso de almacenamiento de datos concretos en algún medio o soporte de almacenamiento que esté supervisado por el SGBD. Finalmente, la manipulación de la base de datos incluirá la posibilidad de realización de consultas para recuperar información específica, la actualización de los datos y la generación de informes a partir de su contenido. ![](media/image11.png) Las ventajas del uso de SGBD son: - - - - - - - - - - El SGBD interacciona con otros elementos software existentes en el sistema, concretamente con el sistema operativo (SO). Los datos almacenados de forma estructurada en la base de datos son utilizados indistintamente por otras aplicaciones, será el SGBD quien ofrecerá una serie de facilidades a éstas para el acceso y manipulación de la información, basándose en las funciones y métodos propios del sistema operativo. **[5.1.- Funciones.]** Un SGBD desarrolla tres funciones fundamentales como son las de descripción, manipulación y utilización de los datos. A continuación se detallan cada una de ellas. 1\. **Función de descripción o definición:** Permite al diseñador de la base de datos crear las estructuras apropiadas para integrar adecuadamente los datos. Esta función es la que permite definir las tres estructuras de la base de datos: Estructura interna, Estructura conceptual y Estructura externa. (Estos conceptos se verán más adelante en el epígrafe sobre arquitectura del SGBD). Esta función se realiza mediante el **lenguaje de descripción de datos** o **DDL**. Mediante ese lenguaje: se definen las estructuras de datos,se definen las relaciones entre los datos y se definen las reglas (restricciones) que han de cumplir los datos. Se especificarán las características de los datos a cada uno de los tres niveles. o **A nivel interno** (estructura interna), se ha de indicar el espacio de disco reservado para la base de datos, la longitud de los campos, su modo de representación (lenguaje para la definición de la estructura externa). o **A nivel conceptual** (estructura conceptual), se proporcionan herramientas para la definición de las entidades y su identificación, atributos de las mismas, interrelaciones entre ellas, restricciones de integridad, etc.; es decir, el esquema de la base de datos (lenguaje para la definición de estructura lógico global). o **A nivel externo** (estructura externa), se deben definir las vistas de los distintos usuarios a través del lenguaje para la definición de estructuras externas. Además, el SGBD se ocupará de la transformación de las estructuras externas orientadas a los usuarios a las estructuras conceptuales y de la relación de ésta y la estructura física. 2\. **Función de manipulación:** permite a los usuarios de la base buscar, añadir, suprimir o modificar los datos de la misma, siempre de acuerdo con las especificaciones y las normas de seguridad dictadas por el administrador. Se llevará a cabo por medio de un **lenguaje de manipulación de datos** (**DML**) que facilita los instrumentos necesarios para la realización de estas tareas. También se encarga de definir **la vista externa** de todos los usuarios de la base de datos o vistas parciales que cada usuario tiene de los datos definidos con el DDL. Por manipulación de datos entenderemos: - - - - 3. Y a través de qué lenguaje podremos desarrollar estas funciones sobre la base de datos? Lo haremos utilizando el **Lenguaje Estructurado de Consultas** (**SQL**: Structured Query Language). Este lenguaje proporciona sentencias para realizar operaciones de DDL, DML y DCL. SQL fue publicado por el ANSI en 1986 (American National Standard Institute) y ha ido evolucionando a lo largo del tiempo. Además, los SGBD suelen proporcionar otras herramientas que complementan a estos lenguajes como generadores de formularios, informes, interfaces gráficas, generadores de aplicaciones, etc. **[5.2.- Componentes.]** Una vez descritas las funciones que un SGBD debe llevar a cabo, imaginarás que un SGBD es un paquete de software complejo que ha de proporcionar servicios relacionados con el almacenamiento y la explotación de los datos de forma eficiente. Para ello, cuenta con una serie de componentes que se detallan a continuación: 1\. **Lenguajes de la base de datos.** Cualquier sistema gestor de base de datos ofrece la posibilidad de utilizar lenguajes e interfaces adecuadas para sus diferentes tipos de usuarios. A través de los lenguajes se pueden especificar los datos que componen la BD, su estructura, relaciones, reglas de integridad, control de acceso, características físicas y vistas externas de los usuarios. Los lenguajes del SGBD son: Lenguaje de Definición de los Datos (**DDL**), Lenguaje de Manejo de Datos (**DML**) y Lenguaje de Control de Datos (**DCL**). 2\. **El diccionario de datos.** Descripción de los datos almacenados. Se trata de información útil para los programadores de aplicaciones. Es el lugar donde se deposita la información sobre la totalidad de los datos que forman la base de datos. Contiene las características lógicas de las estructuras que almacenan los datos, su nombre, descripción, contenido y organización. En una base de datos relacional, el diccionario de datos aportará información sobre: - - - - - - 3\. **El gestor de la base de datos.** Es la parte de software encargada de garantizar el correcto, seguro, íntegro y eficiente acceso y almacenamiento de los datos. Este componente es el encargado de proporcionar una interfaz entre los datos almacenados y los programas de aplicación que los manejan. Es un intermediario entre el usuario y los datos. Es el encargado de garantizar la privacidad, seguridad e integridad de los datos, controlando los accesos concurrentes e interactuando con el sistema operativo. 4\. **Usuarios de la base de datos.** En los SGBD existen diferentes perfiles de usuario, cada uno de ellos con una serie de permisos sobre los objetos de la BD. Generalmente existirán: o El **administrador de la base de datos** o Database Administrator (DBA), que será la persona o conjunto de ellas encargadas de la función de administración de la base de datos. Tiene el control centralizado de la base de datos y es el responsable de su buen funcionamiento. Es el encargado de autorizar el acceso a la base de datos, de coordinar y vigilar su utilización y de adquirir los recursos software y hardware que sean necesarios. o Los **usuarios de la base de datos**, que serán diferentes usuarios de la BD con diferentes necesidades sobre los datos, así como diferentes accesos y privilegios. Podemos establecer la siguiente clasificación: ▪ Diseñadores. ▪ Operadores y personal de mantenimiento. ▪ Analistas y programadores de aplicaciones. ▪ Usuarios finales: ocasionales, simples, avanzados y autónomos. 5\. **Herramientas de la base de datos.** Son un conjunto de aplicaciones que permiten a los administradores la gestión de la base de datos, de los usuarios y permisos, generadores de formularios, informes, interfaces gráficas, generadores de aplicaciones, etc. **5.3.- Arquitectura.** Un SGBD cuenta con una arquitectura a través de la que se simplifica a los diferentes usuarios de la base de datos su labor. El objetivo fundamental es separar los programas de aplicación de la base de datos física. Encontrar un estándar para esta arquitectura no es una tarea sencilla, aunque los tres estándares que más importancia han cobrado en el campo de las bases de datos son ANSI/SPARC/X3, CODASYL y ODMG (éste sólo para las bases de datos orientadas a objetos). Tanto ANSI (EEUU), como ISO (Resto del mundo), son el referente en cuanto a estandarización de bases de datos, conformando un único modelo de bases de datos. La arquitectura propuesta proporciona tres niveles de abstracción: **nivel interno o físico, nivel lógico o conceptual y nivel externo o de visión del usuario**. A continuación se detallan las características de cada uno de ellos: - - - Para una base de datos, sólo existirá un único esquema interno, un único esquema conceptual y podrían existir varios esquemas externos definidos para uno o varios usuarios. Gracias a esta arquitectura se consigue la **independencia de datos** a dos niveles: - - En el siguiente gráfico se puede apreciar la estructura de la que estamos hablando: **5.4.- Tipos.** ¿Qué tipos de SGBD existen? Para responder a esta pregunta podemos realizar la siguiente clasificación, atendiendo a diferentes criterios: a\. El primer criterio que se suele utilizar es **por el modelo lógico en que se basan**. Actualmente, el modelo lógico que más se utiliza es el **relacional**. Los modelos en red y jerárquico han quedado obsoletos. Otro de los modelos que más extensión está teniendo es el modelo **orientado a objetos**. Por tanto, en esta primera clasificación tendremos: o Modelo Jerárquico. o Modelo de Red. o Modelo Relacional. o Modelo Orientado a Objetos. b\. El segundo criterio de clasificación se centra en el **número de usuarios** a los que da servicio el sistema: o **Monousuario**: sólo atienden a un usuario a la vez, y su principal uso se da en los ordenadores personales. o **Multiusuario**: entre los que se encuentran la mayor parte de los SGBD, atienden a varios usuarios al mismo tiempo. c\. El tercer criterio se basa en el **número de sitios en los que está distribuida la base de datos:** o **Centralizados:** sus datos se almacenan en un solo computador. Los SGBD centralizados pueden atender a varios usuarios, pero el SGBD y la base de datos en sí residen por completo en una sola máquina. o **Distribuidos (Homogéneos, Heterogéneos):** la base de datos real y el propio software del SGBD pueden estar distribuidos en varios sitios conectados por una red. Los sistemas homogéneos utilizan el mismo SGBD en múltiples sitios. Una tendencia reciente consiste en crear software para tener acceso a varias bases de datos autónomas preexistentes almacenadas en sistemas distribuidos heterogéneos. Esto da lugar a los SGBD federados o sistemas multibase de datos en los que los SGBD participantes tienen cierto grado de autonomía local. d\. **El cuarto criterio toma como referencia el coste**. Los sistemas gestores de bases de datos se dividen en comerciales y de código abierto según su precio. Los sistemas comerciales, como Oracle y Microsoft SQL Server, requieren licencias de pago y ofrecen soporte profesional y funciones avanzadas. En cambio, los sistemas de código abierto, como MySQL y PostgreSQL, son gratuitos, con soporte basado en la comunidad, pero requieren mayor conocimiento técnico. También existen modelos híbridos (freemium), como MongoDB Atlas, que ofrecen una versión básica gratuita y opciones avanzadas de pago para empresas que requieren escalabilidad y soporte adicional. La elección depende de las necesidades de soporte, presupuesto y escalabilidad. e\. El quinto, y último, criterio establece su clasificación **según el propósito**: o **Propósito General:** pueden ser utilizados para el tratamiento de cualquier tipo de base de datos y aplicación. o **Propósito Específico:** Cuando el rendimiento es fundamental, se puede diseñar y construir un software de propósito especial para una aplicación específica, y este sistema no sirve para otras aplicaciones. Muchos sistemas de reservas de líneas aéreas son de propósito especial y pertenecen a la categoría de **sistemas de procesamiento de transacciones en línea**, que deben atender un gran número de transacciones concurrentes sin imponer excesivos retrasos. **[7.- SGBD comerciales.]** [[https://db-engines.com/en/]](https://db-engines.com/en/) **[8.- Bases de datos distribuidas]** La necesidad de integrar información de varias fuentes y la evolución de las tecnologías de comunicaciones, han producido cambios muy importantes en los sistemas de bases de datos. La respuesta a estas nuevas necesidades y evoluciones se materializa en los sistemas de bases de datos distribuidas. **Base de datos distribuida** **(BDD):** es un conjunto de múltiples bases de datos lógicamente relacionadas las cuales se encuentran distribuidas entre diferentes nodos interconectados por una red de comunicaciones. **Sistema de bases de datos distribuida** **(SBDD):** es un sistema en el cual múltiples sitios de bases de datos están ligados por un sistema de comunicaciones, de tal forma que, un usuario en cualquier sitio puede acceder los datos en cualquier parte de la red exactamente como si los datos estuvieran almacenados en su sitio propio. **Sistema gestor de bases de datos distribuida (SGBDD):** es aquel que se encarga del manejo de la BD y proporciona un mecanismo de acceso que hace que la distribución sea transparente a los usuarios. El término transparente significa que la aplicación trabajaría, desde un punto de vista lógico, como si un solo SGBD ejecutado en una sola máquina, administrara esos datos. Comparativa entre un sistema centralizado y uno distribuido. +-----------------------------------+-----------------------------------+ | **Centralizado** | **Distribuido** | +===================================+===================================+ | Control centralizado: un solo DBA | Control jerárquico: DBA global y | | | DBA local | +-----------------------------------+-----------------------------------+ | Independencia de Datos: | Transparencia en la Distribución: | | Organización de los datos es | Localización de los datos es un | | transparente para el programador | aspecto adicional de | | | independencia de datos | +-----------------------------------+-----------------------------------+ | Reducción de redundancia: | Replicación de Datos: Copias | | | múltiples de datos que incrementa | | Una sola copia de datos que se | la localidad y la disponibilidad | | comparta | de datos | +-----------------------------------+-----------------------------------+ | Estructuras físicas complejas | Uso de optimización global para | | para accesos eficientes | reducir transferencia de datos | +-----------------------------------+-----------------------------------+ | Seguridad | Problemas de seguridad | | | intrínsecos | +-----------------------------------+-----------------------------------+ **Ejemplo de una base de datos distribuida** ![](media/image3.png) **Tipos de almacenamiento** **1. Réplica** El sistema conserva varias copias o réplicas idénticas de una tabla. Cada réplica se almacena en un nodo diferente. Ventajas: - - Inconveniente: Aumento de la sobrecarga en las actualizaciones: El sistema debe asegurar que todas las réplicas de la tabla sean consistentes. Cuando se realiza una actualización sobre una de las réplicas, los cambios deben propagarse a todas las réplicas de dicha tabla a lo largo del sistema distribuido. **2. Fragmentación** Existen tres tipos de fragmentación horizontal, la vertical y la mixta Con la fragmentación Horizontal una tabla T se divide en subconjuntos, T1, T2,\...Tn. Los fragmentos se definen a través de una operación de selección y su reconstrucción se realizará con una operación de unión de los fragmentos componentes. Cada fragmento se sitúa en un nodo. Ejemplo: Tabla original: ![](media/image7.png) Tablas segmentadas horizontalmente. Con la fragmentación vertical una tabla T se divide en subconjuntos, T1, T2, \...Tn. Los fragmentos se definen a través de una operación de proyección. Cada fragmento debe incluir la clave primaria de la tabla. Su reconstrucción se realizará con una operación de join de los fragmentos componentes, pueden existir fragmentos no disjuntos: combinación de fragmentación y replicación. ![](media/image5.png) La fragmentación mixta es una combinación de las dos anteriores. **3. Réplica y Fragmentación** Las técnicas de réplica y fragmentación se pueden aplicar sucesivamente a la misma relación de partida. Un fragmento se puede replicar y a su vez esa réplica ser fragmentada, para luego replicar alguno de esos fragmentos. **Ventajas y Desventajas de las Bases de Datos Distribuidas** Ventajas: - - - - - Desventajas: - - - - - - **[9.- Modelo NoSQL]** Las bases de datos NoSQL son sistemas de almacenamiento de información que no cumplen con el esquema Entidad-Relación. Tampoco utilizan una estructura de datos en forma de tabla donde se van almacenando los datos sino que para el almacenamiento hacen uso de otros formatos como clave-valor, mapeo de columnas o grafos, etc. ![NoSQL](media/image6.gif) Esta forma de almacenar la información ofrece ciertas ventajas sobre los modelos relaciones. Entre las **ventajas** más significativas podemos destacar - - - - Las principales **diferencias** que nos podemos encontrar entre los sistemas **NoSQL** y los sistemas **SQL** son: - - - - Dependiendo de la forma en la que se almacena la información, podemos encontrar varios tipos distintos de bases de datos NoSQL. Los **tipos** más utilizados son: a\. **Bases de datos clave-valor.** Son el modelo de bases de datos NoSQL más popular, además de ser la más sencilla en cuanto a funcionalidad. En este tipo de sistema, cada elemento está identificado por una llave única, lo que permite la recuperación de la información de forma muy rápida, información que habitualmente está almacenada como un objeto binario (BLOB). Se caracteriza por ser muy eficientes tanto para las lecturas como para las escrituras. Algunos ejemplos de este tipo son Cassandra, BigTable o HBase. b\. **Bases de datos documentales**. Este tipo almacena la información como un documento, generalmente utilizando para ello una estructura simple como JSON o XML y donde se utiliza una clave única para cada registro. Este tipo de implementación permite, además de realizar búsquedas por clave-valor, realizar consultas más avanzadas sobre el contenido del documento. Son las bases de datos NoSQL más versátiles. Se pueden utilizar en gran cantidad de proyectos, incluyendo muchos que tradicionalmente funcionarían sobre bases de datos relacionales. Algunos ejemplos de este tipo son MongoBD o CouchDB. c\. **Bases de datos en grafo.** En este tipo de bases de datos, la información se representa como nodos de un grafo y sus relaciones con las aristas del mismo, de manera que se puede hacer uso de la teoría de grafos para recorrerla. Este tipo de bases de datos ofrece una navegación más eficiente entre relaciones que en un modelo relacional. Algunos ejemplos de este tipo son Neo4j, InfoGrid o Virtuoso. Las bases de datos NoSQL **más utilizadas** actualmente serían: 1\. **Cassandra.** Se trata de una base de datos creada por Apache de tipo clave-valor. Dispone de un lenguaje propio para realizar consultas CQL (Cassandra Query Language). Cassandra es una aplicación Java por lo que puede correr en cualquier plataforma que cuente con la JVM. 2\. **Redis.** Se trata de una base de datos del tipo clave-valor. Se puede imaginar como un array gigante en memoria para almacenar datos, datos que pueden ser cadenas, hashes, conjuntos de datos o listas. 3\. **Mongo DB.** Se trata de una base de datos orientada a documentos, de esquema libre, es decir, que cada entrada puede tener un esquema de datos diferente que nada tenga que ver con el resto de registros almacenados. Es bastante rápido a la hora de ejecutar sus operaciones ya que está escrito en lenguaje C++. Es una de las bases de datos NoSQL favoritas por los desarrolladores. 4\. **CouchDB.** Se trata de un sistema creado por Apache y funciona en sistemas GNU/LINUX y OSX pero no así en Windows. Utiliza JavaScript como principal lenguaje de interacción. Permite la creación de vistas, que son el mecanismo que permite la combinación para retornar valores de varios documentos, es decir, CouchDB permite la realización de las operaciones JOIN típicas de SQL. **[10.- Big Data e Inteligencia de Negocios]** ### Big Data **Big Data** se refiere al manejo y análisis de grandes volúmenes de datos que no pueden ser procesados de manera eficiente con las herramientas tradicionales de bases de datos o procesamiento. Los datos pueden ser estructurados (tablas, bases de datos), semiestructurados (archivos JSON, XML) o no estructurados (imágenes, videos, correos electrónicos, registros de redes sociales, etc.). #### Características de Big Data (Las 3 Vs clásicas): 1. 2. 3. #### Otras características: - - #### Herramientas y Tecnologías: - - - #### Usos comunes de Big Data: - - - ### Inteligencia de Negocios (Business Intelligence, BI) La **Inteligencia de Negocios** (BI) es un conjunto de procesos, tecnologías y herramientas utilizadas para recolectar, analizar y presentar datos relevantes con el objetivo de apoyar la toma de decisiones empresariales. BI no solo se enfoca en recolectar datos, sino en convertir esos datos en información útil para el negocio. #### Componentes clave de BI: 1. 2. 3. 4. 5. #### Tipos de Análisis en BI: - - - - #### Herramientas comunes de BI: - - - - #### Aplicaciones de BI: - - - -