8 min

Tipos de bases de datos: relacional, columnar, documental, grafos y más

Compara los principales tipos de bases de datos — relacionales, columnar, documental, de grafos, vectoriales, clave-valor y más — con casos de uso, compensaciones y consejos para elegir bien.

Tipos de bases de datos: relacional, columnar, documental, grafos y más

Qué significa realmente “tipos de bases de datos"

Un “tipo de base de datos” no es solo una etiqueta: es un atajo para describir cómo un sistema almacena datos, cómo lo consultas y para qué está optimizado. Esa elección afecta directamente a la velocidad (qué es rápido vs. lento), al coste (hardware o gasto en la nube) y a las capacidades (transacciones, analítica, búsqueda, replicación y más).

Por qué importa el “tipo”

Diferentes tipos de bases de datos hacen distintos compromisos:

  • Una base de datos relacional es ideal cuando tus datos están estructurados y necesitas transacciones confiables.
  • Una base de datos columnar destaca cuando escaneas muchas filas para responder preguntas analíticas.
  • Una base de datos documental puede moverse más rápido cuando la forma de los datos de tu app cambia a menudo.
  • Una base de datos de grafos está pensada para datos con muchas relaciones.
  • Una base de datos vectorial se centra en la “similitud” más que en coincidencias exactas.

Esas decisiones de diseño influyen en:

  • Patrones de consulta: ¿muchas búsquedas pequeñas, joins complejos o escaneos analíticos grandes?
  • Modelo de escala: ¿escalar verticalmente una máquina grande o escalar horizontalmente con muchas máquinas?
  • Modelo de datos: tablas, documentos, pares clave-valor, grafos, vectores o puntos con marca temporal.

Qué aprenderás en esta guía

Este artículo recorre los principales tipos de bases de datos y explica, para cada uno:

  • En qué es mejor (y dónde flojea)
  • Casos de uso típicos en productos reales
  • Compromisos clave que afectan rendimiento, coste y complejidad

Una nota rápida sobre sistemas “multi-modelo”

Muchos productos modernos difuminan las líneas. Algunas bases relacionales añaden soporte JSON que solapa con una base documental. Algunas plataformas de búsqueda y analítica ofrecen indexación vectorial como una base vectorial. Otras combinan streaming y almacenamiento con características de series temporales.

Así que “tipo” no es una caja estricta: sigue siendo útil para entender fortalezas por defecto y los tipos de cargas que una base de datos maneja mejor.

Cómo usar esta guía para preseleccionar opciones

Empieza por tu carga principal:

  • Si necesitas datos estructurados y transacciones, comienza con una base de datos relacional.
  • Si haces reporting intenso y dashboards, mira una base de datos columnar o un warehouse.
  • Si la forma de los datos de tu app cambia a menudo, considera una base de datos documental.
  • Si necesitas búsquedas por clave extremadamente rápidas, una tienda clave-valor es candidata fuerte.

Luego usa la sección “Cómo elegir el tipo de base de datos correcto” para afinar según escala, necesidades de consistencia y las consultas que ejecutarás con más frecuencia.

Bases de datos relacionales (SQL): la opción por defecto para datos estructurados

Las bases de datos relacionales son lo que mucha gente imagina al escuchar “base de datos”. Los datos se organizan en tablas formadas por filas (registros) y columnas (campos). Un esquema define cómo es cada tabla: qué columnas existen, qué tipos tienen y cómo se relacionan las tablas entre sí.

Por qué SQL está en todas partes

Los sistemas relacionales suelen consultarse con SQL (Structured Query Language). SQL es popular porque es legible y expresivo:

  • Puedes filtrar y ordenar datos (WHERE, ORDER BY).
  • Combinar datos entre tablas (JOIN).
  • Resumir resultados (GROUP BY).

La mayoría de herramientas de reporting, plataformas analíticas y aplicaciones empresariales hablan SQL, lo que lo convierte en una opción segura cuando quieres compatibilidad amplia.

Transacciones ACID, en lenguaje llano

Las bases relacionales son conocidas por sus transacciones ACID, que ayudan a mantener los datos correctos:

  • Atomicidad: un cambio multi-paso es “todo o nada”.
  • Consistencia: las reglas (como claves foráneas) siguen siendo válidas tras cambios.
  • Aislamiento: las actualizaciones simultáneas no se corrompen entre sí.
  • Durabilidad: una vez guardado, el dato sobrevive a fallos.

