¡No hay tal cosa como NoSQL!
NoSQL es una palabra de moda.
Durante décadas, cuando la gente hablaba de bases de datos, se referían a bases de datos relacionales. Y cuando la gente hablaba de bases de datos relacionales, se referían a las que controlas con el lenguaje de consulta estructurado de Edgar F. Codd. ¿Almacenar datos de alguna otra manera? ¡Locura! Cualquier otra cosa son solo archivos planos.
Pero en los últimos años, la gente comenzó a cuestionar este dogma. La gente se preguntaba si las tablas con filas y columnas son realmente la única forma de representar datos. La gente comenzó a pensar y codificar, y se le ocurrieron muchos conceptos nuevos sobre cómo se podrían organizar los datos. Y comenzaron a crear nuevos sistemas de bases de datos diseñados para estas nuevas formas de trabajar con datos.
Las filosofías de todas estas bases de datos eran diferentes. Pero una cosa que todas estas bases de datos tenían en común era que el lenguaje de consulta estructurado ya no era adecuado para usarlas. Entonces, cada base de datos reemplazó SQL con sus propios lenguajes de consulta. Y así nació el término NoSQL, como una etiqueta para todas las tecnologías de bases de datos que desafían el modelo clásico de base de datos relacional.
Entonces, ¿qué tienen en común las bases de datos NoSQL?
En realidad, no mucho.
A menudo escuchas frases como:
- ¡NoSQL es escalable!
- ¡NoSQL es para BigData!
- NoSQL viola ACID!
- ¡NoSQL es un almacén de clave / valor glorificado!
¿Es eso cierto? Bueno, algunas de estas afirmaciones pueden ser ciertas para algunas bases de datos comúnmente llamadas NoSQL, pero cada una también es falsa para al menos otra. En realidad, lo único que tienen en común las bases de datos NoSQL es que son bases de datos que no usan SQL. Eso es. Lo único que los define es lo que los distingue unos de otros.
Entonces, ¿qué diferencia a las bases de datos NoSQL?
Así que dejamos en claro que todas esas bases de datos comúnmente conocidas como NoSQL son demasiado diferentes para evaluarlas juntas. Cada uno de ellos necesita ser evaluado por separado para decidir si son adecuados para resolver un problema específico. ¿Pero por dónde empezamos? Afortunadamente, las bases de datos NoSQL se pueden agrupar en ciertas categorías, que son adecuadas para diferentes casos de uso:
Orientado a documentos
Ejemplos: MongoDB, CouchDB
Fortalezas: datos heterogéneos, trabajo orientado a objetos, desarrollo ágil
Su ventaja es que no requieren una estructura de datos coherente. Son útiles cuando sus requisitos y, por lo tanto, el diseño de su base de datos cambia constantemente, o cuando se trata de conjuntos de datos que pertenecen juntos pero que aún se ven de manera muy diferente. Cuando tiene muchas tablas con dos columnas llamadas "clave" y "valor", entonces vale la pena analizarlas.
Bases de datos gráficas
Ejemplos: Neo4j, GiraffeDB.
Fortalezas: minería de datos
Si bien la mayoría de las bases de datos NoSQL abandonan el concepto de gestión de relaciones de datos, estas bases de datos lo abarcan aún más que las llamadas bases de datos relacionales.
Su objetivo es definir datos por su relación con otros datos. Cuando tiene muchas tablas con claves primarias que son las claves primarias de otras dos tablas (y tal vez algunos datos que describen la relación entre ellas), entonces estas podrían ser algo para usted.
Tiendas de valor clave
Ejemplos: Redis, Cassandra, MemcacheDB
Fortalezas: Búsqueda rápida de valores por claves conocidas
Son muy simplistas, pero eso los hace rápidos y fáciles de usar. Cuando no necesita procedimientos almacenados, restricciones, disparadores y todas esas características avanzadas de la base de datos y solo desea un almacenamiento y recuperación rápidos de sus datos, entonces esos son para usted.
Lamentablemente, suponen que sabes exactamente lo que estás buscando. ¿Necesitas el perfil de Usuario157641? No hay problema, solo tomará microsegundos. Pero, ¿qué sucede cuando desea los nombres de todos los usuarios que tienen entre 16 y 24 años de edad, que tienen "waffles" como su comida favorita y han iniciado sesión en las últimas 24 horas? Mala suerte Cuando no tiene una clave definida y única para un resultado específico, no puede sacarla de su tienda KV tan fácilmente.
¿SQL está obsoleto?
Algunos defensores de NoSQL afirman que su base de datos NoSQL favorita es la nueva forma de hacer las cosas, y SQL es cosa del pasado.
¿Tienen razón?
No, por supuesto que no lo son. Si bien hay problemas para los que SQL no es adecuado, todavía tiene sus puntos fuertes. Muchos modelos de datos simplemente se representan mejor como una colección de tablas que se refieren entre sí. Especialmente porque la mayoría de los programadores de bases de datos fueron entrenados durante décadas para pensar en los datos de una manera relacional, y tratar de presionar esta mentalidad en una nueva tecnología que no fue creada para ello rara vez termina bien.
Las bases de datos NoSQL no son un reemplazo para SQL, son una alternativa.
La mayoría de los ecosistemas de software en torno a las diferentes bases de datos NoSQL aún no son tan maduros. Si bien hay avances, aún no tiene herramientas adicionales que sean tan maduras y potentes como las disponibles para las bases de datos SQL populares.
Además, hay muchos más conocimientos para SQL. Generaciones de informáticos han dedicado décadas de sus carreras a la investigación centrándose en bases de datos relacionales, y muestra: La literatura escrita sobre bases de datos SQL y modelos de datos relacionales, tanto prácticos como teóricos, podría llenar múltiples bibliotecas llenas de libros. Cómo construir una base de datos relacional para sus datos es un tema tan bien investigado que es difícil encontrar un caso en el que no haya una práctica recomendada generalmente aceptada por el libro.
La mayoría de las bases de datos NoSQL, por otro lado, todavía están en su infancia. Todavía estamos descubriendo la mejor manera de usarlos.