Modelo de flujo de datos oportuno y náyade fue realizado por un equipo de Microsoft Research en Silicon Valley en 2013 y está disponible bajo la licencia de código abierto Apache 2.0. Náyade es un sistema de código abierto basado en «.Net» que fue desarrollado para alto rendimiento, baja latencia y cómputo incremental sobre otras técnicas actuales de procesamiento por lotes, procesamiento de gráficos y sistemas de procesamiento de flujo tales como MapReduce, Dryad, Spark, Storm, Pregel, GraphLab, etc. Puede tomarse como el siguiente nivel de pensamiento después de Dryad, que utilizó Gráficos Acíclicos Dirigidos (DAG), ya que Naiad también admite gráficos de flujo de datos dirigidos con ciclos estructurados.

Naiad coordina todos los trabajos de procesamiento por marcas de tiempo. Estas marcas de tiempo se agregan a los mensajes mediante un flujo de datos oportuno, que fluye entre vértices en el gráfico. Esta característica permite al modelo de varias maneras, como vértices con estado para consumir y producir mensajes de forma asíncrona, bucles estructurados que permiten la retroalimentación en el flujo de datos y notificaciones de vértices cada vez que se han recibido todos los registros para una entrada o bucle dado.

Contribución

Muchos algoritmos de big data contienen bucles, y estos bucles a menudo dependen de los datos, y mantiene el cálculo iterativo hasta que la respuesta ya no cambia. Cuando la respuesta comienza a estabilizarse, hay una redundancia de datos entre cada iteración y las iteraciones anteriores, ya que gran parte de los datos en ambas iteraciones son iguales.

En los últimos años, se introdujeron grandes plataformas de datos como Hadoop y las personas eran más ambiciosas para procesar sus datos en la nube y querían hacer el procesamiento de gráficos, procesamiento de flujo, procesamiento por lotes con enormes fuentes de datos. Esos problemas llevan al equipo de Microsoft hacia la implementación de Naiad. Está diseñado para resolver los problemas desafiantes mencionados anteriormente con un soporte de pocos factores clave como ejecutar bucles, mantener el estado, reaccionar rápidamente a los datos entrantes y proporcionar un entorno de alto rendimiento para ejecutarse en un sistema distribuido escalable.

Algunas de las características proporcionadas por Naiad se pueden lograr con los sistemas existentes, pero esas aplicaciones dependen de diferentes plataformas y tienen diferentes efectos sobre la eficiencia, el mantenimiento y la simplicidad. Naiad combina todas estas características en un marco general que admite transmisión de baja latencia, procesamiento por lotes de alto rendimiento, así como la coordinación dentro de un flujo de datos.

Naiad ejecuta programas simples con una velocidad de plataformas de propósito general existentes y programas complejos con una velocidad de sistemas especializados para aprendizaje automático, análisis gráfico y procesamiento de flujo. Lo más importante es que Naiad se puede utilizar de manera efectiva en una gama de programas simples para sistemas distribuidos a gran escala. Naiad permite el poder del análisis gráfico, el aprendizaje automático y el procesamiento de flujo en un solo marco.

Esta es la primera solución para unir el poder de estas tecnologías. Puede ser posible combinar los sistemas existentes y encontrar algún tipo de solución para un escenario dado, pero cuando se compara con Naiad como una solución de plataforma única, es típicamente más eficiente, mantenible y extensible.