1.1 Cómo funciona una base de datos NoSQL

Las bases de datos NoSQL utilizan una variedad de modelos de datos para acceder y manipular datos. Estos tipos de bases de datos están optimizados para aplicaciones de uso intensivo de datos que requieren baja latencia y modelos de datos flexibles. Todo esto se logra suavizando los estrictos requisitos de consistencia de datos que son típicos para otros tipos de bases de datos.

Considere un ejemplo de modelado de esquema para una base de datos simple de libros.

  • En una base de datos relacional, una entrada de libro a menudo se divide en varias partes (o "normaliza") y se almacena en tablas separadas cuyas relaciones están definidas por restricciones de clave primaria y externa. En este ejemplo, la tabla Libros tiene las columnas ISBN , Título del libro y "ISBN".e"Autor"la tabla Autor-ISBN, yNombre del autoryId. del autorlas columnasAutorestablade ediciónNúmero. El modelo relacional está diseñado para mantener la integridad referencial entre las tablas de una base de datos. Los datos se normalizan para reducir la redundancia y generalmente se optimizan para el almacenamiento.

  • En una base de datos NoSQL, un registro de libro generalmente se almacena como un documento JSON. Para cada libro o elemento, los valores ISBN , Título del libro , Número de edición , Nombre del autor e ID del autor se almacenan como atributos en un solo documento. En este modelo, los datos están optimizados para un desarrollo intuitivo y escalabilidad horizontal.

1.2 ¿Para qué se pueden utilizar las bases de datos NoSQL?

Las bases de datos NoSQL son adecuadas para muchas aplicaciones modernas, como aplicaciones móviles, de juegos y web, que requieren bases de datos flexibles y escalables con alto rendimiento y una rica funcionalidad que pueda proporcionar la máxima usabilidad.

  • Flexibilidad _ Por lo general, las bases de datos NoSQL ofrecen esquemas flexibles, lo que permite un desarrollo más rápido y una implementación incremental. Debido al uso de modelos de datos flexibles, las bases de datos NoSQL son adecuadas para datos semiestructurados y no estructurados.

  • Escalabilidad . Las bases de datos NoSQL están diseñadas para escalar utilizando clústeres de hardware distribuidos, no agregando servidores costosos y confiables. Algunos proveedores de servicios en la nube ejecutan estas operaciones en segundo plano, proporcionando un servicio totalmente administrado.

  • Alto rendimiento . Las bases de datos NoSQL están optimizadas para modelos de datos específicos y patrones de acceso para lograr un mayor rendimiento que las bases de datos relacionales.

  • Amplia funcionalidad . Las bases de datos NoSQL proporcionan API ricas y tipos de datos que están diseñados específicamente para sus respectivos modelos de datos.

1.3 Tipos de bases de datos NoSQL

Las bases de datos NoSQL se utilizan donde no es muy conveniente almacenar datos en forma de tablas. Por lo tanto, se almacenan en formatos muy diferentes. Por lo general, hay 6 tipos de datos principales de bases de datos NoSQL.

Base de datos basada en pares clave-valor

Las bases de datos que utilizan pares clave-valor admiten una alta separabilidad y proporcionan una escala horizontal sin precedentes que no se puede lograr con otros tipos de bases de datos. Los buenos casos de uso para las bases de datos de valores clave son los juegos, la publicidad y las aplicaciones de IoT.

Por ejemplo, Amazon DynamoDB garantiza un funcionamiento estable de la base de datos con un retraso de no más de unos pocos milisegundos a cualquier escala. Este sólido rendimiento fue el principal motivo para migrar Snapchat Stories a DynamoDB, ya que esta característica de Snapchat está asociada con la mayor carga de escritura de almacenamiento.

Documento

En el código de la aplicación, los datos a menudo se representan como un objeto o documento en un formato similar a JSON porque es un modelo de datos eficiente e intuitivo para los desarrolladores. Las bases de datos de documentos permiten a los desarrolladores almacenar y consultar datos en una base de datos usando el mismo modelo de documento que usan en su código de aplicación. La naturaleza flexible, semiestructurada y jerárquica de los documentos y las bases de datos de documentos les permite evolucionar con las necesidades de las aplicaciones.

El modelo de documento funciona bien en catálogos, perfiles de usuario y sistemas de administración de contenido donde cada documento es único y cambia con el tiempo. Amazon DocumentDB (compatible con MongoDB) y MongoDB son bases de datos de documentos comunes que proporcionan API funcionales e intuitivas para un desarrollo ágil.

Bases de datos de grafos

Las bases de datos de gráficos facilitan el desarrollo y la ejecución de aplicaciones que funcionan con conjuntos de datos complejos. Los ejemplos típicos del uso de bases de datos de gráficos son las redes sociales, los servicios de recomendación, los sistemas de detección de fraude y los gráficos de conocimiento. Amazon Neptune es un servicio de base de datos de gráficos completamente administrado. Neptune es compatible con Property Graph y Resource Description Framework (RDF), lo que proporciona dos API de gráficos para elegir: TinkerPop y RDF/SPARQL. Las bases de datos de gráficos comunes incluyen Neo4j y Giraph.

BD en memoria