Esto importa cuando los errores son costosos—como cobrar dos veces a un cliente o perder una actualización de stock.

Cargas de trabajo ideales

Una base relacional suele ser la elección correcta para datos estructurados y bien definidos y flujos como:

  • Aplicaciones empresariales (tipo CRM/ERP)
  • Finanzas, pagos, facturación
  • Inventario, pedidos, reservas

Puntos débiles comunes

La misma estructura que hace a las relacionales fiables puede añadir fricción:

  • Esquemas rígidos: cambios frecuentes en la forma de los datos pueden requerir migraciones.
  • Escalado con muchos joins: muchos joins entre tablas grandes pueden volverse lentos o caros a gran escala, especialmente si los datos están repartidos entre máquinas.

Cuando tu modelo de datos cambia constantemente—o necesitas un escalado horizontal extremo con patrones de acceso más simples—otros tipos pueden encajar mejor.

Bases de datos columnar: diseñadas para analítica

Las bases columnar almacenan datos “por columna” en lugar de “por fila”. Ese único cambio tiene un gran impacto en la velocidad y el coste para cargas analíticas.

Row-store vs. column-store

En un row-store tradicional (común en una base relacional), todos los valores de un registro están juntos. Excelente cuando sueles recuperar o actualizar un cliente/pedido a la vez.

En un column-store, todos los valores de un mismo campo están juntos—todos los price, todos los country, todos los timestamp. Esto hace eficiente leer solo las pocas columnas necesarias para un informe, sin traer filas completas desde disco.

Por qué columnar es rápido para reporting

Las consultas analíticas suelen:

  • Escanear muchas filas
  • Seleccionar pocas columnas
  • Calcular agregados como SUM, AVG, COUNT y agrupar por dimensiones

El almacenamiento columnar acelera esos patrones porque lee menos datos y comprime muy bien (valores similares agrupados se comprimen eficientemente). Muchos motores columnar usan también ejecución vectorizada e indexación/particionado inteligente para acelerar grandes escaneos.

Patrones de consulta típicos

Los sistemas columnar brillan en dashboards y reporting: “ingresos por semana”, “top 20 productos por región”, “tasa de conversión por canal” o “errores por servicio en los últimos 30 días”. Estas consultas tocan muchas filas pero pocas columnas.

Trade-offs: actualizaciones OLTP y búsquedas puntuales

Si tu carga es mayormente “obtener un registro por ID” o “actualizar una sola fila decenas de veces por segundo”, columnar puede parecer más lento o caro. Las escrituras suelen optimizarse por lotes (ingesta append-heavy) en lugar de actualizaciones pequeñas y frecuentes.

Dónde brilla

Las bases columnar son una buena elección para:

  • BI y dashboards ejecutivos
  • Analítica de eventos y clickstream
  • Reporting a gran escala sobre logs o transacciones

Si tu prioridad son agregaciones rápidas sobre grandes volúmenes, columnar suele ser el primer tipo a evaluar.

Bases de datos documentales: esquemas flexibles para datos de aplicación

Las bases documentales almacenan datos como “documentos”—registros autocontenidos que se parecen mucho a JSON. En lugar de repartir información en muchas tablas, normalmente mantienes campos relacionados en un solo objeto (incluyendo arrays anidados y sub-objetos). Eso las hace naturales para datos de aplicaciones.

El modelo documental (registros tipo JSON)

Un documento puede representar un usuario, un producto o un artículo—con atributos que difieren entre documentos. Un producto puede tener size y color, otro dimensions y materials, sin forzar un esquema único para todos.

Esa flexibilidad es útil cuando los requisitos cambian a menudo o cuando distintos ítems tienen conjuntos distintos de campos.

Indexación, a grandes rasgos

Para evitar escanear cada documento, las bases documentales usan índices—estructuras que ayudan a localizar documentos coincidentes rápidamente. Puedes indexar campos habituales (email, sku, status) y muchos sistemas indexan campos anidados (por ejemplo address.city). Los índices aceleran lecturas pero añaden sobrecarga a las escrituras, porque deben actualizarse cuando los documentos cambian.

