Teoría de base de datos
Ing. Karen Girón
Tema: Sistemas gestores de base de
datos
1. ¿Qué es un sistema gestor de base de datos (SGDB)?
R/ es un software que permite crear, administrar y manipular bases de
datos de manera eficiente y segura. Su función principal es facilitar la
gestión de datos, permitiendo almacenar, organizar, modificar, y
recuperar información de forma estructurada.
2. ¿Cuáles son las principales funciones de un SGBD?
R/ Almacenamiento y Organización: Permite almacenar grandes volúmenes
de datos organizados en tablas, vistas, índices, y otros componentes.
Manipulación de Datos: Proporciona herramientas para insertar, actualizar,
eliminar y consultar datos, usualmente a través de lenguajes de manipulación de
datos como SQL.
Seguridad y Control de Acceso: Incluye mecanismos para proteger los datos,
como la autenticación de usuarios, el control de acceso y el encriptado.
Mantenimiento de la Integridad de los Datos: Asegura la coherencia y validez
de los datos mediante restricciones y validaciones.
Gestión de Concurrencia y Transacciones: Controla el acceso simultáneo de
múltiples usuarios y asegura que las operaciones en la base de datos cumplan
con propiedades ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad).
Recuperación ante Fallos: Permite recuperar la base de datos a un estado
estable después de un fallo mediante copias de seguridad y logs de
transacciones.
3. ¿Qué diferencia a un SGBD de un sistema de almacenamiento tradicional?
R/ Estructura de Datos y Organización
• SGBD: Organiza los datos en una estructura específica, generalmente en
tablas con filas y columnas en bases de datos relacionales, o en
documentos, gráficos, entre otros, en bases de datos NoSQL. Esto
permite almacenar la información de manera lógica y relacionada.
• Sistema de Almacenamiento Tradicional: La información suele
guardarse en archivos de texto, hojas de cálculo u otros formatos sin una
estructura compleja de relaciones. No hay una organización automática
para relaciones complejas entre datos.
Acceso y Manipulación de Datos
• SGBD: Facilita la manipulación y consulta de datos mediante un lenguaje
de consulta (como SQL), permitiendo realizar operaciones complejas de
filtrado, ordenación, y agregación de manera eficiente.
• Sistema de Almacenamiento Tradicional: Carece de un lenguaje
estándar para consultar los datos. Las búsquedas o manipulaciones
deben realizarse manualmente o mediante programas externos, lo cual
puede ser lento y complicado para operaciones complejas.
Control de Acceso y Seguridad
• SGBD: Proporciona herramientas avanzadas de seguridad, como
autenticación, control de permisos, y encriptación de datos, lo que permite
definir quién tiene acceso a qué datos y qué operaciones pueden realizar.
• Sistema de Almacenamiento Tradicional: La seguridad depende del
sistema operativo y de las configuraciones de permisos de los archivos,
que suelen ser más limitadas y menos específicas que en un SGBD.
Integridad de los Datos
• SGBD: Mantiene la integridad mediante restricciones y reglas (como
claves primarias, claves foráneas y constraints), asegurando que los
datos sean consistentes y válidos en todo momento.
• Sistema de Almacenamiento Tradicional: No tiene mecanismos
automáticos de integridad de datos. Es fácil que ocurran duplicados o
inconsistencias si no se gestionan manualmente.
Control de Concurrencia y Transacciones
• SGBD: Soporta la concurrencia, es decir, el acceso simultáneo de
múltiples usuarios, y garantiza que las transacciones cumplan con las
propiedades ACID para asegurar la coherencia de los datos.
• Sistema de Almacenamiento Tradicional: No cuenta con soporte
integrado para la concurrencia avanzada. El acceso simultáneo puede
generar conflictos, como sobreescritura o pérdida de datos.
Recuperación ante Fallos
• SGBD: Implementa mecanismos de respaldo y recuperación que
permiten restaurar el sistema a un estado previo en caso de fallo o pérdida
de datos, mediante logs de transacciones y copias de seguridad.
• Sistema de Almacenamiento Tradicional: No tiene funciones
específicas para la recuperación de datos. Si un archivo se corrompe o se
pierde, es difícil recuperar los datos sin herramientas de respaldo externo.
Escalabilidad
• SGBD: Está diseñado para manejar grandes volúmenes de datos y puede
escalar horizontal o verticalmente para soportar un crecimiento en la
cantidad de datos y usuarios.
• Sistema de Almacenamiento Tradicional: No escala bien para grandes
volúmenes de datos ni para múltiples usuarios. A medida que aumenta el
volumen de datos, su eficiencia disminuye.
4. ¿Cuáles son los componentes de un sistema gestor de base de datos?
R/ Motor de Base de Datos, Gestor de Almacenamiento, Procesador de
Consultas,
Gestor de Concurrencia, Gestor de Transacciones, Sistema de Seguridad y
Control de Acceso, Administrador de Integridad de Datos, Sistema de
Recuperación, Interfaces de Usuario y Aplicación, Diccionario de Datos (o
Catálogo).
5. ¿Qué tipos de SGBD existen?
R/ GBD Relacionales (RDBMS)
• Basados en el modelo relacional, donde los datos se organizan en tablas
(o relaciones) que pueden estar vinculadas entre sí.
• Utilizan el lenguaje SQL para realizar consultas y manipulaciones de
datos.
• Ejemplos: MySQL, PostgreSQL, Oracle, Microsoft SQL Server.
2. SGBD No Relacionales (NoSQL)
• Diseñados para manejar grandes volúmenes de datos no estructurados o
semiestructurados, con flexibilidad para almacenar distintos tipos de
datos.
• No utilizan tablas como los sistemas relacionales y se dividen en varias
categorías:
o SGBD de Documentos: Almacenan datos en documentos
(generalmente en formato JSON o BSON), como MongoDB y
Couchbase.
o SGBD de Clave-Valor: Almacenan datos como pares de clave y
valor, como Redis y DynamoDB.
o SGBD de Grafos: Usados para modelar datos con relaciones
complejas, como Neo4j y Amazon Neptune.
o SGBD de Columnas: Almacenan datos en columnas en lugar de
filas, óptimos para análisis de grandes volúmenes de datos, como
Cassandra y HBase.
3. SGBD Orientados a Objetos (OODBMS)
• Basados en el modelo orientado a objetos, donde los datos se
almacenan en forma de objetos similares a los de la programación
orientada a objetos.
• Permiten almacenar objetos completos con sus atributos y métodos.
• Ejemplos: db4o, ObjectDB.
4. SGBD Jerárquicos
• Basados en un modelo jerárquico, donde los datos están organizados
en una estructura de árbol con relaciones padre-hijo.
• Se utilizan principalmente en aplicaciones que requieren datos
estructurados de manera jerárquica, como sistemas bancarios y de
telecomunicaciones.
• Ejemplo: IBM Information Management System (IMS).
5. SGBD de Redes (o en Red)
• Utilizan un modelo de red para almacenar datos, donde los elementos
pueden tener múltiples relaciones entre sí en una estructura de gráfico
complejo.
• Permiten representar relaciones de muchos-a-muchos, ofreciendo
flexibilidad en comparación con los modelos jerárquicos.
• Ejemplo: Integrated Data Store (IDS), TurboIMAGE.
6. SGBD de Almacén de Datos (Data Warehouse)
• Especializados en el almacenamiento y análisis de grandes
volúmenes de datos históricos.
• Diseñados para optimizar las consultas y el análisis de datos de empresas
y organizaciones.
• Ejemplos: Amazon Redshift, Snowflake, Google BigQuery.
7. SGBD Distribuidos
• Los datos están distribuidos en varios nodos o ubicaciones, lo que permite
alta disponibilidad y redundancia.
• Son ideales para sistemas que necesitan escalabilidad horizontal,
repartiendo los datos en múltiples servidores.
• Ejemplos: Apache Cassandra, Google Spanner.
8. SGBD en la Nube (Cloud Databases)
• Ofrecen servicios de bases de datos en la nube gestionados por
proveedores, permitiendo a las empresas escalar y gestionar datos sin
preocuparse por la infraestructura.
• Pueden ser relacionales o NoSQL, y se adaptan según la demanda.
• Ejemplos: Amazon RDS, Azure SQL Database, Google Cloud SQL.
9. SGBD Temporales
• Diseñados para almacenar datos que pueden variar en el tiempo,
permitiendo la gestión de datos históricos y actuales.
• Utilizan marcas de tiempo para registrar la validez y vigencia de los datos.
• Son útiles en aplicaciones financieras, de seguimiento de cambios y
auditorías.
10. SGBD en Memoria (In-Memory Databases)
• Almacenan los datos en la memoria RAM en lugar de en disco, lo que
permite una velocidad de acceso muy rápida.
• Se utilizan en aplicaciones que requieren acceso a datos en tiempo real.
• Ejemplos: Redis, SAP HANA.
6. ¿Cuáles son las principales capas de un sistema de base de datos?
Capa de Presentación o Interfaz de Usuario
• Proporciona las herramientas y interfaces para que los usuarios y
administradores puedan interactuar con el sistema de base de datos.
• Incluye interfaces gráficas, herramientas de administración, y editores de
consultas.
• Permite realizar consultas, insertar datos y visualizar resultados sin
necesidad de interactuar directamente con las capas internas.
2. Capa Lógica o de Procesamiento de Consultas
• Se encarga de analizar, optimizar y ejecutar las consultas SQL enviadas
por los usuarios.
• Componentes principales:
o Procesador de Consultas: Interpreta y convierte las consultas
SQL en un plan de ejecución que el sistema puede entender y
ejecutar.
o Optimizador de Consultas: Selecciona el plan de ejecución más
eficiente para la consulta, minimizando el tiempo de respuesta y el
consumo de recursos.
• Esta capa actúa como intermediaria entre la capa de presentación y la
capa de almacenamiento, asegurando que las consultas sean precisas y
eficientes.
3. Capa de Control de Transacciones y Concurrencia
• Administra las transacciones y garantiza que las operaciones realizadas
en la base de datos cumplan con las propiedades ACID (Atomicidad,
Consistencia, Aislamiento, Durabilidad).
• Controla el acceso concurrente a los datos, permitiendo que múltiples
usuarios puedan interactuar con la base de datos de forma segura.
• Implementa mecanismos de bloqueo y aislamiento de transacciones
para evitar problemas de concurrencia como condiciones de carrera,
inconsistencias o sobreescrituras de datos.
4. Capa de Seguridad y Control de Acceso
• Administra los permisos y políticas de acceso a los datos.
• Incluye mecanismos de autenticación y autorización, permitiendo
definir roles y permisos para usuarios y grupos.
• Implementa medidas de seguridad como el cifrado de datos y auditorías
para proteger la base de datos contra accesos no autorizados.
5. Capa de Gestión de Integridad de Datos
• Asegura que los datos almacenados en la base de datos cumplan con
reglas y restricciones de integridad, como las claves primarias, claves
foráneas y otras restricciones (constraints).
• Garantiza la consistencia y validez de los datos al aplicar
automáticamente estas reglas cada vez que se realiza una operación en
la base de datos.
6. Capa de Almacenamiento Físico o Gestión de Almacenamiento
• Controla cómo y dónde se almacenan los datos físicamente en el sistema
de archivos o en el hardware de almacenamiento.
• Gestiona los archivos de datos, índices y archivos de log, así como las
copias de seguridad de la base de datos.
• Organiza el almacenamiento para optimizar el rendimiento en la lectura y
escritura de datos.
7. Capa de Recuperación y Respaldo
• Asegura la disponibilidad y durabilidad de los datos en caso de fallos,
corrupciones o pérdida de información.
• Gestiona los logs de transacciones y los mecanismos de recuperación
para restaurar los datos a un estado consistente.
• Realiza y administra copias de seguridad de los datos, permitiendo la
recuperación en caso de desastres.
7. ¿Qué es el motor de base de datos y cuál es su función?
R/ es el núcleo o componente fundamental de un Sistema Gestor de Bases
de Datos (SGBD). Es el encargado de realizar las operaciones principales
sobre los datos, como almacenamiento, recuperación y manipulación. Se
encarga de procesar las consultas, gestionar las transacciones y mantener la
integridad y seguridad de los datos.
Funciones: Gestión de Consultas, Gestión de Transacciones, Control de
Concurrencia, Gestión de Almacenamiento y Recuperación de Datos,
Mantenimiento de la Integridad y Seguridad de los Datos, Recuperación ante
Fallos.
8. ¿Cuál es la diferencia entre un SGBD cliente-servidor y uno monolítico?
SGBD Cliente-Servidor
En un sistema cliente-servidor, el SGBD está dividido en dos componentes
principales: el servidor de base de datos y los clientes.
• Arquitectura distribuida
• Componentes separados:
o Servidor de base de datos: Es el núcleo del sistema, que se
encarga de ejecutar las consultas y operaciones en la base de
datos.
o Clientes: Son aplicaciones o interfaces que envían consultas al
servidor, solicitan datos y muestran los resultados al usuario.
• Concurrencia y escalabilidad
• Ejemplos: MySQL, PostgreSQL, Microsoft SQL Server y Oracle son
ejemplos comunes de SGBD cliente-servidor.
SGBD Monolítico
En un sistema monolítico, todas las funciones del SGBD están contenidas en un
solo programa o aplicación que generalmente se ejecuta en un único dispositivo.
• Arquitectura integrada
• Ejecución en un único entorno
• Limitaciones en concurrencia y escalabilidad
• Ejemplos: SQLite y Microsoft Access son ejemplos de SGBD monolíticos.
Son muy útiles para aplicaciones locales o móviles donde la simplicidad y
ligereza son importantes.
9. ¿Cuáles son los factores que afectan el rendimiento de un SGBD?
R/ Diseño de la Base de Datos
• Un diseño ineficiente de la base de datos (como la normalización excesiva
o insuficiente) puede impactar negativamente el rendimiento. Las
relaciones y estructuras de las tablas deben ser diseñadas de manera
óptima para evitar redundancias o la creación de demasiadas uniones
(joins) complejas.
Índices
• Los índices ayudan a mejorar la velocidad de acceso a los datos, pero el
uso excesivo o incorrecto de estos puede ralentizar las operaciones de
inserción, actualización y eliminación, ya que el sistema necesita
actualizar cada índice asociado.
• Índices bien diseñados y adecuados para las consultas comunes mejoran
el rendimiento, pero los índices innecesarios pueden ser una carga.
Tamaño de la Base de Datos
• A medida que el volumen de datos aumenta, el rendimiento puede
disminuir debido al tiempo requerido para buscar, insertar y actualizar
grandes cantidades de información.
• Las bases de datos grandes suelen requerir una mayor planificación en
cuanto a almacenamiento y administración para mantener la eficiencia.
Consultas Ineficientes
• Consultas mal estructuradas o complejas, especialmente aquellas que
usan demasiados joins, subconsultas o funciones en las cláusulas de
selección, pueden afectar significativamente el rendimiento.
• Optimizar consultas, utilizar índices adecuados y evitar operaciones
costosas son aspectos clave para mejorar la eficiencia.
Gestión de Transacciones y Bloqueos
• La administración inadecuada de transacciones y bloqueos puede causar
problemas de rendimiento, especialmente en entornos con múltiples
usuarios concurrentes.
• Las transacciones largas o los bloqueos prolongados pueden reducir la
disponibilidad y la velocidad de respuesta del sistema, generando
bloqueos o deadlocks en las consultas.
Hardware del Sistema
• La capacidad de procesamiento (CPU), memoria RAM, velocidad de disco
y rendimiento de la red (en sistemas distribuidos o cliente-servidor) son
factores que afectan directamente el rendimiento de un SGBD.
• Las bases de datos que requieren grandes volúmenes de
almacenamiento o altas tasas de transacciones se benefician de sistemas
con hardware potente y rápido.
Configuración del SGBD
• Cada SGBD tiene configuraciones específicas (como la cantidad de
memoria asignada al caché, el tamaño del buffer y la configuración de los
archivos de log) que deben optimizarse según las características de la
carga de trabajo.
• La configuración adecuada del tamaño de los buffers y la administración
de la memoria puede reducir significativamente los tiempos de respuesta.
Concurrencia y Acceso Simultáneo
• La cantidad de usuarios o aplicaciones accediendo simultáneamente a la
base de datos puede afectar su rendimiento debido a la necesidad de
gestionar múltiples transacciones y consultas a la vez.
• En sistemas de alto tráfico, el manejo de la concurrencia y los
mecanismos de aislamiento de transacciones son claves para evitar
problemas de rendimiento.
Red (en SGBD Cliente-Servidor o Distribuidos)
• En sistemas cliente-servidor o distribuidos, la velocidad y estabilidad de la
red afectan el tiempo de respuesta de las consultas y transacciones.
• Una red lenta o inestable puede causar demoras significativas en el
acceso a la base de datos, especialmente para aplicaciones que
requieren acceso en tiempo real.
Caché y Buffering
• El uso de caché y buffers permite que el SGBD almacene temporalmente
los datos más utilizados en la memoria, mejorando la velocidad de acceso.
• Si la configuración de caché es insuficiente o está mal optimizada, el
SGBD necesitará acceder con mayor frecuencia al disco, lo cual es más
lento y reduce el rendimiento.
Política de Backup y Recuperación
• Las operaciones de backup pueden afectar el rendimiento si se realizan
en momentos de alta carga, ya que consumen recursos adicionales.
• Es recomendable programar estas operaciones durante los períodos de
menor actividad para minimizar su impacto en el rendimiento.
Fragmentación de los Datos
• A medida que los datos se insertan, eliminan o actualizan, los archivos de
almacenamiento pueden fragmentarse, lo que genera un acceso más
lento.
• Realizar mantenimiento de la base de datos, como la desfragmentación o
reorganización de índices, ayuda a optimizar el acceso y la recuperación
de datos.
Estrategias para Mejorar el Rendimiento
Para optimizar el rendimiento de un SGBD, es importante:
• Diseñar adecuadamente la estructura de la base de datos.
• Optimizar las consultas y los índices.
• Configurar adecuadamente los parámetros de hardware y del sistema.
• Realizar mantenimiento regular y evitar la fragmentación.
• Supervisar y ajustar la concurrencia y los accesos simultáneos.