¿Qué son las bases de datos NoSQL?
Las bases de datos NoSQL están diseñadas específicamente para modelos de datos específicos y almacenan los datos en esquemas flexibles que se escalan con facilidad para aplicaciones modernas. Las bases de datos NoSQL son ampliamente reconocidas porque son fáciles de desarrollar, por su funcionalidad y el rendimiento a escala. Esta página incluye recursos que lo ayudan a comprender mejor las bases de datos NoSQL y comenzar a usarlas.
¿Cuáles son las ventajas de las bases de datos NoSQL?
Las aplicaciones modernas se enfrentan a varios desafíos que las bases de datos NoSQL de pueden resolver. Por ejemplo, las aplicaciones procesan un gran volumen de datos de fuentes dispares, como las redes sociales, los sensores inteligentes y las bases de datos de terceros. Todos estos datos dispares no encajan perfectamente en el modelo relacional. La aplicación de estructuras tabulares puede provocar redundancia, duplicación de datos y problemas de rendimiento a escala.
Las bases de datos NoSQL están diseñadas específicamente para modelos de datos no relacionales y tienen esquemas flexibles para crear aplicaciones modernas. Son ampliamente reconocidas por su facilidad de desarrollo, su funcionalidad y el rendimiento a escala. Los beneficios de las bases de datos NoSQL se enumeran a continuación.
Flexibilidad
Las bases de datos NoSQL generalmente ofrecen esquemas flexibles que permiten un desarrollo más rápido y más iterativo. El modelo de datos flexible hace que las bases de datos NoSQL sean ideales para datos semiestructurados y no estructurados.
Escalabilidad
Las bases de datos NoSQL generalmente están diseñadas para escalar horizontalmente usando clústeres distribuidos de hardware, en lugar de escalar añadiendo servidores caros y sólidos. Algunos proveedores de la nube manejan estas operaciones en segundo plano, como un servicio completamente administrado.
Alto rendimiento
Las bases de datos NoSQL están optimizadas para modelos de datos y patrones de acceso específicos. Esto permite un mayor rendimiento que si intentara lograr una funcionalidad similar con bases de datos relacionales.
Altamente funcional
Las bases de datos NoSQL proporcionan API altamente funcionales y tipos de datos que están diseñados específicamente para cada uno de sus respectivos modelos de datos.
¿Cuáles son los casos de uso de las bases de datos NoSQL?
Puede usar bases de datos NoSQL para crear una amplia variedad de aplicaciones móviles, de Internet of Things (Internet de las cosas (IoT)), de juegos y web de alto rendimiento que proporcionan excelentes experiencias de usuario a escala. La gama de bases de datos NoSQL y sus respectivos casos de uso son muy variados. Si bien es difícil presentar un conjunto representativo de casos de uso, a continuación proporcionamos algunos ejemplos ilustrativos para iniciar la reflexión y lo alentamos a obtener más información sobre cada base de datos NoSQL y sus respectivos casos de uso.
Administración de datos en tiempo en tiempo real
Puede ofrecer recomendaciones en tiempo real, personalización y experiencias de usuario mejoradas con bases de datos NoSQL. Por ejemplo, Disney+ ofrece su amplia biblioteca de contenido digital a más de 150 millones de suscriptores mediante la tecnología de base de datos NoSQL. Puede escalar y ofrecer funciones populares, como Seguir viendo, Mi lista y Recomendaciones personalizadas con Amazon DynamoDB.
Seguridad en la nube
Puede usar bases de datos de grafos para descubrir rápidamente relaciones complejas en sus datos. Por ejemplo, Wiz reimaginó la seguridad en la nube como un gráfico con Amazon Neptune. Wiz ayuda a sus clientes a mejorar su postura de seguridad al identificar y corregir rápidamente los riesgos más críticos. Utilizan un modelo gráfico almacenado en Amazon Neptune para descubrir la combinación tóxica de factores de riesgo que representan riesgos críticos. Los motores de riesgo de Wiz recorren el gráfico y, en cuestión de segundos, entrelazan una serie de factores de riesgo interconectados en un gráfico de seguridad.
Aplicaciones de alta disponibilidad
Las bases de datos NoSQL distribuidas son excelentes para crear aplicaciones de alta disponibilidad y baja latencia para mensajería, redes sociales, uso compartido de archivos y más. Por ejemplo, Snapchat tiene más de 290 millones de usuarios que envían miles de millones de imágenes y mensajes de video a diario. Utiliza sistemas de bases de datos NoSQL para reducir la latencia media del envío de mensajes en un 20 %.
Cómo funcionan las bases de datos NoSQL
Las bases de datos NoSQL utilizan una variedad de modelos de datos para acceder y administrar datos. Estos tipos de bases de datos están optimizados específicamente para aplicaciones que requieren modelos de datos flexibles, grandes volúmenes de datos y baja latencia, lo que se logra mediante la flexibilización de algunas de las restricciones de coherencia de datos en bases de datos relacionales. Existen diferencias en la implementación según el modelo de datos. Sin embargo, muchas bases de datos NoSQL utilizan Javascript Object Notation (JSON), un formato de intercambio de datos abierto que representa los datos como una colección de pares nombre-valor.
Ejemplo de base de datos NoSQL
Considere este ejemplo de modelado del esquema para una base de datos simple de libros:
- En una base de datos relacional, un registro de libros a menudo se enmascara (o “normaliza”) y se almacena en tablas separadas, y las relaciones se definen mediante restricciones de claves primarias y externas. En este ejemplo, la tabla Libros tiene las columnas ISBN, Título del libro y Número de edición, la tabla Autores tiene las columnas IDAutor y Nombre de autor y, finalmente, la tabla Autor-ISBN tiene las columnas IDAutor e ISBN. El modelo relacional está diseñado para permitir que la base de datos aplique la integridad referencial entre tablas en la base de datos, la cual está normalizada para reducir la redundancia y, generalmente, está optimizada para el almacenamiento.
- En una base de datos NoSQL, un registro de libros generalmente se almacena como un documento. Para cada libro, el elemento, ISBN, Título del libro, Número de edición, Nombre del autor y AuthorID se almacenan como atributos en un solo documento. En este modelo, los datos están optimizados para un desarrollo intuitivo y una escalabilidad horizontal.
Terminología de SQL en comparación con NoSQL
La siguiente tabla compara la terminología utilizada por las bases de datos NoSQL seleccionadas con la terminología utilizada por las bases de datos SQL.
SQL | MongoDB | DynamoDB | Cassandra | Couchbase |
---|---|---|---|---|
Tabla | Conjunto | Tabla | Tabla | Bucket de datos |
Fila | Documento | Elemento | Fila | Documento |
Columna | Campo | Atributo | Columna | Campo |
Clave principal | ObjectId | Clave principal |
Clave principal | ID del documento |
Índice | Índice | Índice secundario | Índice | Índice |
Ver | Ver | Índice secundario global | Vista materializada | Ver |
Tabla u objeto anidado | Documento incrustado | Mapa | Mapa | Mapa |
Matriz | Matriz | Lista | Lista | Lista |
¿Cuáles son los tipos de bases de datos NoSQL?
Existen varios sistemas de bases de datos NoSQL diferentes debido a las variaciones en la forma en que administran y almacenan los datos sin esquemas. A continuación, explicamos algunos de los tipos más comunes.
Base de datos de clave-valor
Las bases de datos de clave-valor son altamente particionables y permiten un escalado horizontal en niveles que otros tipos de bases de datos NoSQL no pueden lograr. Una base de datos de clave-valor almacena datos como un conjunto de pares clave-valor en los que una clave sirve como un identificador único. Las claves y los valores pueden ser cualquier cosa, desde objetos simples hasta objetos compuestos complejos. Los casos de uso como juegos, tecnología publicitaria e IoT se prestan particularmente bien con el diseño de datos de almacén clave-valor. Amazon DynamoDB está diseñado para proporcionar un rendimiento constante con una latencia de milisegundos de un solo dígito para cualquier escala de cargas de trabajo.
Bases de datos de documentos
Las bases de datos de documentos tienen el mismo formato de modelo de documento que los desarrolladores utilizan en el código de sus aplicaciones. Almacenan los datos como objetos JSON que son flexibles, semiestructurados y de naturaleza jerárquica. La naturaleza flexible, semiestructurada y jerárquica de los documentos y las bases de datos de documentos permite que evolucionen según las necesidades de las aplicaciones. El modelo de base de datos de documentos funciona bien con catálogos, perfiles de usuario y sistemas de administración de contenido en los que cada documento es único y evoluciona con el tiempo. Amazon DocumentDB (con compatibilidad para MongoDB) y MongoDB son bases de datos de documentos conocidas que proporcionan unas API poderosas e intuitivas para un desarrollo flexible e iterativo.
Bases de datos de grafos
El objetivo de las bases de datos de grafos es facilitar la creación y ejecución de aplicaciones que funcionen con conjuntos de datos con un nivel alto de conexión. Usan nodos para almacenar entidades de datos y periferias para almacenar relaciones entre entidades. Un borde siempre tiene un nodo inicial, un nodo final, un tipo y una dirección. Puede describir las relaciones entre elementos principales y secundarios, las acciones, la propiedad y similares. No hay límite para la cantidad y el tipo de relaciones que un nodo puede tener. Puede usar una base de datos de grafos para crear y ejecutar aplicaciones que funcionen con conjuntos de datos con un nivel alto de conexión. Los casos de uso típicos para una base de datos de grafos incluyen redes sociales, motores de recomendaciones, detección de fraude y gráficos de conocimiento. Amazon Neptune es un servicio de base de datos de grafos totalmente administrado que admite el modelo Property Graph y el resource description framework (RDF, marco de descripción de recursos) con la opción de dos API de gráficos (TinkerPop y RDF/SPARQL).
Bases de datos en memoria
Mientras que otras bases de datos no relacionales almacenan datos en discos o SSD, los almacenes de datos en memoria están diseñados para eliminar la necesidad de acceder a los discos. Son ideales para aplicaciones que requieren tiempos de respuesta de microsegundos o que tienen grandes picos de tráfico. Puede usarlas en aplicaciones de juegos y tecnología publicitaria para funciones como tablas de clasificación, tiendas de sesiones y análisis en tiempo real. Amazon MemoryDB para Redis es un servicio de base de datos en memoria duradero y compatible con Redis que ofrece latencia de lectura de microsegundos, latencia de escritura de milisegundos de un solo dígito y durabilidad Multi-AZ. Amazon ElastiCache es un servicio de almacenamiento en caché en memoria completamente administrado compatible con Redis y Memcached, para atender cargas de trabajo de baja latencia y alto rendimiento. El Acelerador de Amazon DynamoDB (DAX) es otro ejemplo de un almacén de datos diseñado específicamente que hace que las lecturas de DynamoDB sean mucho más rápidas.
Buscar en bases de datos
Una base de datos de motores de búsqueda es un tipo de base de datos no relacional que se dedica a la búsqueda de contenido de datos, como los registros de salida de las aplicaciones que utilizan los desarrolladores para solucionar problemas. Utilizan índices para categorizar características similares entre los datos y facilitar la capacidad de búsqueda. Las bases de datos de los motores de búsqueda están optimizadas para clasificar datos no estructurados, como imágenes y videos. Amazon OpenSearch Service está diseñado para proporcionar visualizaciones en tiempo real y análisis de datos generados por máquinas al indexar, agregar y buscar registros y métricas semiestructuradas.
¿Cuáles son las diferencias entre las bases de datos NoSQL y SQL?
Durante décadas, el modelo de datos predominante en el desarrollo de aplicaciones fue el modelo de datos relacionales que almacenaba los datos en tablas compuestas por filas y columnas. Se utilizó Structured Query Language (SQL, lenguaje de consulta estructurado) para crear y editar estas tablas relacionales. Las bases de datos SQL modelan las relaciones de datos como tablas. Las filas de la tabla representan una recopilación de valores relacionados de un objeto o una entidad. Cada columna de la tabla representa un atributo de los datos, y un campo (o celda de la tabla) almacena el valor real del atributo. Puede usar un relational database management system (RDBMS, sistema de administración de bases de datos relacionales) para acceder a los datos de muchas maneras diferentes sin tener que reorganizar las propias tablas de la base de datos.
No fue sino hasta mediados y finales de la década del 2000 que otros modelos de datos flexibles comenzaron a adoptarse y aumentó su uso significativamente. Para diferenciar y categorizar estas nuevas clases de bases de datos y modelos de datos, se acuñó el término NoSQL. NoSQL significa no solo SQL o sin SQL. Con frecuencia, los términos NoSQL y no relacional se usan indistintamente. Las diferencias clave entre las bases de datos relacionales y no relacionales se muestran en la siguiente tabla.
|
Bases de datos relacionales |
Bases de datos NoSQL |
Cargas de trabajo óptimas
|
Las bases de datos relacionales están diseñadas para aplicaciones de online transaction processing (OLTP, procesamiento de transacciones en línea) altamente coherentes y transaccionales. También son buenos para el online analytical processing (procesamiento analítico en línea (OLAP)). |
Las bases de datos NoSQL están diseñadas para varios patrones de acceso a datos que incluyen aplicaciones de baja latencia. Las bases de datos de búsqueda NoSQL están diseñadas para hacer análisis sobre datos semiestructurados.
|
Modelo de datos |
El modelo relacional normaliza los datos en tablas conformadas por filas y columnas. Un esquema define estrictamente las tablas, las filas, las columnas, los índices, las relaciones entre las tablas y otros elementos de las bases de datos. La base de datos impone la integridad referencial en las relaciones entre tablas. |
Las bases de datos NoSQL proporcionan una variedad de modelos de datos, como clave-valor, documentos, gráficos y columnas, que están optimizados para el rendimiento y la escala. |
Propiedades ACID |
Las bases de datos relacionales ofrecen propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID):
|
La mayoría de bases de datos NoSQL hace concesiones al flexibilizar algunas de las propiedades ACID de las bases de datos relacionales a favor de un modelo de datos más flexible que puede escalar horizontalmente. Esto hace que las bases de datos NoSQL sean una excelente opción para casos de uso de baja latencia y alto rendimiento que necesitan escalar horizontalmente más allá de las limitaciones de una sola instancia. |
Rendimiento |
Normalmente, el rendimiento depende del subsistema de disco. Se necesita la optimización de consultas, índices y estructura de tabla para lograr el máximo rendimiento. |
El rendimiento es, por lo general, depende del tamaño del clúster de hardware subyacente, la latencia de red y la aplicación que efectúa la llamada. |
Escalado |
Las bases de datos relacionales generalmente escalan verticalmente las capacidades de computación del hardware o la ampliación mediante la adición de réplicas para cargas de trabajo de solo lectura. |
Las bases de datos NoSQL suelen ser particionables. Esto se debe a que los patrones de acceso pueden escalar horizontalmente mediante el uso de arquitectura distribuida para aumentar el rendimiento que proporciona un rendimiento constante a una escala casi ilimitada. |
API |
Solicita almacenar y recuperar datos que están comunicados mediante consultas que se ajustan a un lenguaje de consulta estructurado (SQL). Estas consultas son analizadas y ejecutadas por la base de datos relacional. |
Las API basadas en objetos permiten a los desarrolladores almacenar y recuperar fácilmente estructuras de datos. Las claves de partición permiten que las aplicaciones busquen pares de clave-valor, conjuntos de columnas o documentos semiestructurados que contengan atributos y objetos de aplicación serializados. |
¿Cuándo debe elegir bases de datos NoSQL en lugar de bases de datos SQL?
Una base de datos NoSQL es la mejor opción para gestionar datos indeterminados, no relacionados o que cambian rápidamente. Su uso es intuitivo para los desarrolladores cuando la aplicación dicta el esquema de la base de datos. Puede usarlas para aplicaciones que cumplan las siguientes condiciones:
- Necesidad de esquemas flexibles que permitan un desarrollo más rápido e iterativo
- Prioridad en el rendimiento por encima de una sólida coherencia de los datos y para mantener las relaciones entre las tablas de datos (integridad referencial)
- Exigencia de un escalado horizontal mediante la fragmentación de los servidores
- Admisión de datos semiestructurados y sin estructurar
No siempre tiene que elegir entre un esquema de base de datos relacional y no relacional. Puede emplear una combinación de bases de datos SQL y NoSQL en sus aplicaciones. Este enfoque híbrido es bastante común y garantiza que cada carga de trabajo se asigne a la base de datos correcta para obtener una relación precio-rendimiento óptima.
¿Cómo puede AWS cumplir con los requisitos de su base de datos NoSQL?
AWS cuenta con varios servicios de bases de datos NoSQL para cumplir con todos sus requisitos de NoSQL. Por ejemplo:
- Amazon DynamoDB es un servicio de base de datos de clave-valor, totalmente administrado y sin servidor que proporciona un rendimiento uniforme de un solo dígito en milisegundos con una escalabilidad ilimitada.
- Amazon DocumentDB (con compatibilidad con MongoDB) es una base de datos de documentos JSON nativa completamente administrada que hace que sea fácil y rentable operar con cargas de trabajo de documentos clave, prácticamente a cualquier escala, sin tener que administrar infraestructura.
- Amazon Neptune es un servicio de base de datos de grafos totalmente gestionado y sin servidor diseñado para ofrecer una escalabilidad y disponibilidad superiores, con la capacidad de consultar miles de millones de relaciones en cuestión de segundos.
- Amazon MemoryDB para Redis es un servicio de base de datos en memoria duradero que ofrece tiempos de respuesta de lectura y escritura de microsegundos para un rendimiento ultrarrápido.
- Amazon ElastiCache es un servicio de almacenamiento de datos y caché en memoria totalmente gestionado y compatible con Redis y Memcached que ofrece un rendimiento en tiempo real y con costos optimizados.
- Amazon Keyspaces (para Apache Cassandra) es una base de datos de columnas anchas totalmente administrada y sin servidor, diseñada para ofrecer una disponibilidad de hasta el 99,999 % con replicación multirregional. Un servicio de bases de datos compatible con Apache Cassandra administrado, de alta disponibilidad y escalable.
- Amazon Timestream es una base de datos de serie temporal rápida, totalmente administrada y sin servidor que facilita el almacenamiento y el análisis de billones de eventos por día hasta 1000 veces más rápido que las bases de datos relacionales.
- Amazon OpenSearch Service es una suite de búsqueda y análisis distribuidos totalmente gestionados que permite la búsqueda, la supervisión y el análisis en tiempo real de datos empresariales y operativos.
Para comenzar a usar NoSQL en AWS, cree una cuenta gratuita hoy mismo.