¿Qué es NoSQL?

Bases de datos no relacionales con excelente rendimiento y modelos de datos flexibles

¿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 tienen esquemas flexibles para crear aplicaciones modernas. Las bases de datos NoSQL son ampliamente reconocidas porque son fáciles de desarrollar, su funcionalidad y el rendimiento a escala. Usan una variedad de modelos de datos, que incluyen documentos, gráficos, clave-valor, en-memoria y búsqueda. Esta página incluye recursos para ayudarlo a comprender mejor las bases de datos NoSQL y comenzar.

Durante décadas, el modelo de datos predominante que se usó para el desarrollo de aplicaciones fue el modelo de datos relacionales utilizado por bases de datos relacionales como Oracle, DB2, SQL Server, MySQL y PostgreSQL. No fue sino hasta mediados y finales de la década del 2000 que otros modelos de datos 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". En general, este término se usa de manera intercambiable con "no relacional".


Novedades de las bases de datos no relacionales de AWS diseñadas con fines específicos

¿Cómo funciona una base de datos NoSQL (no relacionales)?

Las bases de datos NoSQL utilizan una variedad de modelos de datos para acceder y administrar datos, como documentos, gráficos, clave-valor, en-memoria y búsqueda. Estos tipos de bases de datos están optimizados específicamente para aplicaciones que requieren grandes volúmenes de datos, baja latencia y modelos de datos flexibles, lo que se logra mediante la flexibilización de algunas de las restricciones de coherencia de datos en otras bases de datos.

Considere el 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, normalizada para reducir la redundancia y, generalmente, está optimizada para el almacenamiento.
  • En una base de datos NoSQL, el registro de un libro generalmente se almacena como un documento JSON. Para cada libro, el elemento, ISBN, Título del libro, Número de edición, Nombre autor y IDAutor se almacenan como atributos en un solo documento. En este modelo, los datos están optimizados para un desarrollo intuitivo y escalabilidad horizontal.

¿Por qué debería usar una base de datos NoSQL?

Las bases de datos NoSQL se adaptan perfectamente a muchas aplicaciones modernas, como dispositivos móviles, web y juegos, que requieren bases de datos flexibles, escalables, de alto rendimiento y altamente funcionales para proporcionar excelentes experiencias de usuario.

  • 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 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 fuera del alcance, como un servicio completamente administrado.
  • Alto rendimiento: la base de datos NoSQL está optimizada para modelos de datos específicos (como documentos, clave-valor y gráficos) y patrones de acceso que permiten un mayor rendimiento que el intento de 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.

Tipos de bases de datos NoSQL

nosql_keyvalue_g

Clave-valor: las bases de datos clave-valor son altamente divisibles y permiten escalado horizontal a escalas que otros tipos de bases de datos no pueden alcanzar. Los casos de uso como juegos, tecnología publicitaria e IoT se prestan particularmente bien con el modelo de datos clave-valor. Amazon DynamoDB está diseñado para proporcionar una latencia de milisegundos constate de un solo dígito para cualquier escala de cargas de trabajo. Este rendimiento coherente responde en gran parte por qué la función de historias de Snapchat, (que incluye la carga de trabajo del escritura de almacenamiento más grande de Snapchat) se trasladó a DynamoDB.

nosql_document_g

Documento: algunos desarrolladores no piensan en su modelo de datos en términos de filas y columnas desnormalizadas. Normalmente, en el nivel de aplicación, los datos se representan como un documento JSON porque es más intuitivo para los desarrolladores pensar en su modelo de datos como un documento. La popularidad de las bases de datos de documentos ha crecido porque los desarrolladores pueden conservar los datos en una base de datos utilizando el mismo formato de modelo de documentos que usan en su código de aplicación. DynamoDB y MongoDB son bases de datos de documentos muy conocidas que proporcionan API poderosas e intuitivas para un desarrollo flexible y ágil.

