Decisión: ¿SQL o NoSQL (qué familia de bases de datos)?
La elección de la familia de bases de datos adecuada depende de la forma del modelo de datos, de sus prioridades de consistencia y escala y de la complejidad de sus consultas. Generalizaciones como «NoSQL es más moderno» son engañosas; cada familia está diseñada para patrones de acceso concretos. Partiendo de la estructura de los datos, este árbol le orienta hacia la herramienta adecuada entre motores relacionales, documentales, clave-valor y de búsqueda, y le recuerda el enfoque políglota cuando hace falta.
¿Cuál es la naturaleza de los datos y el patrón de acceso predominante?
Empiece por la pregunta más decisiva: ¿los datos son registros estructurados con relaciones fuertes, documentos con un esquema flexible/variable, búsquedas simples por clave-valor o una necesidad especial como la búsqueda de texto? La forma de los datos y cómo los consulta determinan en gran medida la familia.
- Registros relacionales y estructurados, y consultas complejas
- Documentos anidados con un esquema flexible/variable
- Clave-valor simple, latencia muy baja/caché
- Búsqueda de texto completo / por facetas, analítica de logs
¿La prioridad es la consistencia fuerte (ACID) o la escala horizontal?
Los datos parecen relacionales; pero ¿cuál es su prioridad? ¿Son esenciales los joins entre varias tablas, la integridad transaccional y la consistencia fuerte (ACID), o lo es escalar horizontalmente un volumen enorme que no cabe en un solo nodo? El modelo relacional es el valor por defecto correcto para la mayoría de las cargas; solo se ve forzado cuando la escala supera realmente un solo nodo.
- Lo primero son ACID, los joins y la integridad de las consultas complejas
- La escala por encima de todo, relaciones/joins débiles
Recomendación: base de datos relacional (RDBMS)
El valor por defecto correcto para cargas con datos estructurados y fuertemente relacionados que requieren integridad transaccional. Las garantías ACID, un motor de consultas SQL maduro y los joins le permiten responder de forma fiable a preguntas complejas.
Recomendación: base de datos documental
Almacena datos flexibles y anidados con un esquema que cambia con frecuencia en su forma natural (documentos tipo JSON). Adecuada para aplicaciones que leen/escriben mayoritariamente a través de un único documento, necesitan pocos joins y requieren escala horizontal.
Recomendación: almacén clave-valor / caché
Diseñado para cargas que necesitan lecturas/escrituras muy rápidas por clave y ninguna consulta compleja. Suele ejecutarse en memoria y ofrece latencias de microsegundos/milisegundos; ideal para tareas como caché, sesiones y contadores.
Recomendación: motor de búsqueda / analítica
Un motor basado en índice invertido especializado en búsqueda de texto completo, ordenación por relevancia, filtrado por facetas y analítica de logs/texto de gran volumen. Ofrece la experiencia de búsqueda que las consultas LIKE relacionales no pueden dar.