Lesión 1.2 · Tiempo de lectura: ~15 min
Existen muchos tipos de bases de datos, cada una optimizada para un tipo específico de datos, patrón de consulta o requerimiento de escalabilidad. En esta lección aprenderás sobre los principales modelos de bases de datos: relacional, clave-valor, documento, columna-ancha, gráfico, serie temporal y columnar, junto con sus diferencias clave, casos de uso típicos y ejemplos de sistemas reales.
Tipos de Bases de Datos: Relacional, NoSQL y Más
En la lección anterior, introdujimos la idea general de una base de datos y un SGBD. En la práctica, no todas las bases de datos están construidas de la misma manera. Diferentes tipos de bases de datos están optimizados para diferentes tipos de datos, patrones de consulta, requerimientos de escalabilidad y necesidades de consistencia.
También echaremos un vistazo más de cerca a las bases de datos relacionales, ya que seguirán siendo nuestro enfoque principal a lo largo de este curso.
¿Por Qué Existen Diferentes Tipos de Bases de Datos?
Ningún diseño de base de datos es perfecto para cada aplicación.
Por ejemplo:
- Un sistema bancario necesita una fuerte consistencia y transacciones confiables.
- Un sistema de caché necesita búsquedas de claves extremadamente rápidas.
- Una red social puede necesitar almacenamiento de documentos flexible y análisis de relaciones estilo gráfico.
- Una plataforma de análisis puede necesitar escanear miles de millones de valores de manera eficiente para informes.
Debido a que diferentes sistemas resuelven diferentes problemas, varios modelos de bases de datos han surgido con el tiempo.
Principales Tipos de Bases de Datos: Tabla Comparativa
Aquí hay una comparación rápida antes de examinar cada tipo en más detalle:
| Tipo | Modelo de Datos | Fortalezas | Casos de Uso Comunes | Ejemplos |
|---|---|---|---|---|
| Relacional | Tablas con filas y columnas | Fuerte consistencia, SQL, uniones, datos estructurados | Banca, ERP, CRM, comercio electrónico, informes | PostgreSQL, MySQL, MariaDB, SQLite, Oracle |
| Clave-Valor | Clave emparejada con valor | Búsquedas muy rápidas, escalado simple | Caché, sesiones, banderas de características, carritos de compras | Redis, Amazon DynamoDB, Riak |
| Documento | Documentos tipo JSON | Esquema flexible, datos anidados | Sistemas de gestión de contenido, perfiles de usuario, catálogos, aplicaciones web | MongoDB, Couchbase, Firestore |
| Columna-Ancha | Filas con columnas flexibles agrupadas por familias | Alto rendimiento de escritura, escalado horizontal | Registro de eventos, IoT, cargas de trabajo distribuidas a gran escala | Apache Cassandra, HBase, ScyllaDB |
| Gráfico | Nodos y aristas | Consultas con muchas relaciones | Redes sociales, detección de fraudes, motores de recomendación | Neo4j, Amazon Neptune, ArangoDB |
| Serie Temporal | Registros con marca de tiempo | Ingesta y agregación eficientes a lo largo del tiempo | Monitoreo, métricas, sensores, datos financieros | InfluxDB, TimescaleDB, OpenTSDB |
| Analítica Columnar | Datos almacenados por columna en lugar de por fila | Escaneos analíticos y agregación rápidos | BI, tableros, almacenamiento, OLAP | ClickHouse, DuckDB, Amazon Redshift, BigQuery |
| En Memoria | Datos almacenados principalmente en RAM | Latencia extremadamente baja | Caché, tablas de clasificación, contadores en tiempo real | Redis, Memcached, SAP HANA |
Bases de Datos Relacionales
Las bases de datos relacionales almacenan datos en tablas compuestas de filas y columnas. Las tablas pueden estar conectadas entre sí a través de relaciones, generalmente utilizando claves primarias y claves foráneas.
Este modelo es especialmente bueno cuando los datos están bien estructurados y cuando la corrección, consistencia y consultas complejas son importantes.
Propiedades Clave de las Bases de Datos Relacionales
1. Esquema estructurado
Las bases de datos relacionales suelen requerir un esquema claramente definido. Antes de almacenar datos, defines tablas, columnas, tipos de datos, restricciones y relaciones.
Esto hace que la estructura sea predecible y más fácil de validar.
2. Relaciones entre tablas
Una gran fortaleza de los sistemas relacionales es la capacidad de modelar relaciones de manera explícita.
Por ejemplo:
- Una tabla
clientespuede estar relacionada con una tablapedidos. - Una tabla
pedidospuede estar relacionada con una tablaitems_pedido.
Esto hace que las bases de datos relacionales sean adecuadas para sistemas empresariales donde las entidades están interconectadas.
3. Soporte para SQL
Las bases de datos relacionales se consultan comúnmente utilizando SQL (Lenguaje de Consulta Estructurado). SQL proporciona una forma estándar de filtrar, unir, agregar, ordenar y modificar datos estructurados.
4. Transacciones ACID
Las bases de datos relacionales son bien conocidas por soportar propiedades ACID:
- Atomicidad: Una transacción se completa completamente o falla completamente.
- Consistencia: Los datos deben permanecer válidos de acuerdo con las reglas definidas.
- Aislamiento: Las transacciones concurrentes no deben interferir incorrectamente entre sí.
- Durabilidad: Una vez comprometidos, los datos permanecen almacenados incluso después de fallos.
Estas propiedades son críticas en sistemas como banca, facturación, reservas y control de inventario.
5. Restricciones de integridad de datos
Las bases de datos relacionales pueden hacer cumplir reglas directamente en la capa de la base de datos, por ejemplo:
- claves primarias
- claves foráneas
- restricciones únicas
- restricciones
NOT NULL - restricciones de verificación
Estas características ayudan a prevenir datos inválidos o inconsistentes.
6. Uniones y reportes poderosos
Las bases de datos relacionales sobresalen cuando necesitas combinar información de múltiples tablas. Esta es una razón por la cual siguen siendo centrales para informes, análisis, finanzas, operaciones y muchos sistemas transaccionales.
7. Normalización y reducción de redundancia
El diseño relacional a menudo utiliza normalización, que significa organizar datos en tablas relacionadas para reducir la duplicación y mejorar la consistencia.
Por ejemplo, la información del cliente puede almacenarse una vez en una tabla clientes en lugar de repetirse en cada registro de pedido.
Casos de Uso Comunes para Bases de Datos Relacionales
Las bases de datos relacionales son generalmente la mejor opción cuando:
- los datos están estructurados y claramente definidos
- las relaciones entre entidades son importantes
- las transacciones deben ser confiables
- la consistencia importa más que la flexibilidad del esquema
- la aplicación necesita consultas complejas e informes
Ejemplos de Bases de Datos Relacionales
- PostgreSQL: Potente base de datos relacional de código abierto con fuerte soporte de estándares y características avanzadas.
- MySQL: Base de datos relacional popular, ampliamente utilizada en aplicaciones web.
- MariaDB: Fork desarrollado por la comunidad de MySQL.
- SQLite: Base de datos relacional ligera embebida almacenada en un solo archivo.
- Oracle Database: Base de datos relacional de nivel empresarial.
- Microsoft SQL Server: Base de datos relacional ampliamente utilizada en entornos empresariales.
Bases de Datos Clave-Valor
Las bases de datos clave-valor almacenan datos como un par simple: una clave y su valor asociado.
La clave funciona como un identificador único, y la base de datos recupera el valor directamente de esa clave. Este modelo es muy simple y muy rápido.
Diferencias Clave
- El acceso a los datos generalmente se basa en una sola clave en lugar de uniones complejas.
- La base de datos a menudo no comprende la estructura interna del valor.
- Está optimizada para lecturas y escrituras extremadamente rápidas.
Casos de Uso Típicos
- caché de resultados de consultas
- almacenamiento de sesiones de usuario
- carritos de compras
- banderas de características
- limitación de tasa
- tablas de clasificación y contadores
Ejemplos
- Redis
- Amazon DynamoDB
- Riak
Bases de Datos de Documentos
Las bases de datos de documentos almacenan datos como documentos, generalmente en un formato similar a JSON. Cada documento puede contener campos, arreglos y objetos anidados.
A diferencia de las bases de datos relacionales, no todos los documentos deben tener exactamente la misma estructura.
Diferencias Clave
- El esquema es flexible o semi-flexible.
- Los datos relacionados a menudo pueden almacenarse juntos en un solo documento.
- Son convenientes para aplicaciones donde la estructura evoluciona con frecuencia.
Casos de Uso Típicos
- sistemas de gestión de contenido
- catálogos de productos
- perfiles de usuario
- aplicaciones móviles y web
- sistemas de prototipado con requisitos cambiantes
Ejemplos
- MongoDB
- Couchbase
- Google Firestore
Bases de Datos de Columna-Ancha
Las bases de datos de columna-ancha, a veces llamadas bases de datos de familia de columnas, almacenan datos en filas, pero cada fila puede tener un conjunto de columnas muy grande y flexible. Están diseñadas para la distribución a través de muchos servidores y para un alto rendimiento de escritura.
Diferencias Clave
- El esquema es más flexible que en las bases de datos relacionales.
- Están optimizadas para almacenamiento distribuido a gran escala.
- Manejan conjuntos de datos masivos y cargas de escritura pesadas de manera eficiente.
- Normalmente no soportan uniones relacionales de la misma manera que las bases de datos SQL.
Casos de Uso Típicos
- registro de eventos
- telemetría de IoT
- sistemas de mensajería
- aplicaciones con alta carga de escritura
- sistemas distribuidos geográficamente
Ejemplos
- Apache Cassandra
- Apache HBase
- ScyllaDB
Bases de Datos Analíticas Columnar
Una base de datos columnar almacena valores de la misma columna juntos en el disco en lugar de almacenar una fila completa junta. Esto es diferente de una base de datos de columna-ancha.
El almacenamiento columnar es especialmente eficiente para consultas analíticas que leen unas pocas columnas de un conjunto de datos muy grande.
Diferencias Clave
- Optimizado para escanear y agregar grandes volúmenes de datos.
- Muy eficiente para informes y análisis.
- Generalmente menos adecuado para cargas de trabajo transaccionales pesadas con muchas actualizaciones de filas pequeñas.
Casos de Uso Típicos
- inteligencia empresarial
- tableros
- almacenamiento de datos
- informes analíticos
- análisis de registros a gran escala
Ejemplos
- ClickHouse
- DuckDB
- Amazon Redshift
- Google BigQuery
Bases de Datos Gráficas
Las bases de datos gráficas están diseñadas para datos donde las relaciones son la parte más importante del modelo. Almacenan nodos (entidades) y aristas (relaciones).
Diferencias Clave
- La navegación de relaciones es rápida y natural.
- Son ideales para consultar caminos, redes y datos conectados.
- A menudo son una mejor opción que las bases de datos relacionales para consultas de relaciones de múltiples saltos.
Casos de Uso Típicos
- redes sociales
- detección de fraudes
- sistemas de recomendación
- topología de redes
- gráficos de conocimiento
Ejemplos
- Neo4j
- Amazon Neptune
- ArangoDB
Bases de Datos de Series Temporales
Las bases de datos de series temporales están especializadas para puntos de datos asociados con el tiempo. Están optimizadas para altas tasas de ingestión, políticas de retención, compresión y agregación basada en el tiempo.
Diferencias Clave
- Cada registro está asociado con una marca de tiempo.
- Las consultas a menudo se centran en rangos como la última hora, día o mes.
- Proporcionan agregación eficiente a lo largo de ventanas de tiempo.
Casos de Uso Típicos
- monitoreo de servidores
- métricas de aplicaciones
- datos de sensores
- datos del mercado de valores
- mediciones industriales
Ejemplos
- InfluxDB
- TimescaleDB
- OpenTSDB
Bases de Datos en Memoria
Las bases de datos en memoria almacenan la mayoría o todos los datos en RAM en lugar de en disco. Esto las hace extremadamente rápidas, aunque la memoria es más cara que el almacenamiento en disco.
Algunas bases de datos en memoria se utilizan solo como cachés temporales, mientras que otras también pueden persistir datos en disco.
Casos de Uso Típicos
- caché
- almacenamiento de sesiones
- contadores en tiempo real
- tablas de clasificación de juegos
- sistemas de ultra-baja latencia
Ejemplos
- Redis
- Memcached
- SAP HANA
Cómo Elegir el Tipo de Base de Datos Adecuado
Al seleccionar una base de datos, haz preguntas como estas:
- ¿Los datos son altamente estructurados o flexibles?
- ¿Necesito transacciones ACID fuertes?
- ¿Realizaré uniones complejas?
- ¿Es la búsqueda de claves de baja latencia la máxima prioridad?
- ¿La carga de trabajo es transaccional o analítica?
- ¿El sistema escalará a través de muchos servidores?
- ¿Son las relaciones entre entidades centrales para la aplicación?
En muchos sistemas reales, las organizaciones utilizan más de un tipo de base de datos. Por ejemplo:
- una base de datos relacional para datos empresariales centrales
- Redis para caché
- una base de datos de documentos para contenido flexible
- un almacén columnar para análisis
Esto a menudo se llama persistencia poliglota.
Resumen: Diferencias Clave Entre Tipos de Bases de Datos
Las principales diferencias entre los tipos de bases de datos suelen involucrar:
- modelo de datos — tablas, documentos, pares clave-valor, gráficos o registros con marca de tiempo
- flexibilidad del esquema — estructura fija frente a flexible
- estilo de consulta — SQL, búsqueda de claves, consultas de documentos, recorrido de gráficos, análisis de ventanas de tiempo
- modelo de consistencia — fuertes garantías transaccionales frente a compensaciones centradas en la escalabilidad
- perfil de rendimiento — optimizado para transacciones, análisis, relaciones o acceso ultra-rápido
Conclusiones Clave:
- Existen diferentes tipos de bases de datos porque diferentes aplicaciones tienen diferentes requisitos técnicos y comerciales.
- Las bases de datos relacionales son mejor conocidas por esquemas estructurados, SQL, relaciones, restricciones de integridad y transacciones ACID.
- Las bases de datos clave-valor son excelentes para búsquedas rápidas y caché.
- Las bases de datos de documentos son útiles cuando la estructura de los datos es flexible o evoluciona con frecuencia.
- Las bases de datos de columna-ancha están construidas para cargas de trabajo distribuidas, a gran escala y con alta escritura.
- Las bases de datos analíticas columnar están optimizadas para informes y análisis a gran escala.
- Las bases de datos gráficas son ideales para datos con muchas relaciones.
- Las bases de datos de series temporales se especializan en métricas y eventos basados en el tiempo.
- Muchos sistemas modernos utilizan múltiples tipos de bases de datos juntos (persistencia poliglota).
Preguntas Frecuentes
¿Cuál es la diferencia entre bases de datos relacionales y NoSQL?
Las bases de datos relacionales utilizan un esquema basado en tablas fijo, hacen cumplir transacciones ACID y se consultan con SQL. Las bases de datos NoSQL son un término paraguas que abarca modelos de clave-valor, documento, columna-ancha y gráfico; intercambian algunas garantías de consistencia por flexibilidad de esquema o escalabilidad horizontal. Ninguna es universalmente mejor; la elección correcta depende de tus datos y carga de trabajo.
¿Cuándo debo usar una base de datos de documentos en lugar de una base de datos relacional?
Usa una base de datos de documentos cuando tus datos tienen una estructura anidada y variable de manera natural (por ejemplo, catálogos de productos con diferentes atributos por producto) y rara vez necesitas unir colecciones. Usa una base de datos relacional cuando los datos están estructurados, las entidades están interrelacionadas y necesitas transacciones confiables y consultas complejas de múltiples tablas.
¿Puede una sola aplicación usar múltiples tipos de bases de datos?
Sí, esto se llama persistencia poliglota. Es común en sistemas de producción: por ejemplo, PostgreSQL para datos transaccionales, Redis para caché y ClickHouse para análisis. Cada tipo de base de datos se utiliza donde mejor funciona.
Preguntas de Entrevista
¿Qué tipo de base de datos elegirías para un caso de uso dado y por qué?
Comienza desde la carga de trabajo y las restricciones: estructura de datos, necesidades de consistencia, patrones de consulta, objetivos de latencia y escala. Por ejemplo, elige una base de datos relacional para sistemas transaccionales con alta carga ACID, una base de datos de documentos para registros flexibles tipo JSON y una base de datos de series temporales para métricas con marca de tiempo y políticas de retención.
¿Cuáles son las ventajas y desventajas de un tipo de base de datos en comparación con otro?
Cada modelo es un compromiso. Las bases de datos relacionales proporcionan fuerte consistencia, uniones y herramientas SQL maduras, pero los cambios de esquema pueden ser más estrictos a gran escala. Los modelos NoSQL a menudo ofrecen mejor flexibilidad o escalabilidad horizontal, pero pueden limitar las uniones o requerir un diseño cuidadoso de la consistencia.
¿Puedes usar diferentes tipos de bases de datos en una aplicación?
Sí. Esto es persistencia poliglota: usar múltiples bases de datos, cada una para la carga de trabajo que maneja mejor. Un patrón común es PostgreSQL para transacciones centrales, Redis para caché y ClickHouse (o otro sistema columnar) para análisis.