Bases de
datos
Sistema
de
Informaci
ón
Sistema de Información
Un Sistema de Información es un conjunto de elementos destinados al
tratamiento y administración de datos e información, organizados y
listos para su posterior uso, generados para cubrir una necesidad
(objetivo).
Sistema de Información
Esta definición de Sistema de Información abarca cualquier tipo de
sistema, tengan o no componentes informáticos o se apoyen en ellos.
En este curso sólo nos interesarán los Sistemas de Información de
carácter informático, más concretamente los que conocemos como
Sistemas Gestores de Bases de Datos (a partir de ahora SGBD), que
definiremos más adelante.
Sistema de Información
Hay que tener en cuenta que, dentro del campo de la informática,
existen muchos tipos de Sistemas de Información que no son SGBD. Por
ejemplo, cualquier aplicación informática que permite el tratamiento de
cantidades considerables de información para cualquier cometido
puede ser considerado un Sistema de Información. En cualquier aso, es
muy probable que cualquiera de estas aplicaciones (o Sistemas de
Información) utilicen un SGBD como soporte lógico de almacenamiento
de toda esa información.
Sistema de Información
Parte del presente curso consiste en el desarrollo de aplicaciones que
conectan con Bases de Datos para gestionar datos, por lo que de cierta
manera también vamos a crear nuestros propios Sistemas de
Información, apoyándonos en herramientas de desarrollo para crearlos
y en algún SGBD para dar soporte a nuestros datos
Unidad mínima de almacenamiento.
Conjunto de registros con una
estructura homogénea.
Múltiples formatos.
Ficheros
Aplicaciones para uno o varios
formatos.
Conjunto de ficheros interrelacionados
entre sí.
Creada por un SGBD, que también da
Base de
acceso y gestión.
Gran cantidad de información.
Datos Abstracción.
¿Necesito una base de
datos?
Sí No
Almacenamiento y consulta de gran Aplicación pequeña
volumen de datos.
Almacenamiento de pocos datos
Eficacia en el acceso a datos.
Consultas complejas.
¡Supertruco! El uso de una base de datos nos
evitará el diseño a medida de todo el sistema de
almacenamiento y gestión de datos.
Sistema
gestor de
bases de
Datos
SGBD
Un SGBD es una herramienta software, más o menos compleja, que
permite la creación y gestión de una Base de Dato. En el punto
anterior hemos visto que una Base de Datos estaba compuesta de
varios ficheros relacionados entre sí. El SGBD es la herramienta que se
encarga de organizar esos ficheros manteniendo la información siempre
accesible para el usuario de la forma más eficiente posible, tanto en
espacio como en velocidad de acceso.
SGBD
Cuando gestionamos una Base de Datos a través de un SGBD, estamos
añadiendo un nivel de abstracción puesto que “no nos enteramos”
exactamente de lo que ocurre con los datos, cómo se almacenan, dónde
se almacenan, cuánto ocupan, . . . puesto que es esta herramienta la
que se encarga de que la Base de Datos sea consistente, esté siempre
accesible, disponga de espacio en disco, y de otras muchas tareas que,
dependiendo del SGBD concreto, pueden ser más o menos complejas.
SGBD
Hay que tener en cuenta que actualmente existen diferentes tipos de
SGBD en cuanto al nivel de conocimientos técnicos que se requieren
para trabajar con ellos. Por citar un ejemplo, un SGBD como MySQL
nunca podrá ser utilizado por usuarios con escasos conocimientos
técnicos puesto que no está pensado como aplicación para el usuario
final, sino como SGBD de apoyo para otras aplicacionesque requieran
manejar grandes cantidades de datos (Sistemas de Información). Por
otro lado, Microsoft Access o LibreOffice Base son SGBD pensados para
un usuario menos técnico.
Caracterí
sticas
deseable
s
Características deseables
CRUD: El acrónimo CRUD hace referencia a las 4 operaciones básicas
que cualquier SGBD debería proporcionar: Create (crear), Read (leer),
Update (modificar), Delete (eliminar). Además, hay que tenerlas muy en
cuenta a la hora de diseñar correctamente nuestra Base de Datos,
puesto que la aplicación que la gestione deberá facilitar estas
operaciones de una forma correcta
Características deseables
Recuperación de la información: En cierta manera hace referencia a
la R de CRUD pero también es importante la forma en que esta
información se puede leer, de forma que se espera que cualquier
fragmento de información pueda ser recuperado, y además de
diferentes formas. Por ejemplo, deberíamos ser capaces de buscar a un
cliente determinado en nuestras Base de Datos haciendo referencia a
más de un criterio (DNI, apellidos, ciudad donde vive, . . . )
Características deseables
Consistencia: De todo SGBD se espera que los resultados de una
lectura o búsqueda sean consistentes de forma que si realizamos la
misma búsqueda dos veces obtengamos el mismo resultado (siempre y
cuando los datos no hayan sido modificados). Si otro usuario realiza la
misma búsqueda deberá también recibir la misma información. Es decir,
un mismo dato no puede tener más de un resultado posible.A este
respecto hay que tener en cuenta que un mal diseño en una Base de
Datos puede no devolver el mismo resultado para una misma
búsqueda.
Características deseables
Validez: El SGBD debe proporcionar mecanismos que permitan validar
la información que se registra en la Base de Datos. Por ejemplo, si
debemos indicar la fecha de un pedido en el campo de un formulario, es
de esperar que el SGBD sea capaz de verificar si el formato del dato
introducido es del tipo correcto.
Características deseables
Velocidad: Quizás es una de las características más importantes. La
información en un SGBD se tiene que poder crear, modificar, leer y
eliminar rápidamente. En este aspecto influye en gran medida el diseño
que se haya realizado de la Base de Datos. Un diseño pobre puede
incidir muy negativamente en la velocidad de acceso a los datos por
parte del [Link] es del tipo correcto.
Características deseables
Transacciones atómicas: Una transacción atómica consiste en
realizar una serie de acciones como si se tratara de una sola
operación, y sin interferir de ninguna manera en la correcta ejecución
de dichas acciones. Es muy importante tener en cuenta que dichas
transacciones deben ejecutarse completamente, o bien no ejecutar
ninguna de sus acciones, nunca deben ejecutarse a medias. Más
adelante, en este tema, se detallarán cómo deben funcionar estas
transacciones atómicas.
Características deseables
Persistencia y soporte para Backups: Toda la información almacenada
por el SGBD debe ser persistente. Una vez se haya realizado una operación, la
información no puede cambiar. De otra manera no podríamos “confiar” en
nuestra Base de Datos. Hay que tener en cuenta que existen diferentes
situaciones que pueden poner en peligro los datos. Supongamos que estamos
dando de alta a una serie de clientes y en el mismo momento en que terminamos
se va la luz. El SGBD tendrá que ser capaz de almacenar correctamente los datos
de todas aquellas operaciones que han sido confirmadas (y no hacerlo en
aquellas que no lo hayan sido).
Características deseables
Capacidad de extender sus características: Puede resultar muy
interesante la capacidad de extender las características del SGBD de
manera que a medida que pasa el tiempo podamos incorporar nuevas
características a la Base de Datos que allí tengamos almacenada. En
este caso también habrá que tener en cuenta el diseño de la Base de
Datos ya que solamente un buen diseño permitirá extender sus
capacidades sin comprometer el rendimiento.
Características deseables
Seguridad: Todo Sistema de Información debe proporcionar ciertos
mecanismos de seguridad que protejan la información que allí se
almacena. Éstos mecanismos pueden variar y siempre serán mayores
cuanto más sensible sea la información almacenada, pero al menos se
deberá contar con una correcta gestión de cuentas de usuario y
privilegios en cuanto a los accesos que los diferentes usuarios realizan
al SGBD para trabajar con la Base de Datos. Por supuesto, el buen uso
de esa gestión de privilegios será el que proporcione la seguridad
deseada a nuestros datos.
Funcione
s del
SGBD
Funciones
Crear y organizar la Base de Datos Esta herramienta se encarga de
la creación y gestión de la Base de Datos, abstrayendo a sus usuarios
de dónde y cómo se organiza internamente. El administrador de la Base
de Datos dispone de las herramientas necesarias para crear y organizar
las Base de Datos sin la necesidad de conocer la implementación de
todo lo demás.
Funciones
Control de acceso No todos los SGBD lo incorporan, pero la mayoría
dan soporte a un control en el acceso a la información mediante el
empleo de un sistema de cuentas de usuario y privilegios por el que el
administrador de la Base de Datos podrá decidir qué usuarios puede
realizar determinadas tareas sobre objetos determinados de la Base de
Datos. De esa manera se limita el acceso a la información más crítica y
se limitan las acciones que determinados usuarios pueden hacer sobre
determinados objetos.
Funciones
Evitar la redundancia e inconsistencia de los datos Quizás sea
una de las funciones más importantes que debe llevar a cabo cualquier
SGBD. La redundancia de datos se refiere a la necesidad de asegurar
que un dato no se encuentra duplicado en algún otro lugar de la Base
de Datos. Es un error muy común y a la vez muy peligroso puesto que
puede producir lo que se conoce como inconsistencia de datos que
tiene lugar cuando, habiendo redundancia, alguna de las copias
duplicadas no se actualiza correctamente y el mismo dato toma más de
un valor diferente.
Funciones
Evitar anomalías en el acceso concurrente Puesto que
normalmente varios usuarios intentarán acceder simultáneamente a la
misma Base de Datos, habrá que dar solución a los problemas que
pueda ocasionar la modificación simultánea de un mismo dato por más
de un usuario. Cualquier SGBD con soporte multiusuario deberá dar
soporte a esta característica.
Funciones - ACID
Garantizar la correcta ejecución de las transacciones
● Atomicidad (Atomicity): Se debe asegurar si la operación se ha llevado a
cabo o no. No puede existir un término medio
● Consistencia (Consistency): Todas las operaciones que empiezan a
ejecutarse deben asegurarse de que pueden terminar sin romper ninguna de
las reglas de integridad de la Base de Datos
● Aislamiento (Isolation): Si se ejecutan dos transacciones sobre los mismos
datos al mismo tiempo (operaciones concurrentes), deben ser
independientes y no deben generar ningún error
● Durabilidad (Durability): Una vez se realice la operación, ésta debe persistir
en el tiempo. Incluso ante un fallo del sistema, si la operación se realizó
correctamente no se podrá deshacer
Funciones
Respaldo y recuperación La gran mayoría de SGBD proporcionan
herramientas adicionales para el respaldo y la recuperación. Debe ser
posible realizar una copia de respaldo de toda la Base de Datos en
cualquier momento para su posterior recuperación en caso de fallo.
Compone
ntes de
un SGBD
Normalmente existe una separación clara entre los componentes
principales de la gran mayoría de SGBD. Lo más común es la separación
entre lado Cliente y lado Servidor (Arquitectura Cliente-Servidor),
aunque no todos los SGBD siguen esa arquitectura. La gran parte de la
funcionalidad la encontraremos en el lado del servidor, puesto que es
donde se almacenarán siempre los datos. El lado cliente es una
herramienta bastante simple que sirve de comunicación entre usuario y
lo que se conoce como el Motor (Engine) del SGBD, que forma la parte
servidor.
Si miramos dentro del motor de un SGBD, podemos encontrarnos los
siguiente componentes:
● Administrador de Almacenamiento: Controla el acceso a la información de
la Base de Datos en el disco. Se encarga tanto de los buffers como de los
archivos donde se almacenan todos los datos.
● Procesador de consultas: Se encarga de recibir las peticiones de consultas y
debe encontrar la manera óptima de realizarlas a través de lo que se conoce
como Plan de Ejecución. Emite órdenes al Administrador de Almacenamiento
puesto que es quién accede finalmente a los datos para proporcionarlos.
● Gestor de transacciones: Asegura que se mantenga la integridad de la Base
de Datos tras la ejecución de transacciones, sean o no fallidas.
Tipos
Relaciona
l
Relacional
Se ajustan al modelo relacional, que es actualmente el modelo de
Base de Datos más extendido. Es el modelo de datos más utilizado
actualmente, basado en el concepto de tablas y las relaciones entre
ellas como forma de relacionar la información entre sí.
Destacan Ms Access, Oracle, Microsoft SQL Server y MySQL como los
SGBD relacionales más extendidos actualmente.
Relacional
Relacional
Los SGBD relacionales proporcionan una serie de funcionalidades, entre las
que destacan las siguientes:
● Tipos de datos: Cada columna tiene un tipo de dato definido de manera que el
SGBD no permite almacenar valores de otro tipo en dicha columna
● Restricciones: Es posible definir restricciones que obliguen a cumplir una serie
de requisitos a los valores que se almacenen en una columna determinada
● Integridad referencial: En el momento de registrar algún nuevo dato que
deba estar relacionado con otro, el SGBD comprobará que el segundo existe
antes de permitir el registro. En caso contrario no lo permitirá
● Consultas complejas: Es posible realizar consultas muy complejas, incluso
aquellas que inicialmente no habían sido tenidas en cuenta durante el diseño de
la Base de Datos
Relacional
APROPIADAS NO APROPIADAS
● Es necesario realizar consultas muy ● Es necesario definir una topología
complejas entre diferentes tablas determinada para trabajar con la aplicación
● Es necesario validar la información correspondiente, tal y como podría ser una
entre tablas jerarquía o red. Para estos casos existen
● Se permite que un dato pueda tener tipos de SGBD específicos que proporcionan
cualquier número de valores mayor rendimiento
● Es necesario construir nuevas ● En muy contadas situaciones donde las
consultas que no habían sido necesidades de rendimiento son muy
planificadas cuando se diseñó la elevadas y las reglas a las que se someten
Base de Datos las Bases de Datos relacionales ralentizan el
funcionamiento global
XML
XML
XML es un lenguaje para almacenar información de forma jerárquica.
Es un lenguaje que no proporciona ninguna forma de crear, buscar,
modificar o validar información. Sin embargo, se usa ampliamente para
almacenar, transferir y recuperar datos jerárquicos y hay muchas
herramientas para trabajar con estos ficheros de una manera sencilla.
Además, es un lenguaje muy utilizado para el intercambio de
información entre aplicaciones remotas a través de Internet.
xml
XML
APROPIADO NO APROPIADO
● Los datos son jerárquicos ● Los datos no son jerárquicos
● Las herramientas XML proporcionan ● Es necesario realizar validaciones
las funcionalidades que necesitas complicadas
● Vas a utilizar aplicaciones software ● Es necesario relacionar de alguna
que entienden el formato XML manera la información
● La Base de Datos es muy grande
como para reescribir el fichero
completo cada vez que se realiza
algún cambio
Orientad
aa
objetos
Orientado a objetos
En este modelo todos los elementos de la Base de Datos se representan
como objetos y siguen el paradigma de la Programación Orientada a
Objetos. El objetivo de este tipo de Bases de Datos es el trabajo en
unión con algún lenguaje de programación del mismo paradigma. De
esa manera los objetos de la aplicación tienen una correspondencia
directa con los objetos en la Base de Datos, puesto que pueden usar el
mismo modelo de datos.
Orientado a objetos
APROPIADO NO APROPIADO
● La aplicación se está programando ● Es necesario comunicarse con
con algún lenguaje de programación herramientas externas para almacenar
orientado a objetos cierta información en otros modelos más
● No es necesario realizar consultas habituales como el relacional
muy complejas ● Es necesario realizar consultas complejas
● La aplicación no se va a programar con un
lenguaje orientado a objetos
● Es necesario realizar ciertas validaciones
que este tipo de bases de datos no
proporciona
Objeto-
relaciona
l
Objeto-Relacional
Aparecen como una extensión al modelo relacional, por lo que los datos
se almacenan en forma de tablas. Y además permiten la utilización de
ciertas características propias de la Programación Orientada a Objetos
(POO) como pueden ser la Herencia o el uso de tipos más complejos
como son las colecciones o los campos estructurados. Cabe destacar
PostgreSQL como SGBD objeto-relacional, que actualmente está
bastante extendido.
Objeto-Relacional
APROPIADO NO APROPIADO
● La arquitectura de la aplicación está ● Para el desarrollo de la aplicación no
orientada a objetos se va a utilizar un lenguaje orientado
● Es necesario realizar consultas a objetos
complejas de datos relacionados
entre sí
● Es necesario realizar validaciones de
datos
● En el equipo de trabajo se mantiene
una separación entre programadores
de la aplicación y la base de datos
NoSQL
NoSQL
Aparecen como un cambio de tendencia frente a los clásicos SGBD
relacionales. Su principal característica es que no emplean el lenguaje
SQL como principal lenguaje de consultas (de ahí su nombre, No only
SQL). Tampoco soportan operaciones JOIN como en los sistemas
relacionales y no suelen garantizar ACID.
NoSQL
Su principal característica es la escalabilidad horizontal. Es decir, el
rendimiento de la Base de Datos se mantiene a medida que se van
añadiendo nodos (equipos) al sistema. Esto comenzó a ser una necesidad
cuando las principales compañias de Internet (Google, Amazon, Twitter, . . .)
comenzaron a necesitar grandes sistemas que dieran respuesta en tiempo
real. Los clásicos SGBD relacionales no daban respuesta a sus necesidades,
puesto que emplean gran parte del tiempo en realizar las validaciones y
verificar la coherencia entre los datos. Los sistemas NoSQL restan
importancia a este aspecto por lo que permiten ofrecer un mayor
rendimiento al conjunto para determinados tipos y estructuras de datos.
NoSQL
APROPIADO SI
● Es necesario manejar grandes cantidades de datos
● Es necesario escalar (añadiendo nodos al sistema)
Otras
clasificac
iones
Clasificación según accesos
simultáneos soportados
Monousuario
Son aquellos SGBD que no permiten que más
Multiusuario
Permiten conexiones simultáneas con una
de un usuario pueda estar conectado con la misma Base de Datos. Tiene soporte para
Base de Datos al mismo tiempo. control de cuentas de usuario, y por tanto
Normalmente no soportan ningún tipo de incluyen todo el soporte para el control de
control de usuario por lo que la Base de Datos
concurrencia, propio de cualquier sistema
se reducirá a un simple fichero al que se
multiusuario. Algunos SGBD multiusuario
podrá acceder desde la aplicación como si de
son MySQL, PostgreSQL, Microsoft SQL
cualquier otro tipo de documento se tratara.
Server, Oracle, MongoDB y Cassandra.
Así, no soportan el control de concurrencia ni
cualquier otra característica propia de los
sistemas multiusuarios. Algunos SGBD
monousuario son Ms Access y LibreOffice
Base.
Clasificación según tamaño
SGBD Ligero
Se trata de pequeños SGBD (incluso < 1MByte de tamaño) que dan
soporte a algunas de las principales funciones de estas
herramientas, ideales para entornos donde no es necesario un gran
rendimient o bien no se dispone de gran potencia de cálculo
(dispositivos móviles). El más conocido en la actualiad es SQLite
Clasificación según tamaño
SGBD Ofimática
Algo más potentes que los SGBD considerados como ligeros, con
algunas funciones más, muy utilizados en Ofimática para pequeñas
Bases de Datos (normalmente algunos MBytes). Ms Access y
LibreOffice Base son dos ejemplos de esta categoría
Clasificación según tamaño
SGBD de alto rendimiento
Ideales para entornos dedicados a la gestión de datos o bien para
aplicaciones que manejan ya una gran cantidad de datos y
necesitan algunas funciones que otros SGBD no proporcionan,
como control de usuarios, concurrencia, soporte para
transacciones u otras operaciones. MySQL, Microsoft SQL Server,
Oracle y PostgreSQL son algunos ejemplos Otros SGBD de alto
rendimiento, aunque con algunas características diferentes a los
anteriores, son MongoDB y Cassandra.
Según la
localización
de los datos
Centralizadas
Son el tipo de Bases de Datos más común. Normalmente, en
grandes corporaciones, se dedica un único equipo para el
almacenamiento y gestión de los datos utilizando algún tipo de
SGBD. Toda la Base de Datos se encuentran ubicada lógica y
físicamente en ese equipo. Es la solución más habitual puesto que
normalmente es suficiente y además es mucho más sencilla de
implementar.
Centralizadas
centralizadas
Ventajas Desventajas
● Fácil implementación. Al tratarse ● En caso de fallo, al existir una sola
de una solución ampliamente ubicación física de la Base de Datos,
adoptada es más sencillo de éste afectará a todos los datos
implementar y más fácil actuar ante almacenados en ella
posibles fallos
● Diseño sencillo. Al tratarse de una
solución conocida, el diseño lógico es
también más sencillo de realizar
Distribuidas
Una Base de Datos distribuida es un conjunto de bases de datos
relacionadas lógicamente entre sí que se encuentran localizadas en
diferentes ubicaciones físicas. Puede tratarse de dos máquinas
conectadas entre sí mediante una LAN o bien a través de Internet.
Distribuidas
Como dichas Bases de Datos pueden realizar tareas de forma autónoma
o bien de forma distribuida. En el caso de las operaciones realizadas de
forma distribuida, el usuario de cualquiera de las dos (o más) máquinas
tendrá acceso a toda la información como si éstos estuvieran siendo
accedidos de forma local.
Distribuidas
Ventajas
● Es más barato crear una red de máquinas de bajo rendimiento
que disponer de una sola máquina muy potente
● En cuanto a la disponibilidad, un fallo en cualquiera de los nodos
no afecta al resto por lo que el resto de la Base de Datos seguirá
accesible
● Puesto que los datos se encuentran distribuidos, éstos pueden
ubicarse donde más interesa. Por ejemplo en el departamento
con el que tienen relación. Además, este departamento dispondrá
de la autonomía necesaria para controlar dicha información
Distribuidas
Desventajas
● Un sistema de Bases de Datos distribuida es complejo de poner en
marcha y mantener
● En cuanto a la seguridad, al disponer de varios nodos, se dispone
de varios sistemas diferentes que habrá que proteger
● Es un sistema bastante nuevo, por lo que existe poca experiencia
ante fallos poco comunes
● Al disponer de varios nodos es posible que se necesite más mano
de obra especializada en cada uno de ellos
Arquitect
ura de
una
aplicació
n
Una vez que hemos visto qué es un SGBD, una Base de Datos y los
diferentes tipos con los que nos podemos encontrar justo con sus
ventajas e inconvenientes, conviene echar un vistazo de una manera
más global para ver cuál es la posición de un SGBD y la Base de Datos
en el conjunto de una aplicación ya desarrollada.
Como ya se ha visto más arriba, muchos de los SGBD trabajan
siguiendo lo que se conoce como arquitectura cliente-servidor.
Siguiendo esta misma filosofía, existe la programación por capas, que
consiste en una arquitectura en la que el principal objetivo es la
separación de las diferentes capas lógicas de una aplicación
(presentación, negocio y datos). Por ello, la arquitectura más conocida
es la arquitectura de 3 capas, en la que la estructura de la aplicación se
separa en tres niveles. Aunque no siempre las 3 capas están separadas
físicamente, es conveniente que lo estén lógicamente.
● Capa de presentación Es la capa que ve el usuario. Presenta la
aplicación al usuario, le permite interactuar con el mismo y le
muestra la información que éste solicita. En definitiva es lo que se
conoce como interfaz de usuario.
● Capa de negocio En esta capa se encuentra toda la lógica de la
aplicación y será donde se realicen todos los procesos de
tratamiento de la información obtenida en la capa de datos y
cuyos resultados se muestran al usuario mediante la capa de
presentación.
● Capa de datos En esta capa residen los datos. En ella se
encuentran los SGBD y reciben peticiones para acceder o escribir
datos desde la capa de negocio.
En aplicaciones de tamaño medio es bastante habitual encontrar un
modelo lógico basado en 3 capas pero físicamente distribuido
solamente en 2. En estos casos lo habitual será que el usuario cargue la
capa de presentación en su propio equipo (ya sea ejecutando la
aplicación o cargando la web en su navegador) y que las capas de
negocio y datos se encuentren en otro equipo remoto (el servidor). A
medida que la aplicación se haga más exigente las capas de negocio y
datos pueden separarse en diferentes equipos (normalmente
físicamente más cerca) y según se exige un mayor rendimiento se
pueden añadir equipos a cualquiera de estas dos capas.