Fortalezas y compromisos

Las documentales destacan con esquemas cambiantes, datos anidados y payloads amigables para APIs. Los compromisos suelen aparecer cuando necesitas:

  • Joins complejos entre muchas entidades (menos natural que en relacionales)
  • Transacciones entre múltiples documentos a gran escala (soportadas en muchos productos, pero pueden costar rendimiento)
  • Normalización estricta (equipos a veces duplican datos para facilitar lecturas, lo que exige lógica cuidadosa de actualización)

Casos de uso comunes

Son una opción sólida para gestión de contenidos, catálogos de productos, perfiles de usuario y APIs de backend—en cualquier lugar donde los datos encajen bien con “un objeto por página/pantalla/solicitud”.

Tiendas clave-valor: sencillas y muy rápidas para búsquedas

Las tiendas clave-valor son el modelo de base de datos más simple: almacenas un valor (desde una cadena hasta un blob JSON) y lo recuperas usando una clave única. La operación central es “dame el valor para esta clave”, por eso estos sistemas pueden ser extremadamente rápidos.

El modelo clave-valor (y por qué es rápido)

Como lecturas y escrituras se centran en una clave primaria, las tiendas clave-valor pueden optimizarse para baja latencia y alto throughput. Muchas están diseñadas para mantener datos calientes en memoria, minimizar planificación de consultas complejas y escalar horizontalmente.

Esa simplicidad también moldea el modelado: en vez de pedir al DB “encuentra todos los usuarios en Berlín que se registraron la semana pasada”, normalmente diseñas claves que ya apuntan al registro exacto que quieres (por ejemplo user:1234:profile).

Las tiendas clave-valor se usan ampliamente como caché delante de una base de datos más lenta (por ejemplo, una relacional). Si tu app necesita repetidamente los mismos datos—detalles de producto, permisos de usuario, reglas de precios—cachear el resultado por clave evita volver a calcular o reconsultar.

También son naturales para almacenar sesiones (ej., session:<id> -> session data) porque las sesiones se leen y actualizan frecuentemente y suelen expirar automáticamente.

TTL, expulsión y memoria vs. disco

La mayoría soporta TTL (time to live) para que los datos expiren sin limpieza manual—ideal para sesiones, tokens de un solo uso y contadores de rate limiting.

Cuando la memoria es limitada, los sistemas suelen usar políticas de expulsión (por ejemplo LRU) para eliminar entradas antiguas. Algunos productos son memory-first, otros pueden persistir en disco para durabilidad. Elegir memoria vs. disco depende de si optimizas velocidad (memoria) o retención/recuperación (persistencia).

Trade-offs a conocer

Las tiendas clave-valor brillan cuando ya conoces la clave. No son adecuadas cuando las preguntas son abiertas.

Muchas tienen patrones de consulta limitados frente a SQL. El soporte para índices secundarios (consultar por campos dentro del valor) varía: algunos lo ofrecen, otros no, y algunos fomentan mantener claves de búsqueda propias.

Casos de uso comunes

Son ideales para:

  • Rate limiting: contadores por usuario/IP con ventana TTL
  • Feature flags: lecturas rápidas para decidir comportamientos por usuario o cohorte
  • Carritos de compra: actualizaciones rápidas a un objeto de carrito por usuario/sesión

Si tu patrón de acceso es “fetch/update por ID” y la latencia importa, una tienda clave-valor suele ser la forma más simple de obtener velocidad fiable.

Bases wide-column: almacenamiento operacional escalable

Convierte la elección de base de datos en una app
Describe tu app en el chat y obtén rápidamente un backend en Go con PostgreSQL.

Las wide-column (o stores de columnas anchas) organizan datos en familias de columnas. En lugar de pensar en una tabla fija con las mismas columnas para cada fila, agrupas columnas relacionadas y puedes almacenar distintos conjuntos de columnas por fila dentro de una familia.

Wide-column vs. columnar para analítica

A pesar del nombre parecido, las wide-column no son lo mismo que una base columnar usada para analítica.

Una base columnar almacena cada columna por separado para escanear grandes volúmenes eficientemente. Una wide-column está construida para cargas operacionales a gran escala, donde necesitas escribir y leer montones de registros rápidamente a través de muchas máquinas.

