Apache Ignite es una In-Memory Data Grid (IMDG) [Red de Datos en Memoria] de código abierto, base de datos distribuida, almacenamiento en caché y plataforma informática de alto rendimiento. Ofrece una gran cantidad de características y se integra bien con otros frameworks de Apache como Hadoop, Spark y Cassandra.
Entonces, ¿Por que necesitamos Apache Ignite? Se necesita de Apache Ignite por su Alto Rendimiento y Escalabilidad.
Definitivamente, la frase alto rendimiento es muy popular en la industria actualmente, pero es igual de ambiguo. No existe un umbral numérico establecido para cuando un rendimiento regular se convierte en alto rendimiento, al igual que no hay un umbral claro para cuando los datos se convierten en Big Data o cuando los servicios se convierten en Microservicios.
Afortunadamente, la cultura tiene a generar sus propios parámetros, y en informática, el término alto rendimiento generalmente se refiere a la destreza que poseen las supercomputadoras. La informática de alto rendimiento nos permite procesar grandes cantidades de datos lo más rápido posible.
Siguiendo la analogía de las supercomputadoras, podemos apilar muchas máquinas virtuales para procesar una tarea computacional intensiva, pero en las aplicaciones tradicionales centradas en bases de datos, el procesamiento paralelo no se escala linealmente. Si agregamos 10 máquinas más a la cuadrícula, no se procesará 10 veces más rápido. A lo sumo, puede ganar 2-4% de rendimiento.
Apache Ignite juega un rol importante aquí para lograr una mejora del rendimiento lineal del 20-30%. Mantiene los datos en la RAM para un procesamiento rápido y escala lineal. Si agrega más estaciones de trabajo al cluster, ofrecerá una mayor escalabilidad y ganancias de rendimiento.
Las bases de datos NoSQL se introdujeron para mitigar los problemas de escalabilidad de las bases de datos relacionales. Hay cuatro tipos de bases de datos NoSQL, que se utilizan para manejar diferentes casos de uso, pero aún así, una base de datos NoSQL no puede ayudarnos a escalar nuestro sistema para manejar datos transaccionales de alto volumen real. Apache Ignite ofrece API de almacenamiento en caché para procesar un gran volumen de datos transaccionales compatibles con ACID.
Si necesita procesar registros de manera transaccional y aún necesita una ganancia de rendimiento de 20-30% sobre una base de datos tradicional, Apache Ignite puede ofrecerle mejoras de alto rendimiento, escalabilidad lineal y transacciones compatibles con ACID con alta disponibilidad y resistencia.
Apache Ignite se puede utilizar para varios tipos de fuentes de datos, desde datos de transacciones de servicios financieras de gran volumen hasta flujos de datos de sensores IoT. Ignite almacena datos en RAM para un rendimiento de procesamiento rápido pero persitencia, puede conservar los datos en un almacén de datos de terceros, así como en el almacen de persistencia nativo de Ignite.
Ignite ofrece una API de consulta ANSI SQL para consultar datos, una API para realizar CRUD en cachés, transacciones ACID, una grid de computo y servicio, flujos y procesamiento de eventos complejos para API de Machine Learning.
NoSQL y NewSQL
Las bases de datos NoSQL entró en escena para resolver el cuello de botella de la escalabilidad de las RDBMS, finalmente son consistentes y siguen el teorema de CAP de la transacción distribuida. No ofrece consistencia transaccional, las uniones relacionales de SQL se escalan muchas veces más rápido que los RDBM. NewSQL es un nuevo tipo de base de datos que ofrece la transacción distribuida que soporta ACID y puede escalar. Apache Ignite puede denominarse una base de datos NewSQL
Este post se encuentra basado en el libro Apache Ignite Quick Start Guide de Sujoy Acharya.