¿Qué es NoSQL?
Las bases de datos NoSQL (también conocidas como “no solo SQL”) almacenan datos de manera diferente que las tablas relacionales. Existen distintos tipos de bases de datos NoSQL según su modelo de datos. Los tipos principales son documentales, clave-valor, de columnas anchas y de grafos. Proporcionan esquemas flexibles y se escalan fácilmente con grandes cantidades de big data y cargas de usuario elevadas.
En este artículo, aprenderá que es una base de datos NoSQL, por qué (¡y cuándo!) debería usar una, y cómo comenzar a usarla.
Índice
- ¿Qué es una base de datos NoSQL?
- Tipos de bases de datos NoSQL
- Breve historia de las bases de datos NoSQL
- Características de las bases de datos NoSQL
- Base de datos relacional frente a base de datos NoSQL ejemplo
- Diferencias entre RDBMS y bases de datos NoSQL
- Casos de uso de NoSQL
- ¿Cuándo debería usarse NoSQL?
- Conceptos erróneos sobre las bases de datos NoSQL
- Tutorial de queries de NoSQL
- Resumen
- Preguntas frecuentes
¿Qué es una base de datos NoSQL?
Cuando la gente usa el término “base de datos NoSQL”, generalmente se refiere a cualquier base de datos no relacional. Algunos dicen que el término “NoSQL” significa “no SQL”, mientras que otros dicen que significa “no solo SQL”. De cualquier manera, la mayoría está de acuerdo en que las bases de datos NoSQL almacenan datos de una manera más natural y flexible. NoSQL, en oposición a SQL, es un enfoque de gestión de bases de datos, mientras que SQL es solo un lenguaje del query, similar a los lenguajes del query de las bases de datos NoSQL.
Tipos de bases de datos: NoSQL
Con el tiempo, surgieron cuatro tipos principales de bases de datos NoSQL: bases de datos documentales, bases de datos clave-valor, bases de datos de columnas anchas y bases de datos de grafos. Actualmente, las bases de datos multimodelo también son muy populares.
Bases de datos orientadas a documentos
Una base de datos orientada a documentos almacena datos en documentos similares a los objetos JSON (JavaScript Object Notation). Cada documento contiene pares de campos y valores. Por lo general, los valores pueden ser de una variedad de tipos, entre ellos, strings, números, operadores booleanos, arreglos o, incluso, otros objetos. Una base de datos documental ofrece un modelo de datos flexible, muy adaptado para conjuntos de datos semiestructurados y típicamente no estructurados. También brindan soporte a estructuras anidadas, lo que facilita la representación de relaciones complejas o datos jerárquicos.
Ejemplos de bases de datos documentales son MongoDB y Couchbase. Un documento típico se verá de la siguiente manera:
Bases de datos de tipo clave-valor
Una base de datos clave-valor es un tipo de base de datos más simple en la que cada artículo contiene claves y valores. Cada clave es única y está asociada con un valor individual. Se usan para caché y gestión de sesiones, y ofrecen alto rendimiento en lecturas y escrituras porque tienden a almacenar cosas en la memoria. Los ejemplos son Amazon DynamoDB y Redis. A continuación, se presenta una vista simple de los datos almacenados en una base de datos clave-valor:
Almacenes de columnas anchas
Las bases de datos de columnas anchas almacenan datos en tablas, filas y columnas dinámicas. Los datos se almacenan en tablas. Sin embargo, al contrario de lo que sucede con las bases de datos SQL tradicionales, las bases de datos de columnas anchas son flexibles, y las distintas filas pueden tener distintos conjuntos de columnas. Estas bases de datos pueden usar las técnicas de compresión de columnas para reducir el espacio de almacenamiento y mejorar el rendimiento. Las filas y columnas anchas permiten una recuperación eficiente de los datos dispersos y amplios. Algunos ejemplos de bases de datos de columnas anchas son Apache Cassandra y HBase. Un ejemplo típico de cómo se almacenan los datos en una base de datos de columnas anchas es el siguiente:
Bases de datos de grafos
Una base de datos de grafos almacena datos en forma de nodos y aristas. Los nodos suelen almacenar información sobre personas, lugares y cosas (como sustantivos), mientras que las aristas almacenan información sobre las relaciones entre los nodos. Funcionan bien para datos muy conectados en donde es posible que, al comienzo, las relaciones o los patrones no sean muy obvios. Ejemplos de bases de datos de grafos con Neo4J y Amazon Neptune. MongoDB también ofrece capacidades transitables de grafos mediante la etapa $graphLookup del pipeline de agregación de datos. A continuación, se muestra un ejemplo de cómo se almacenan los datos:
Bases de datos multimodelo
Las bases de datos multimodelos brindan soporte a más de un tipo de modelo de datos NoSQL para que los desarrolladores puedan elegir basándose en sus requisitos de aplicaciones. Estas bases de datos tienen un motor de base de datos unificado que puede gestionar múltiples modelos de datos dentro de una instancia de base de datos. Son ejemplos de eso CosmosDB y ArangoDB.
Comparación rápida de tipos de bases de datos: NoSQL
Cada una de las bases de datos NoSQL ofrecen distintas características. Por ejemplo, las bases de datos de grafos podrían ser más adecuadas para analizar relaciones y patrones complejos entre entidades, mientras que las bases de datos documentales ofrecen una forma más natural y flexible de almacenar y recuperar grandes volúmenes de datos de tipos similares como documentos. La elección de la base de datos depende del caso de uso que quiera desarrollar.
Para obtener más información, consulte Entender los distintos tipos de bases de datos NoSQL.
Breve historia de las bases de datos NoSQL
Las bases de datos NoSQL surgieron a fines de la década de 2000, cuando el costo del almacenamiento disminuyó drásticamente. Se acabaron los días en que era necesario crear modelos de datos complejos y difíciles de gestionar para evitar la duplicación de datos. Las bases de datos NoSQL se optimizaron para la productividad de los desarrolladores.
A medida que los costos de almacenamiento disminuyeron rápidamente, aumentó la cantidad de datos que las aplicaciones necesitaban almacenar y consultar. Estos datos llegaban en todo tipo de formas y tamaños, estructurados, semiestructurados y no estructurados, y definir el esquema de antemano se volvió casi imposible. Las bases de datos NoSQL permiten a los desarrolladores almacenar grandes cantidades de datos no estructurados, lo que les da mucha flexibilidad.
A principios de la década del 2000, un documento publicado por Google sobre BigTable, la base de datos de columnas anchas, analizaba el amplio rango de posibilidades para un sistema de almacenamiento distribuido. En 2009, se produjo un gran aumento de las bases de datos NoSQL, con el surgimiento de dos bases de datos clave orientadas a documentos, MongoDB y CouchDB.
En la década de 2010, surgieron distintos tipos de bases de datos NoSQL y se generalizó la aceptación de NoSQL, con empresas que estaban cada vez más orientadas a los datos.
Además, el Agile Manifesto ganaba popularidad, y los ingenieros de software repensaban la forma de desarrollar software. Rápidamente tuvieron que adaptarse a los requisitos cambiantes, iterar rápidamente y hacer cambios en toda la pila de software, hasta la base de datos. Las bases de datos NoSQL les aportaron esta flexibilidad.
La computación en la nube también ganó popularidad, y los desarrolladores comenzaron a utilizar nubes públicas para alojar sus aplicaciones y datos. Querían tener la capacidad de distribuir datos en varios servidores y regiones para hacer que sus aplicaciones fueran resilientes, escalar horizontalmente, en lugar de escalar verticalmente, y ubicar geográficamente sus datos de manera inteligente. Algunas bases de datos NoSQL, como MongoDB Atlas, ofrecen estas capacidades.
Debido al crecimiento exponencial de la digitalización, las empresas ahora recopilan todos los datos no estructurados posibles. Para poder analizar y derivar perspectivas en tiempo real procesables de ese big data, las empresas necesitan soluciones modernas que vayan más allá del simple almacenamiento. Las empresas necesitan una plataforma que pueda escalar, transformar, y visualizar datos fácilmente; crear tableros, informes y gráficas; y trabajar con IA y con herramientas de business intelligence para acelerar su productividad. Debido a su naturaleza flexible y distribuida, las bases de datos NoSQL (por ejemplo, MongoDB) se destacan en estas tareas.
Características de las bases de datos NoSQL
Las bases de datos NoSQL son flexibles, escalables y distribuidas. Los distintos tipos de bases de datos NoSQL tienen sus propias características.
A un alto nivel, las bases de datos NoSQL suelen tener las siguientes características:
- Computación distribuida
- Escalado
- Esquemas flexibles y un rico lenguaje del query
- Facilidad de uso para los desarrolladores
- Tolerancia a las particiones
- Alta disponibilidad
Cumplimiento de BASE
Las bases de datos NoSQL son compatibles con BASE, es decir, disponibilidad básica, estado blando y coherencia eventual. La disponibilidad básica se refiere a la capacidad del sistema de tolerar una falla parcial (como la pérdida de un nodo). Estado blanco significa que el sistema permite inconsistencias temporarias antes de, finalmente, lograr la coherencia de manera automática con el tiempo. El cumplimiento de BASE garantiza alta disponibilidad, un procesamiento de datos más rápido, escalabilidad y flexibilidad. Sin embargo, MongoDB también puede configurarse para ofrecer ACID compliance multidocumento.
Obtenga más información sobre las ventajas de las bases de datos NoSQL.
Base de datos relacional frente a base de datos NoSQL ejemplo
Veamos un ejemplo de almacenamiento de información sobre un usuario y sus pasatiempos. Necesitamos almacenar el nombre, apellido, teléfono celular, ciudad y pasatiempos del usuario.
En un sistema de gestión de bases de datos relacionales (RDBMS), probablemente crearíamos dos tablas: una para Usuarios y una para Pasatiempos.
Para recuperar toda la información de un usuario y sus pasatiempos, la información de la tabla Usuarios y de la tabla Pasatiempos deberá unirse.
El modelo de datos que diseñamos para una base de datos NoSQL dependerá del tipo de base de datos NoSQL que elijamos. Veamos cómo almacenar la misma información sobre un usuario y sus pasatiempos en una base de datos documental como MongoDB.
Para recuperar toda la información sobre un usuario y sus pasatiempos, puede recuperarse un único documento de la base de datos. No se requiere hacer uniones, lo que da como resultado queries más rápidas.
Para ver una versión más detallada de este ejemplo de modelo de datos, consulte Asociación de términos y conceptos de SQL a MongoDB.
Diferencias entre RDBMS y bases de datos NoSQL
Hay muchas diferencias entre los sistemas de gestión de bases de datos relacionales y bases de datos no relacionales. Una de las diferencias clave es la forma en que se modelan los datos en la base de datos. Algunas diferencias clave de cada característica se enumeran a continuación:
Modelado de datos
NoSQL: Los modelos de datos varían según el tipo de base de datos NoSQL que se usa, por ejemplo, clave-valor, documental, de grafos, de columnas anchas, lo que hace que el modelo sea adecuado para datos semiestructurados y no estructurados.
RDBMS: RDBMS usa una estructura de datos tabulares, con datos representados como un conjunto de filas y columnas, lo que hace que el modelo sea adecuado para datos estructurados.
Esquema
NoSQL: Ofrece un esquema flexible en el que cada conjunto de pares de documentos/fila-columna/clave-valor pueda contener distintos tipos de datos. Es más fácil cambiar el esquema, si es necesario, debido a la flexibilidad.
RDBMS: este es un esquema fijo en el que cada fila debe contener los mismos tipos de columnas predefinidos. Es difícil cambiar el esquema una vez que están almacenados los datos.
Lenguaje del query
NoSQL: varía según el tipo de base de datos NoSQL que se usa. Por ejemplo, MongoDB tiene MQL, y Neo4J usa Cypher.
RDBMS: usa lenguaje del query estructurado (SQL).
Escalabilidad
NoSQL: NoSQL está diseñado para escalado vertical y horizontal.
RDBMS: RDBMS está diseñado para escalado vertical. Sin embargo, puede extender las capacidades limitadas para escalado horizontal.
Relaciones de datos
NoSQL: las relaciones pueden ser anidadas, explícitas o implícitas.
RDBMS: las relaciones se definen a través de claves foráneas y se accede a ellas usando uniones.
Tipo de transacciones
NoSQL: las transacciones son compatibles con ACID o con BASE.
RDBMS: las transacciones son compatibles con ACID.
Rendimiento
NoSQL: NoSQL es adecuado para procesamiento en tiempo real, análisis de big data y entornos distribuidos.
RDBMS: RDBMS es adecuado para cargas de trabajo de transacciones y de lectura intensiva.
Coherencia de datos
NoSQL: esto ofrece coherencia eventual, en la mayoría de los casos.
RDBMS: esto ofrece alta coherencia de datos.
Computación distribuida
NoSQL: una de las razones principales para introducir NoSQL era para la computación distribuida, y las bases de datos NoSQL brindan soporte a almacenamiento de datos distribuido, escalado vertical y horizontal a través del particionado, replicación y clúster.
RDBMS: RDBMS brinda soporte a computación distribuida a través de clúster y replicación. Sin embargo, es menos escalable y flexible, ya que, tradicionalmente, no se diseñó para brindar soporte a una arquitectura distribuida.
Tolerancia a los fallos
NoSQL: NoSQL tiene la funcionalidad incorporada de tolerancia a los fallos y alta disponibilidad debido a la replicación de datos.
RDBMS: RDBMS usa replicación, copia de seguridad y mecanismos de recuperación. Sin embargo, como están diseñados para eso, es posible que deban implementarse medidas adicionales como mecanismos de recuperación ante desastres durante el desarrollo de aplicaciones.
Particionamiento de datos
NoSQL: se hace a través del particionado y la replicación.
RDBMS: brinda soporte a particionamiento basado en tablas y poda de particiones.
Obtenga más información sobre el particionamiento de datos aquí.
Asignación de datos a objetos
NoSQL: NoSQL almacena los datos de distintas formas, por ejemplo, como documentos JSON, bases de datos de columnas anchas o pares clave-valor. Proporciona abstracción a través de los frameworks de ODM (asignación de objetos-datos) para trabajar con datos de NoSQL de una manera orientada a los objetos.
RDBMS: RDBMS depende más de la asignación de datos a objetos para que haya una integración sin interrupciones entre las columnas de la base de datos y el código de aplicación orientado al objeto.
Para obtener más información sobre las diferencias entre las bases de datos relacionales y las bases de datos NoSQL, consulte Bases de datos NoSQL frente a bases de datos SQL.
Casos de uso de NoSQL
Los sistemas de bases de datos NoSQL se usan en casi todas las industrias para análisis en tiempo real, gestión de contenidos, aplicaciones de IoT, sistemas de recomendaciones, detección de fraudes, gestión de catálogos de productos y mucho más. Los casos de uso van desde los más críticos (por ejemplo, almacenamiento de datos financieros y registros de salud) hasta los más divertidos y frívolos (por ejemplo, almacenamiento de lecturas de IoT de una caja de arena inteligente para gatos).
¿Cuándo debería usarse NoSQL?
Al decidir qué base de datos usar, los encargados de la toma de decisiones suelen encontrar uno o más de los siguientes factores que hace que seleccionen una base de datos NoSQL:
- Rápido desarrollo de Agile
- Almacenamiento de datos estructurados y semiestructurados
- Grandes volúmenes de datos
- Requisitos para arquitectura de escalado horizontal
- Paradigmas modernos de aplicaciones como microservicios y transmisión en tiempo real
Consulte Cuándo usar una base de datos NoSQL y Explorar ejemplos de bases de datos NoSQL para obtener información más detallada de las razones enumeradas anteriormente.
Conceptos erróneos sobre las bases de datos NoSQL
Con el correr de los años, muchos conceptos erróneos sobre las bases de datos NoSQL se han extendido por la comunidad de desarrolladores. En esta sección, analizaremos dos de los más comunes.
Concepto erróneo: los datos de relaciones son más adecuados para las bases de datos relacionales
Un error habitual es que las bases de datos NoSQL o las bases de datos no relacionales no almacenan bien los datos de relaciones. Las bases de datos NoSQL pueden almacenar datos de relaciones, solo que los almacenan de forma distinta a las bases de datos relacionales.
De hecho, al compararlas con las bases de datos relacionales, muchos descubren que el modelado de datos de relaciones en las bases de datos NoSQL es más sencillo que en las bases de datos relacionales, ya que los datos relacionados no deben dividirse entre las tablas. Los modelos de datos NoSQL permiten anidar los datos relacionados dentro de una sola estructura de datos.
Concepto erróneo: las bases de datos NoSQL no brindan soporte a transacciones de ACID
Otro error común es que las bases de datos NoSQL no brindan soporte a las transacciones de ACID. Algunas bases de datos NoSQL, como MongoDB, en realidad sí brindan soporte a las transacciones de ACID.
Tenga en cuenta que la forma en que los datos se modelan en las bases de datos NoSQL puede eliminar la necesidad de tener transacciones multiregistro en muchos casos de uso. Piense en el ejemplo anterior en el que almacenamos la información sobre un usuario y sus pasatiempos en un modelo relacional y en una base de datos documental. Para garantizar que la información del usuario y sus pasatiempos se actualizaba junta en una base de datos relacional, tuvimos que usar una transacción para actualizar los registros en las dos tablas. Para hacer lo mismo en una base de datos documental, pudimos actualizar un único documento, no se necesitó una transacción multiregistro.
Para obtener más información sobre los conceptos erróneos, consulte Todo lo que sabe sobre MongoDB está equivocado.
Tutorial de queries de NoSQL
Podría empezar con MongoDB, la base de datos NoSQL más popular, según DB-Engines. La forma más fácil de comenzar a usar MongoDB es con MongoDB Atlas. Atlas es la base de datos totalmente gestionada como servicio de MongoDB. Atlas tiene un nivel gratuito para siempre, que puede usarlo para practicar. Consulte el tutorial de MongoDB Atlas para comenzar.
Puede seguir interactuando con sus datos mediante Atlas Data Explorer para insertar nuevos documentos, editar documentos actuales y borrar documentos.
Cuando esté listo para probar queries más avanzadas que agreguen sus datos, cree un pipeline de agregación de datos. El framework de agregación de datos es una herramienta increíblemente potente para analizar sus datos. Para obtener más información, tome el curso gratis M121 de MongoDB University, Framework de agregación de datos en MongoDB.
Cuando quiera visualizar sus datos, consulte MongoDB Charts. Charts le permite crear tableros que se llena con visualizaciones de sus datos.
Resumen
Las bases de datos NoSQL proporcionan muchos beneficios, entre ellos, modelos de datos flexibles, escalado horizontal, queries veloces y facilidad de uso para los desarrolladores. Las bases de datos NoSQL son de distintos tipos, entre ellos, bases de datos documentales, bases de datos clave-valor, bases de datos de columnas anchas, bases de datos de grafos y bases de datos multimodelo.
MongoDB es la base de datos NoSQL más popular del mundo. Obtenga más información sobre MongoDB Atlas y pruebe el nivel gratuito.
¿Lo entusiasma aprender más ahora que tiene su propia cuenta de Atlas? Vaya a MongoDB University, donde puede recibir entrenamiento en línea gratis de los ingenieros de MongoDB y obtener una certificación de MongoDB. Quickstarts es otro gran lugar para comenzar; podrá comenzar a trabajar rápidamente con su lenguaje de programación favorito.