Dónde brillan

Los sistemas wide-column están diseñados para:

  • Alto throughput de escritura (ingesta de muchos eventos por segundo)
  • Escala horizontal (añadir nodos para más tráfico y datos)
  • Lecturas con latencia predecible cuando consultas por la clave adecuada

Patrón de acceso típico

El patrón más común es:

  • Conoces la clave de partición (decide dónde vive el dato), y
  • Sueles leer un rango dentro de esa partición (por ejemplo, “todos los eventos del dispositivo X entre 10:00–10:05”).

Esto las hace una buena opción para datos ordenados por tiempo y cargas append-heavy.

Trade-offs a entender

Con wide-column, el modelado de datos se guía por las consultas: normalmente diseñas tablas en torno a las consultas exactas que necesitas. Eso puede implicar duplicar datos en distintas formas para soportar diferentes patrones de acceso.

También suelen ofrecer joins limitados y menos opciones de consultas ad-hoc que una base relacional. Si tu aplicación depende de relaciones complejas y consultas flexibles, puedes sentirte limitado.

Casos de uso comunes

Se usan a menudo para eventos IoT, mensajería y activity streams, y otros datos operacionales a gran escala donde las escrituras rápidas y las lecturas por clave predecible importan más que consultas relacionales ricas.

Bases de datos de grafos: las relaciones como dato principal

Las bases de grafos almacenan datos tal como muchos sistemas reales se comportan: como cosas conectadas a otras cosas. En vez de forzar relaciones en tablas y tablas puente, las conexiones son parte del modelo.

El modelo grafo: nodos, aristas y propiedades

Un grafo típicamente tiene:

  • Nodos: las entidades (personas, cuentas, dispositivos, productos)
  • Aristas: las relaciones entre ellos (“sigue”, “pagó”, “pertenece a”, “enviado a”)
  • Propiedades: atributos clave-valor en nodos y aristas (timestamps, montos, etiquetas)

Esto facilita representar redes, jerarquías y relaciones muchos-a-muchos sin forzar el esquema.

Por qué los traversals pueden vencer a los joins

Las consultas con muchas relaciones requieren a menudo muchos joins en una base relacional. Cada join adicional puede añadir complejidad y coste a medida que los datos crecen.

Las bases de grafos están diseñadas para recorridos—caminar de un nodo a nodos conectados, y luego a sus conexiones. Cuando tus preguntas son del tipo “encuentra cosas conectadas a 2–6 pasos”, los traversals pueden mantenerse rápidos y legibles aunque la red crezca.

Preguntas que responden especialmente bien

Los grafos destacan en:

  • Caminos y grados de separación (ruta más corta, alcanzabilidad)
  • Recomendaciones (“usuarios que compraron X también compraron Y”, “amigos de amigos”)
  • Anillos de fraude y patrones anómalos (dispositivos, direcciones o métodos de pago compartidos)

Trade-offs a planear

Los grafos pueden suponer un cambio para equipos: el modelado es distinto y los lenguajes de consulta (a menudo Cypher, Gremlin o SPARQL) pueden ser nuevos. Conviene tener convenciones claras sobre tipos y dirección de relaciones para mantener el modelo manejable.

Cuando un modelo relacional sigue siendo suficiente

Si tus relaciones son sencillas, tus consultas son mayormente filtrados/agregaciones y un puñado de joins cubre las partes “conectadas”, una base relacional puede seguir siendo la opción más directa—especialmente si ya funcionan bien las transacciones y el reporting.

Bases de datos vectoriales: búsqueda por similitud para aplicaciones de IA

Prepáralo para producción
Lánzalo con un dominio personalizado cuando tu prototipo esté listo para usuarios reales.

Las bases vectoriales están diseñadas para un tipo específico de pregunta: “¿Qué elementos son más similares a este?”. En lugar de emparejar valores exactos (ID o palabra clave), comparan embeddings—representaciones numéricas de contenido (texto, imágenes, audio, productos) generadas por modelos de IA. Los ítems con significado cercano tienden a tener embeddings próximos en un espacio multidimensional.

Por qué los vectores permiten búsqueda semántica