A menudo, las aplicaciones de juegos y publicidad utilizan tablas de clasificación, almacenamiento de sesiones y análisis en tiempo real. Dichas capacidades requieren una respuesta en unos pocos microsegundos, mientras que es posible un fuerte aumento en el tráfico en cualquier momento.

Amazon MemoryDB for Redis es un servicio de base de datos en memoria confiable y compatible con Redis que reduce la latencia de lectura a milisegundos y brinda confiabilidad en múltiples zonas de disponibilidad. MemoryDB está diseñado específicamente para un rendimiento y confiabilidad ultra altos, por lo que puede usarse como la base de datos principal para aplicaciones modernas basadas en microservicios.

Amazon ElastiCache es un servicio de almacenamiento en caché en memoria totalmente administrado compatible con Redis y Memcached para atender cargas de trabajo de baja latencia y alto rendimiento. Los clientes como Tinder, que necesitan que sus aplicaciones respondan en tiempo real, utilizan sistemas de almacenamiento en memoria en lugar de en disco. Otro ejemplo de un almacén de datos especialmente diseñado es Amazon DynamoDB Accelerator (DAX). DAX permite que DynamoDB lea datos varias veces más rápido.

Buscar bases de datos

Muchas aplicaciones generan registros para que a los desarrolladores les resulte más fácil solucionar y solucionar problemas. Amazon OpenSearch es un servicio especialmente diseñado para la visualización y el análisis casi en tiempo real de flujos de datos generados automáticamente mediante la indexación, agregación y búsqueda de registros y métricas semiestructurados.

Además, Amazon OpenSearch es un servicio de búsqueda de texto completo potente y de alto rendimiento. Expedia aprovecha más de 150 dominios de servicio de Amazon OpenSearch, 30 TB de datos y 30 mil millones de documentos para una variedad de casos de uso de misión crítica, desde el monitoreo operativo y la resolución de problemas hasta el seguimiento de la pila de aplicaciones distribuidas y la optimización de costos.

1.4 Comparación de bases de datos SQL (relacional) y NoSQL (no relacional)

NoSQL tiene muchas ventajas, por lo que, al menos en teoría, debería saber que la herramienta que necesita ya existe antes de escribirla usted mismo. A continuación daré una comparación de las bases de datos NoSQL y SQL:

Cargas de trabajo adecuadas

Las bases de datos relacionales están diseñadas para aplicaciones transaccionales y de procesamiento de transacciones en tiempo real (OLTP) altamente consistentes y son adecuadas para el procesamiento analítico en tiempo real (OLAP).

Las bases de datos NoSQL están diseñadas para funcionar con una variedad de patrones de acceso a datos, incluidas las aplicaciones de baja latencia. Las bases de datos de búsqueda NoSQL están diseñadas para el análisis de datos semiestructurados.

Modelo de datos

El modelo relacional normaliza los datos y los transforma en tablas que constan de filas y columnas. Un esquema define rígidamente tablas, filas, columnas, índices, relaciones entre tablas y otros elementos de la base de datos. Tal base de datos asegura la integridad de los datos de referencia en las relaciones entre tablas.

Las bases de datos NoSQL proporcionan una variedad de modelos de datos, como pares clave-valor, documentos y gráficos que están optimizados para un alto rendimiento y escalabilidad.

Propiedades del ÁCIDO

Las bases de datos relacionales proporcionan un conjunto de propiedades ACID: atomicidad, consistencia, aislamiento, confiabilidad.

  • La atomicidad requiere que una transacción se ejecute en su totalidad o no se ejecute en absoluto.
  • Coherencia significa que tan pronto como se completa una transacción, los datos deben ajustarse al esquema de la base de datos.
  • El aislamiento requiere que las transacciones paralelas se ejecuten por separado.
  • La confiabilidad se refiere a la capacidad de recuperar el último estado guardado después de una falla inesperada del sistema o un corte de energía.

Las bases de datos NoSQL a menudo ofrecen un compromiso, relajando los requisitos rígidos de las propiedades ACID a favor de un modelo de datos más flexible que permite la escala horizontal. Esto convierte a NoSQL en una excelente opción para casos de uso de gran ancho de banda y baja latencia que requieren un escalado horizontal más allá de una sola instancia.

Actuación

El rendimiento depende principalmente del subsistema del disco. La optimización de las consultas, los índices y la estructura de la tabla suele ser necesaria para obtener el máximo rendimiento.

El rendimiento normalmente depende del tamaño del clúster de hardware subyacente, la latencia de la red y la aplicación de llamada.

Escalada

Las bases de datos relacionales suelen escalar aumentando la potencia informática del hardware o agregando copias separadas para las cargas de trabajo de lectura.

Las bases de datos NoSQL suelen admitir una alta separabilidad a través de patrones de acceso escalables basados ​​en una arquitectura distribuida. Esto mejora el rendimiento y ofrece un rendimiento constante a una escala casi ilimitada.

API

Las solicitudes para escribir y recuperar datos se escriben en SQL. Estas consultas son analizadas y ejecutadas por una base de datos relacional.

Las API orientadas a objetos permiten a los desarrolladores de aplicaciones escribir y recuperar fácilmente estructuras de datos. Mediante claves de partición, las aplicaciones pueden buscar pares clave-valor, conjuntos de columnas o documentos semiestructurados que contengan objetos en serie y atributos de aplicación.