nosql_graph_g

Gráfico: el propósito de una base de datos de gráficos es facilitar la creación y la ejecución de aplicaciones que funcionan con conjuntos de datos altamente conectados. Los casos de uso típicos para una base de datos de gráficos 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 gráficos completamente administrado. Neptune admite tanto el modelo de Property Graph como el Resource Description Framework (RDF), que ofrece la opción de dos API de gráficos: TinkerPop y RDF/SPARQL. Las bases de datos de gráficos populares incluyen Neo4j y Giraph.

nosql_inmemory_g

En memoria: las aplicaciones de juegos y tecnología publicitaria tienen casos de uso como tablas de clasificación, tiendas de sesión y análisis en tiempo real que requieren tiempos de respuesta de microsegundos y pueden tener grandes picos de tráfico en cualquier momento. Amazon ElastiCache ofrece Memcached y Redis, para servir cargas de trabajo de baja latencia y alto rendimiento, como McDonald’s, en las que no se pueden servirse con almacenes de datos basados en disco. Amazon DynamoDB Accelerator (DAX) es otro ejemplo de un almacén de datos especialmente diseñado. DAX hace que DynamoDB lea una orden de magnitud más rápida.

nosql_search_g

Buscar: muchas aplicaciones generan registros para ayudar a los desarrolladores a solucionar problemas. Amazon Elasticsearch Service (Amazon ES) 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. Amazon ES también es un poderoso motor de búsqueda de alto rendimiento para casos de uso de búsqueda de texto completo. Expedia está utilizando más de 150 dominios de Amazon ES, 30 TB de datos y 30 mil millones de documentos para una variedad de casos de uso críticos, que van desde el monitoreo operativo y la resolución de problemas, hasta el seguimiento de la pila de aplicaciones distribuidas y la optimización de precios.

SQL (relacional) en comparación con las NoSQL (no relacionales)

Aunque hay muchos tipos de bases de datos NoSQL con distintas características, la siguiente tabla muestra algunas de las diferencias entre las bases de datos SQL y las NoSQL.

  Bases de datos relacionales Bases de datos NoSQL

Cargas de trabajo óptimas

Las bases de datos relacionales están diseñadas para aplicaciones de procesamiento de transacciones online (OLTP) altamente coherentes y transaccionales, y son buenas para el procesamiento analítico online (OLAP). Las bases de datos clave-valor, documentos, gráficos y en memoria de NoSQL están diseñadas para OLTP para una serie de 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, que incluyen documentos, gráficos, clave-valor, en-memoria y búsqueda.
Propiedades ACID

Las bases de datos relacionales ofrecen propiedades de atomicidad, coherencia, aislamiento y durabilidad (ACID):

  • La atomicidad requiere que una transacción se ejecute por completo o no se ejecute en absoluto.
  • La coherencia requiere que una vez confirmada una transacción, los datos deban acoplarse al esquema de la base de datos.
  • El aislamiento requiere que las transacciones simultáneas se ejecuten por separado.
  • La durabilidad requiere la capacidad de recuperarse de un error inesperado del sistema o de un corte de energía y volver al último estado conocido.
Las bases de datos NoSQL a menudo hacen concesiones al flexibilizar algunas de las propiedades ACID de las bases de datos relacionales para 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 en forma ascendente 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 normalmente se pueden particionar porque los patrones de acceso de valores clave son escalables 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 en memoria. 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.

SQL en comparación con Terminología 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
Lista
Lista
Clave principal

Introducción a DynamoDB

Es muy fácil comenzar a usar DynamoDB. Consulte la página web Introducción a Amazon DynamoDB para crear su primera tabla con unos pocos clics. También puede descargar un documento técnico de AWS, para aprender las prácticas recomendadas para la migración de cargas de trabajo de un sistema de administración de bases de datos relacionales (RDBMS) a DynamoDB.

¿Qué es Amazon DynamoDB?