Una búsqueda normal puede fallar si el vocabulario es distinto (“laptop sleeve” vs. “notebook case”). Con embeddings, la similitud se basa en el significado, por eso el sistema puede mostrar resultados relevantes aunque las palabras no coincidan exactamente.

Operaciones básicas: similitud + filtros

La operación principal es la búsqueda del vecino más cercano: dado un vector de consulta, recuperar los vectores más próximos.

En aplicaciones reales, normalmente combinas similitud con filtros, como:

  • Mostrar solo documentos de un cliente concreto
  • Limitar a una categoría de producto o idioma
  • Excluir ítems archivados o de baja calidad

Este patrón “filtro + similitud” es cómo la búsqueda vectorial se vuelve práctica para conjuntos de datos reales.

Dónde encajan las bases vectoriales

Usos comunes:

  • RAG (Retrieval-Augmented Generation): recuperar fragmentos relevantes antes de que un LLM responda
  • Búsqueda semántica: consultar bases de conocimiento, tickets de soporte o docs internas
  • Recomendaciones: “usuarios también vieron/compraron” basadas en similitud de contenido

Trade-offs a conocer

La búsqueda vectorial depende de índices especializados. Construir y actualizar esos índices puede llevar tiempo y consumir mucha memoria. A menudo eliges entre mayor recall (encontrar más de los verdaderos mejores matches) y menor latencia (respuestas más rápidas).

Emparejar con relacional o documental

Las bases vectoriales rara vez reemplazan tu DB principal. Un setup común: almacenar la “fuente de la verdad” (órdenes, usuarios, documentos) en una relacional o documental, y guardar embeddings + índices de búsqueda en la DB vectorial—luego unir los resultados con el almacén primario para obtener registros completos y permisos.

Bases de datos de series temporales: optimizadas para métricas en el tiempo

Las TSDB están diseñadas para datos que llegan continuamente y siempre están asociados a una marca temporal. Piensa en uso de CPU cada 10 segundos, latencia de API por petición, lecturas de sensores cada minuto o precios de acciones cambiando muchas veces por segundo.

Cómo son los datos de series temporales

La mayoría de registros de series temporales combinan:

  • Timestamp: cuándo se midió
  • Métrica/valor: el número que rastreas (latencia, temperatura, precio)
  • Tags/labels: metadatos para filtrar y agrupar (host=web-01, region=us-east, service=checkout)

Esta estructura facilita preguntas como “muestra la tasa de errores por servicio” o “compara la latencia entre regiones”.

Características de rendimiento en las que se apoyan las TSDB

Como el volumen puede crecer rápido, las TSDB suelen centrarse en:

  • Compresión: almacenar largas series numéricas eficientemente
  • Políticas de retención: expirar automáticamente datos antiguos (por ejemplo, datos crudos 7 días, agregados 90 días)
  • Downsampling: resumir detalle en agregados (por segundo → por minuto → por hora)

Estas funciones mantienen el coste de almacenamiento y consulta predecible sin limpieza manual constante.

Patrones de consulta comunes

Las TSDB destacan cuando necesitas cálculos basados en el tiempo, como:

  • Medias móviles (por ejemplo, media móvil de 5 minutos)
  • Percentiles (p95/p99 de latencia)
  • Tasa de cambio (requests/segundo)
  • Alertas por umbrales o anomalías

Dónde encajan (y dónde no)

Casos típicos: monitorización, observabilidad, IoT/sensores y datos financieros de ticks.

El trade-off: las TSDB no son la mejor elección para relaciones complejas y consultas ad-hoc entre muchas entidades (por ejemplo, joins profundos “usuarios → equipos → permisos → proyectos”). Para eso, una relacional o un grafo suelen encajar mejor.

Data warehouses y lakehouses: analítica a escala organizacional

Un data warehouse es menos un tipo único de BD y más una carga de trabajo + arquitectura: muchos equipos consultando datos históricos grandes para responder preguntas de negocio (tendencias de ingresos, churn, riesgo de inventario). Puedes adquirirlo como producto gestionado, pero lo que lo define es su uso—centralizado, analítico y compartido.

Ingesta por batch vs streaming (versión simple)

