lunes, 5 de noviembre de 2007

Caracterisiticas de las Bases de Datos

Hoy vamos a hablar un poco de las Bases de Datos, pero antes de nada vamos a aclarar un par de conceptos.
¿Qué es una base de datos?Una base de datos es una colección de archivos relacionados que almacenan una representación abstracta de un problema del mundo real así como los datos de información acerca del problema en cuestión.
¿Qué es un Sistema Gestor de Bases de Datos?Un Sistema Gestor de Bases de Datos (también llamado SGBD) es una colección de programas que proporcionan al usuario los medios necesarios para:
● Definir los datos a distintos niveles de abstracción.
● Manipular dichos datos y garantizar seguridad e integridad de los datos.
● Resumiendo, ofrecer los medios necesarios para garantizar TODAS las características de una base de datos.Algunos ejemplos de SGBD son Oracle, DB2, PostgreSQL, MySQL, MS SQL Server…

Antiguamente base de datos era asimilado como un conjunto de ficheros con gran redundancia y prácticamente sin garantía de integridad. Hoy, toda base de datos ha de cumplir una serie de características básicas: Versatilidad, desempeño, mínima redundancia, capacidad de acceso, simplicidad, integridad, seguridad y privacidad, afinación e interfaz temporal.
1. VersatilidadToda base de datos debe proporcionar versatilidad en la representación de la información gestionada, permitiendo:
● Visiones parciales del problema.
● Visiones globales desde distintos puntos de vista.
2. DesempeñoLas bases de datos actuales han de ser capaces de manejar los datos ágilmente, ofreciendo un tiempo de respuesta adecuado.
3. SimplicidadSiempre hemos de buscar la solución más simple y que mejor se adecue a nuestras necesidades.
4. Mínima redundanciaEsta es otra de las características básica de las buenas bases de datos. Aunque no es posible evitarla al 100%, sus consecuencias son terribles:
● A más redundancia, más posibilidades de inconsistencias: Se han de mantener copias del mismo dato.
● Se duplica la información, requiriendo más espacio del necesario.El problema de las redundancias es que evitarlas tiene un coste, por lo que se suele llegar a una solución de compromiso:– Si eliminarlas complica enormemente el problema se dejarán pero siempre habremos de codificar procedimientos encargados de garantizar su consistencia.
5. Capacidad de accesoToda base de datos debe garantizar una respuesta a todas las consultas de todos los usuarios que lo soliciten, de forma óptima. No sería de recibo que se perdiesen consultas ejecutadas, ya que se producirían problemas de integridad.
6. IntegridadDurante la manipulación de los datos pueden producirse todo tipo de problemas:
● Usuarios que manipulan los mismos datos al mismo tiempo: No se pueden destruir ni modificar los datos de forma anómala.
● Fallos en el hardware o errores del sistema: Se ha de asegurar que el sistema a pesar de estos errores los datos siguen siendo válidos.Por ello, se han de establecer los procedimientos necesarios que verifiquen que los valores de los datos se ajusten a los requerimientos y restricciones extraídos del análisis del problema
7. Seguridad y privacidadEsta es otra de las características importantes que debe cumplir una buena base de datos. Se ha de evitar que frente a fallos hardware existan fugas de datos y que existan accesos no autorizados que puedan romper la integridad de los datos.Además, se ha de garantizar que los datos sólo serán presentados a quien esté autorizado, ya que sino podríamos comprometer nuestro sistema. En gran parte, los sistemas de bases de datos ofrecen múltiples características que permiten securizarlas, aunque de serie suelen ser bastante inseguras y conviene “perder” un poco de tiempo (es una buena inversión a futuro) en personalizar un poco la configuración de seguridad.
8. AfinaciónHace referencia a cómo los datos se almacenan a nivel físico, ya que los sistemas de bases de datos han de ser flexibles, incluso permitiendo seleccionar diversos tipos de almacenamiento físico, ya que según el momento y el entorno, uno será mejor que otro. Por ejemplo, MySQL permite MyISAM, InnoDB, BDB… De todas formas, un buen gestor de bases de datos debe facilitar el paso de un tipo a otro.
9. Interfaz temporalEsta es una característica que a veces puede parecer obvia, pero no lo es. Una buena Base de Datos debe estar abierta a cambios, de forma que, por ejemplo, sea fácil cambiar la versión (mayor o menor) del sistema de base dedatos sin que se haya que cambiar nada en los datos. El cambio a una versión mayor la suelen cumplir la mayoría de gestores de bases de datos (compatibilidad con versiones anteriores), pero el cambio a una versión menos ya no suele estar soportado por los distintos gestores.
Figura 1: Ejemplo de diseño de Base de datos
Las visiones de los datos
Este esto de los conceptos importantes para entender que es una base de datos. Según el rol que se desempeñe dentro del sistema de base de datos tendremos 3 niveles de abstracción:
Visiones externas de los datos. Es la visión de la Base de Datos que tendrán los usuarios proporcionadas por los procedimientos o programas clientes.
Visión conceptual de los datos. Es la visión de la Base de Datos que representa el problema tal y como se ve en el mundo real, es la visión que normalmente tienen los diseñadores de bases de datos.
Visión física de los datos. Es la visión de la Base de Datos que tendrá el administrador de sistema, que tiene que preocuparse de:
● El formato utilizado para almacenar los datos en disco
● Las posibles replicaciones o distribución de los datos, etc…
● Tamaño en disco de los datos para determinar incluso el hardware más adecuado…
Gracias a la abstracción de estas 3 visiones, se debería garantizar dentro de lo posible, la independencia de los datos entre niveles, permitiéndonos cambiar el almacenamiento físico sin afectar ni a la organización conceptual ni a los programas clientes (visión externa). De la misma forma, si cambiamos la visión conceptual y no debería cambiar nada más (si hay nuevos objetos se tendrán que reflejar). También, permite que cambiemos las visiones externas sin afectar al resto, es decir que si cambiamos el lenguaje de programación de la aplicación cliente, o su GUI o directamente se usa otra aplicación, no afecta para nada al contenido de la base de datos.

No hay comentarios: