Para ver una versión más detallada de este ejemplo de modelado de datos, lea Términos y conceptos de mapeo de SQL a MongoDB.
Diferencias entre bases de datos RDBMS y NoSQL
Hay una variedad de diferencias entre los sistemas de administración de bases de datos relacionales y las 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 utilizada, por ejemplo, clave-valor, documento, gráfico y columna ancha, lo que hace que el modelo sea adecuado para datos semiestructurados y no estructurados.
RDBMS: RDBMS emplea una estructura de datos tabular, con datos representados como un conjunto de filas y columnas, lo que hace que el modelo sea adecuado para datos estructurados.
Esquema
NoSQL: Proporciona un esquema flexible en el que cada conjunto de pares de documentos/columna, columna y valor clave puede contener diferentes tipos de datos. Es más fácil cambiar el esquema, si es necesario, debido a la flexibilidad.
RDBMS: Este es un esquema fijo donde cada fila debe contener los mismos tipos de columna predefinidos. Es difícil cambiar el esquema una vez que se almacenan los datos.
Lenguaje de consulta
NoSQL: Varía según el tipo de base de datos NoSQL empleada. Por ejemplo, MongoDB tiene MQL, y Neo4J usa Cypher.
RDBMS: Emplea el lenguaje de consulta estructurado (SQL).
Escalabilidad
NoSQL: NoSQL está diseñado para el escalado vertical y horizontal.
RDBMS: RDBMS está diseñado para escalamiento vertical. Sin embargo, puede ampliar las capacidades limitadas para el 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 mediante uniones.
Tipo de transacción
NoSQL: Las transacciones son ACID- o compatible con BASE.
RDBMS: Las transacciones cumplen 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 gran lectura y transacciones.
Consistencia de datos
NoSQL: Esto ofrece una alta consistencia de datos.
RDBMS: Esto ofrece consistencia eventual, en la mayoría de los casos.
Computación distribuida
Una de las principales razones para introducir NoSQL fue la computación distribuida, y las bases de datos NoSQL admiten el almacenamiento de datos distribuido, el escalado vertical y horizontal a través de la fragmentación, la replicación y la agrupación en clústeres.
RDBMS: RDBMS soporta la computación distribuida a través de clustering y replicación. Sin embargo, es menos escalable y flexible, ya que no está diseñado tradicionalmente para admitir la arquitectura distribuida.
Tolerancia a fallos
NoSQL: NoSQL tiene tolerancia a fallos incorporada y alta disponibilidad debido a la replicación de datos.
RDBMS: RDBMS emplea mecanismos de replicación, copia de seguridad y recuperación. Sin embargo, dado que están diseñados para estos, es posible que sea necesario implementar medidas adicionales, como mecanismos de recuperación ante desastres, durante el desarrollo de la aplicación.
Partición de datos
NoSQL: Se realiza mediante la partición y la replicación.
RDBMS: Admite particiones basadas en tabla y poda de particiones.
Más información sobre partición de datos aquí.
Mapeo de datos a objetos
NoSQL: NoSQL almacena los datos de diversas maneras, por ejemplo, como documentos JSON, almacenes de columnas anchos o pares de clave y valor. Proporciona abstracción a través de los marcos ODM (mapeo de datos de objetos) para trabajar con datos NoSQL de manera orientada a objetos.
RDBMS: RDBMS se basa más en la asignación de datos a objetos para que haya una integración perfecta entre las columnas de la base de datos y el código de la aplicación orientado a objetos.
Para obtener más información sobre las diferencias entre las bases de datos relacionales y las bases de datos NoSQL, lea NoSQL vs SQL Databases.
Casos de uso de NoSQL
Los sistemas de bases de datos NoSQL se emplean en casi todas las industrias, para análisis en tiempo real, gestión de contenidos, aplicaciones de IoT, sistemas de recomendación, 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, el almacenamiento de datos financieros y registros de atención médica) a los más divertidos y frívolos (por ejemplo, almacenar lecturas de IoT de una caja de arena para gatitos inteligentes).
¿Cuándo se debe usar NoSQL?
A la hora de decidir qué base de datos emplear, los responsables de la toma de decisiones suelen encontrar uno o varios de los siguientes factores que les llevan a seleccionar una base de datos NoSQL:
- Desarrollo ágil de ritmo rápido
- Almacenamiento de datos estructurados y semiestructurados
- Grandes volúmenes de datos
- Requisitos para la arquitectura de escalabilidad horizontal
- Paradigmas de aplicaciones modernos como microservicios y streaming en tiempo real
Consulte Cuándo emplear bases de datos NoSQL y Exploración de ejemplos de bases de datos NoSQL para obtener información más detallada sobre las razones enumeradas anteriormente.
Conceptos erróneos de la base de datos NoSQL
A lo largo de los años, muchos conceptos erróneos sobre las bases de datos NoSQL se han extendido por toda la comunidad de desarrolladores. En esta sección, discutiremos dos de los conceptos erróneos más comunes.
Concepto erróneo: los datos de relación son los más adecuados para bases de datos relacionales
Un error común 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 los almacenan de forma distinta a las bases de datos relacionales.
De hecho, en comparación con bases de datos relacionales, muchos se encuentran con que la modelización de las relaciones en bases de datos NoSQL es más fácil que en bases de datos relacionales, porque no es necesario separar los datos relacionados en tablas distintas. 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 admiten transacciones ACID
Otro error común es que las bases de datos NoSQL no admiten transacciones ACID. Algunas bases de datos NoSQL, como MongoDB, admiten, de hecho, transacciones ACID.
Tenga en cuenta que la forma en que se modelan los datos en las bases de datos NoSQL puede eliminar la necesidad de transacciones de varios registros en muchos casos de uso. Considere el ejemplo anterior en el que almacenamos información sobre un usuario y sus pasatiempos tanto en un modelo relacional como en una tienda de documentos. Para asegurarnos de que la información sobre un usuario y sus pasatiempos se actualicen juntos en una base de datos relacional, necesitaríamos usar una transacción para actualizar los registros en dos tablas. Para hacer lo mismo en un almacén de documentos, podríamos actualizar un solo documento, sin necesidad de realizar transacciones de varios registros.
Para obtener más información sobre conceptos erróneos comunes, lea Todo lo que sabe sobre MongoDB es incorrecto.
Tutorial de consulta NoSQL
Podría comenzar con MongoDB, la base de datos NoSQL más popular del mundo, según DB-Engines. La forma más sencilla de empezar a emplear MongoDB es MongoDB Atlas. Atlas es la base de datos totalmente administrada de MongoDB como servicio. Atlas tiene un nivel gratis para siempre, que puedes usar para jugar. Consulte el Tutorial de MongoDB Atlas para empezar.
Puede continuar interactuando con sus datos utilizando el Explorador de datos Atlas para insertar nuevos documentos, editar documentos existentes y eliminar documentos.
Cuando esté listo para probar consultas más avanzadas que agreguen sus datos, cree una canalización de agregación. El marco de agregación es una herramienta increíblemente poderosa para analizar sus datos. Para obtener más información, tome el curso gratis de MongoDB University MongoDB Aggregation.
Cuando quiera visualizar sus datos, consulte MongoDB Charts. Charts le permiten crear paneles de control que se llenan de visualizaciones de sus datos.
Resumen
Las bases de datos NoSQL proporcionan una variedad de beneficios, incluidos modelos de datos flexibles, escalado horizontal, consultas ultrarrápidas y facilidad de uso para los desarrolladores. Las bases de datos NoSQL vienen en una variedad de tipos, incluidos almacenes de documentos, bases de datos de valores clave, almacenes de columnas anchos, bases de datos de gráficos 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.
¿Estás emocionado por aprender más ahora que tienes tu propia cuenta Atlas? Vaya a la MongoDB University, donde puede obtener capacitación gratuita en línea de los ingenieros de MongoDB y obtener una certificación MongoDB. Los Quickstarts son otro gran lugar para comenzar; lo pondrán en marcha rápidamente con su lenguaje de programación favorito.