La mayoría de warehouses aceptan datos de dos maneras comunes:

  • Ingesta por batch: los datos llegan cada hora/día (exportaciones nocturnas). Más barato y simple, pero no en tiempo real.
  • Ingesta por streaming: eventos llegan continuamente (clicks, pagos, IoT). Ves números más frescos, pero las canalizaciones y el monitoreo importan más.

Por qué son rápidos: columnar, particionado y vistas materializadas

Los warehouses suelen optimizar analítica con algunos trucos:

  • Almacenamiento columnar lee solo las columnas necesarias para un informe.
  • Particionado divide tablas grandes por tiempo o región para que las consultas escaneen menos datos.
  • Vistas materializadas guardan resultados precomputados (p. ej., "ventas diarias por país") para acelerar dashboards.

Gobernanza no es opcional a escala

Cuando varios departamentos dependen de los mismos números, necesitas control de acceso (quién puede ver qué), trazas de auditoría (quién consultó/cambió datos) y lineage (de dónde viene una métrica y cómo se transformó). Esto suele ser tan importante como la velocidad de consulta.

Cuándo tiene sentido un lakehouse

Un lakehouse combina analítica tipo warehouse con la flexibilidad de un data lake—útil cuando quieres un solo lugar para tablas curadas y archivos crudos (logs, imágenes, eventos semiestructurados), sin duplicar todo. Encaja cuando el volumen es alto, los formatos varían y aún necesitas reporting amigable con SQL.

Compromisos clave: consistencia, escala y patrones de consulta

De OLTP a informes
Crea vistas analíticas y endpoints de informes mientras mantienes Postgres como sistema de registro.

Elegir entre tipos de bases no es tanto buscar el “mejor” sino el más adecuado: qué necesitas consultar, con qué rapidez y qué ocurre cuando partes del sistema fallan.

OLTP vs OLAP (ajusta al workload)

Una regla práctica:

  • OLTP (online transactions): muchas lecturas/escrituras pequeñas (checkout, logins, actualizaciones de pedidos). Prioridades: baja latencia, actualizaciones correctas, muchos usuarios concurrentes.
  • OLAP (analítica): consultas menos frecuentes pero pesadas que escanean muchas filas (dashboards, tendencias). Prioridades: agregación rápida, almacenamiento columnar, separar cómputo de almacenamiento.

Las relacionales suelen brillar para OLTP; los sistemas columnar, warehouses y lakehouses para OLAP.

CAP en palabras sencillas

Cuando una red falla, normalmente no puedes tener las tres cosas a la vez:

  • Consistencia: todos ven los mismos datos inmediatamente.
  • Disponibilidad: el sistema sigue respondiendo.
  • Tolerancia a particiones: sigue funcionando pese a cortes de red.

Muchos sistemas distribuidos eligen permanecer disponibles y reconciliar después (consistencia eventual). Otros priorizan corrección estricta, aunque eso signifique rechazar solicitudes hasta que todo esté sano.

Escalado: vertical, horizontal y sharding

  • Escalado vertical: una máquina más potente—simple, pero con límites.
  • Escalado horizontal: más máquinas—más capacidad, más coordinación.
  • Sharding: dividir datos entre nodos (por ejemplo por customer ID). Aumenta escala, pero consultas/ transacciones cross-shard se complican.

Transacciones y concurrencia básicas

Si muchos usuarios actualizan los mismos datos, necesitas reglas claras. Transacciones agrupan pasos en “todo o nada”. Bloqueos y niveles de aislamiento evitan conflictos, pero pueden reducir el throughput; un aislamiento más laxo mejora velocidad pero permite anomalías.

Aspectos operativos (no los olvides)

Planifica backups, replicación y recuperación de desastres desde temprano. Considera también la facilidad para probar restauraciones, monitorear lag y realizar upgrades: estos detalles del día dos importan tanto como la velocidad de consulta.

Cómo elegir el tipo de base de datos correcto

Elegir entre los principales tipos de bases no es cuestión de moda sino de qué necesitas hacer con tus datos. Una forma práctica de empezar es trabajar hacia atrás desde tus consultas y cargas.

1) Empieza por tus consultas (no por tus datos)

