Servicios web de Amazon, que ya ofrece una cartera de 15 bases de datos, ahora lanza una más. Amazon MemoryDB para Redis es una implementación de base de datos en tiempo real que se basa en parte en la plataforma Redis de código abierto, pero agrega durabilidad y persistencia. AWS posiciona esto como dirigido a clientes que requieren un servicio de base de datos completo en lugar de un caché para Redis, basándose en el supuesto de que los casos de uso serán bastante diferentes.

Lo vemos como una continuidad, siendo Amazon MemoryDB un servicio que continúa donde lo deja Amazon ElastiCache, y como una competencia directa con Redis Enterprise Cloud ofrecida por Redis, la empresa. La diferencia entre Amazon ElastiCache y MemoryDB es que el primero está pensado como un caché en memoria que funciona junto con una base de datos principal, mientras que MemoryDB es un servicio de base de datos completo en sí mismo diseñado para funcionar por sí solo.

Hasta ahora, el servicio ElastiCache de AWS ofrecía una opción de almacenamiento en caché de Rediso Memcached. El nuevo servicio es la respuesta de AWS a Redis Enterprise. Considere que Amazon MemoryDB es, en esencia, un nivel premium de ElastiCache para Redis; funcionalmente, es una base de datos en lugar de un caché, y técnicamente, es una implementación modificada del motor Redis que es compatible con él.

El telón de fondo de todo esto es que Redis de código abierto es una plataforma increíblemente popular. Clasificada entre las 10 principales bases de datos de db-Engines, según Sumologic, también es la base de datos más popular implementada en AWS. Y además, las encuestas de Stack Overflow de su comunidad enumeraron a Redis como la base de datos “más querida” por los desarrolladores durante los últimos cinco años consecutivos. Cada uno de los principales proveedores de la nube ofrece sus propios servicios de almacenamiento en caché basados ​​en Redis basados ​​en la versión de código abierto.

A los desarrolladores les encanta Redis porque se encuentra con los desarrolladores donde viven. Admite los tipos de datos con los que trabajan frecuentemente los desarrolladores, como hashes, listas, conjuntos, cadenas y conjuntos ordenados. Y, en segundo lugar, Redis admite lenguajes populares entre los desarrolladores, como C, C++, C#, JavaScript, Java, Go, Objective-C, Python y PHP.

La versatilidad ha sido durante mucho tiempo la clave del éxito de Redis. Se utiliza más comúnmente como caché en memoria que se encuentra junto a una base de datos transaccional, como SQL Server, MySQL u Oracle. Descarga el procesamiento en tiempo real desde las bases de datos de back-end. Esa es una tarea tan antigua como los monitores de transacciones de la década de 1990 y los almacenes de objetos en memoria (que eran almacenes de datos primitivos de clave/valor) de principios de la década de 2000.

Sin embargo, el desafío surge cuando los desarrolladores usan la caché de Redis para fines que no fueron previstos, siendo las bases de datos de series temporales para datos de IoT un excelente ejemplo (y un caso de uso popular). La caché de Redis ingiere los datos rápidamente, pero el problema es que carece de durabilidad y persistencia; cuando el nodo cae, los datos se pierden. Redis de código abierto puede escribir datos en un archivo en el disco que solo se puede agregar, pero esa medida es igualmente vulnerable si el nodo deja de funcionar.

Hasta ahora, cuando se trataba de Redis como una base de datos multimodelo o NoSQL en memoria completa, Redis Enterprise era el único juego disponible. Redis Labs ha apostado su negocio a ofrecer respuestas a los desarrolladores que requieren más que caché. En comparación con Redis de código abierto, Redis Enterprise admite enfoques de alta disponibilidad más granulares; estratificación de datos en almacenamiento SSD Flash; operación de base de datos totalmente geodistribuida (multimaster) mediante replicación activo-activo; soporte para múltiples nubes; y soporte de módulos Redis, que agregan extensibilidad a la base de datos (por ejemplo, soporte de búsqueda, datos de gráficos, SQLite incorporado, JSON y otras capacidades). Redis Enterprise Cloud se ejecuta en las tres nubes públicas principales, a través de los mercados de AWS y azur; y como una oferta con soporte conjunto en Google Cloud.

Y la necesidad de una base de datos Redis es lo que impulsó a AWS a presentar MemoryDB, aunque en este punto las capacidades de MemoryDB y Redis Enterprise difieren notablemente. Por ejemplo, Redis Enterprise ofrece almacenamiento por niveles para Flash, una capacidad que no está en la versión inicial. Sin embargo, un diferenciador importante de MemoryDB es su enfoque de la persistencia de datos. Emplea un registro de transacciones multi-AZ para mantener los datos duraderos y permitir el reemplazo y la recuperación sin pérdida de datos. Es importante destacar que el registro no no ejecutarse en los nodos de la base de datos de MemoryDB. Una vez que MemoryDB confirma una escritura en el registro de transacciones subyacente, se propaga a los nodos de réplica con una coherencia final garantizada.

Los clientes pueden lanzar clústeres de MemoryDB utilizando instancias de AWS Graviton2. Realizará lecturas de microsegundos y escrituras de milisegundos de un solo dígito gracias, no solo a depender de la memoria, sino también al enfoque de registro de transacciones liviano. Como se señaló, si bien actualmente no se admite la clasificación por niveles de datos más interesantes en Flash, no nos sorprendería si se admitiera en una versión futura.

Desde el principio, Amazon MemoryDB admitirá todas las API de datos principales de Redis de código abierto, incluidas cadenas, listas, conjuntos, conjuntos ordenados, hashes, transmisiones, geoespaciales, mapas de bits e hiperloglogs. Admitirá hasta 128 TBytes de memoria por clúster, con una réplica para cada fragmento. Además del almacenamiento flash por niveles, MemoryDB no admite actualmente otras características de Redis Enterprise, como la compatibilidad con módulos de Redis, algunos de los tipos de datos extendidos y la replicación geográfica activa-activa; Muchas de estas funciones están disponibles únicamente a través de la licencia de fuente disponible de Redis, que prohíbe a terceros venderlas si se ofrecen como base de datos u otros usos prohibidos. Por otro lado, Redis Enterprise, que actualmente está trabajando en Redis Raft para mayor durabilidad, aún no lo ha puesto a disposición general (esperamos que eso cambie pronto).

Al ofrecer un servicio que AWS considera compatible con Redis y que admite las API de Redis de código abierto, existen paralelos con los enfoques de AWS para auroras amazónicas (para MySQL y PostgreSQL) y Amazon Espacios clave (para Apache Cassandra): admiten las mismas API que el popular almacén de datos de código abierto con mejoras internas para respaldar una experiencia totalmente administrada. Para MemoryDB, los usuarios podrán crear aplicaciones utilizando las mismas estructuras de datos de Redis y API que ya utilizan, pero con los beneficios adicionales de una base de datos totalmente administrada.

Amazon MemoryDB para Redis comienza a llenar el vacío para los clientes que buscan una contraparte duradera de ElastiCache. En este punto, no tiene la misma amplitud de funcionalidades que Redis Enterprise o Redis Enterprise Cloud, al menos en lo que respecta a la compatibilidad con módulos de Redis o lecturas y escrituras geodistribuidas. Y mientras esto es no es la primera incursión Para AWS, al agregar capacidad en memoria a sus bases de datos, dada la popularidad de Redis, llena un vacío importante en su línea. A diferencia de la mayoría de las presentaciones de bases de datos de AWS que normalmente comienzan con una vista previa, MemoryDB ahora está disponible de forma generalizada.

Divulgación: AWS es un cliente de dbInsight.