Escribe las 5–10 cosas principales que tu app o equipo debe hacer:

  • ¿Qué lees más a menudo (lookup de un solo registro, filtros, joins, agregaciones, búsqueda por similitud)?
  • ¿Qué escribes más (inserts de una fila, streams de eventos, actualizaciones, cargas masivas)?
  • ¿Qué frescura requieren los resultados (mili segundos, segundos, minutos)?

Esto reduce opciones más rápido que cualquier checklist de características.

2) Empareja la DB con la forma de tus datos

Lista rápida:

  • Campos estructurados y consistentes → base relacional
  • JSON semiestructurado que cambia → documental
  • Relaciones muchos-a-muchos con recorridos profundos → grafo
  • Embeddings y búsqueda nearest-neighbor → vectorial
  • Eventos/métricas con timestamps y rollups → time-series
  • Tablas a gran escala con patrones de acceso previsibles → wide-column
  • Get/set muy simple por clave → clave-valor
  • Escaneos analíticos intensos → columnar (o warehouse)

3) Aclara latencia, throughput y drivers de coste temprano

Los objetivos de rendimiento definen la arquitectura. Establece números (p95, lecturas/escrituras por segundo, retención). El coste suele seguir a:

  • Almacenamiento (datos crudos + réplicas)
  • Cómputo (consultas, ETL/ELT, jobs en segundo plano)
  • Replicación (multi-región, HA)
  • Indexación (consultas más rápidas, mayor sobrecarga en escrituras)

4) Una tabla simple de decisión

Caso de uso principalMejor ajuste (a menudo)Por qué
Transacciones, facturación, cuentasRelacional (SQL)Constraints fuertes, joins, consistencia
Datos de app con campos que evolucionanDocumentalEsquema flexible, JSON natural
Caché/estado de sesión en tiempo realClave-valorBúsquedas rápidas por clave
Clickstreams/métricas en el tiempoSeries temporalesAlta ingesta + consultas basadas en tiempo
Dashboards/agrupaciones grandesColumnarEscaneos rápidos + compresión
Relaciones sociales/conocimientoGrafoRecorridos eficientes
Búsqueda semántica, RAGVectorialBúsqueda por similitud sobre embeddings
Datos operacionales masivosWide-columnEscala horizontal, consultas previsibles

Muchos equipos usan dos bases: una para operaciones (p. ej., relacional) y otra para analítica (p. ej., columnar/warehouse). La elección correcta es la que hace tus consultas más importantes las más simples, rápidas y baratas de ejecutar de forma fiable.

Nota práctica si construyes productos rápido

Si estás prototipando o lanzando features con rapidez, la decisión de base de datos suele ligar al flujo de desarrollo. Plataformas como Koder.ai (una plataforma vibe-coding que genera apps web, backend y móviles desde chat) pueden concretarlo: por ejemplo, la pila por defecto de Koder.ai usa Go + PostgreSQL, un punto de partida sólido cuando necesitas corrección transaccional y amplio ecosistema SQL.

A medida que tu producto crece, puedes añadir bases especializadas (una base vectorial para búsqueda semántica o un warehouse columnar para analítica) manteniendo PostgreSQL como sistema de registro. La clave es empezar con las cargas que debes soportar hoy y dejar la puerta abierta para “añadir una segunda tienda” cuando los patrones de consulta lo requieran.

Preguntas frecuentes

¿Qué significa en la práctica “tipo de base de datos”?

Un “tipo de base de datos” es una forma corta de referirse a tres aspectos:

  • Modelo de datos (tablas, documentos, pares clave-valor, grafos, vectores, puntos con marca temporal)
  • Patrones de consulta para los que está optimizada (joins, escaneos/ agregaciones, recorridos, búsqueda por similitud)
  • Compromisos de escalado y consistencia (scale-up vs. scale-out, consistencia estricta vs. eventual)

Elegir el tipo equivale a escoger valores por defecto para rendimiento, coste y complejidad operativa.

¿Cómo elijo el tipo de base de datos correcto sin sobrepensarlo?

Empieza por tus 5–10 consultas y patrones de escritura principales, luego mapea eso a las fortalezas adecuadas:

  • OLTP + datos estructurados → relacional (SQL)
  • Dashboards y grandes agregaciones → columnar / data warehouse
  • Datos JSON que evolucionan → documental
  • Consultas profundas sobre relaciones → grafo
  • Búsqueda semántica / RAG → vector
  • Get/set por ID con latencia muy baja → clave-valor

Si haces OLTP y analítica, planea dos sistemas desde el principio (DB operativa + DB analítica).

¿Cuándo debo usar una base de datos relacional (SQL)?

Las bases relacionales son una buena opción por defecto cuando necesitas:

  • Esquemas definidos y estructurados
  • Transacciones ACID (correctitud en dinero, inventario, pedidos)
  • Joins y restricciones (foreign keys, relaciones consistentes)

Se vuelven menos cómodas si cambias el esquema constantemente o necesitas un escalado horizontal extremo con muchas consultas con joins repartidas entre shards.

¿Qué son las transacciones ACID y cuándo importan más?

ACID es una garantía de fiabilidad para cambios multi-paso:

  • Atomicidad: todos los pasos se completan o ninguno lo hace
  • Consistencia: las reglas/constraints permanecen válidas
  • Aislamiento: las operaciones concurrentes no se corrompen mutuamente
  • Durabilidad: los datos comprometidos sobreviven a fallos

Importa sobre todo en flujos donde un error es costoso (pagos, reservas, actualizaciones de inventario).

¿Por qué las bases columnar son más rápidas para analítica que las row-stores?

Las bases columnar son ideales cuando las consultas:

  • Escanean muchas filas
  • Leen solo unas pocas columnas
  • Calculan agregados (SUM, COUNT, AVG, GROUP BY)

Son menos adecuadas para cargas OLTP con actualizaciones frecuentes y pequeñas, o para patrones de “recuperar un registro por ID” que las row-stores manejan mejor.

¿Cuándo tiene más sentido una base documental que SQL?

Una base documental es adecuada cuando:

  • Tus datos encajan con objetos tipo JSON (perfiles, catálogos, contenido)
  • La forma cambia con frecuencia o varía por elemento
  • Quieres almacenar estructuras anidadas sin partirlas en muchas tablas

Ten en cuenta los trade-offs: joins complejos, duplicación para rendimiento de lectura y el coste de transacciones multi-documento.

¿Para qué sirven mejor los almacenes clave-valor (más allá del caching)?

Usa un almacén clave-valor cuando tu patrón de acceso sea básicamente:

  • Get/set por una única clave (consultas de baja latencia)
  • Caché de resultados de una base de datos primaria
  • Sesiones, rate limiting, feature flags o carritos de compra

Planifica alrededor de sus limitaciones: la consulta ad-hoc suele ser débil y el soporte para índices secundarios varía; a menudo diseñas claves o índices auxiliares manualmente.

¿Cuál es la diferencia entre bases columnar y wide-column?

A pesar del nombre parecido, atienden cargas distintas:

  • Bases columnar: analítica (escaneos rápidos + buena compresión por columnas)
  • Wide-column (columnas anchas): almacenamiento operacional a gran escala (muchas escrituras, lecturas por clave predecible)

Los sistemas wide-column suelen requerir modelado orientado a consultas (diseñar tablas para patrones de acceso concretos) y no ofrecen la misma flexibilidad de joins que SQL.

¿Cuándo elegir una base de grafos en lugar de tablas relacionales?

Usa una base de grafos cuando las preguntas centrales son sobre relaciones, por ejemplo:

  • Caminos y grados de separación
  • Recomendaciones basadas en conexiones
  • Anillos de fraude y atributos compartidos entre entidades

Los grafos destacan en recorridos (traversals) donde un enfoque relacional necesitaría muchos joins. El trade-off es adoptar nuevos patrones de modelado y lenguajes de consulta (Cypher/Gremlin/SPARQL).

¿Qué problema resuelven las bases de datos vectoriales y reemplazan a mi base principal?

Una base de vectores resuelve la búsqueda por similitud sobre embeddings (representaciones numéricas del significado). Se usa para:

  • Búsqueda semántica (encontrar documentos relevantes con distinto vocabulario)
  • RAG (recuperar pasajes relevantes antes de responder con un LLM)
  • Recomendaciones basadas en similitud

En la práctica se suele emparejar con una base relacional/documental: la fuente de la verdad está ahí, mientras que embeddings e índices vectoriales residen en la DB vectorial y los resultados se vuelven a unir con los registros completos y permisos.

Related posts