Cuando la última vez preguntamos "¿Qué diablos es?", estábamos viendo la plataforma de transmisión de datos compatible con el protocolo __ Apache Kafka __®
Flink fue aceptado inicialmente como un proyecto Apache en diciembre de 2014, por lo que ha existido durante un tiempo. El crecimiento del procesamiento de flujo ha llevado a un interés y uso acelerados en los últimos años. Flink es un sistema un tanto difícil de implementar y usar internamente, que requiere talento de ingeniería dedicado.
Voy a tomar prestado de la página web de Apache Flink aquí. Apache Flink es un marco y un motor de procesamiento distribuido para cálculos con estado sobre flujos de datos ilimitados y acotados. Flink ha sido diseñado para ejecutarse en todos los entornos de clúster comunes y realizar cálculos a velocidad en memoria y a cualquier escala. No quiero replicar más de lo que hay en su sitio web, así que si no estás seguro acerca de Flink, échale un vistazo.
En su forma más básica, DeltaStream te brinda el poder de Flink sin tener que lidiar con Flink. En absoluto. Para mi prueba, utilicé su
Cuando te registras, obtienes una prueba gratuita de 14 días. Se crea un clúster de Kafka de muestra llamado "trial_store" que puedes usar en lugar de tus propios datos para probar. La demostración contiene una serie de temas con los que puedes jugar. Los íconos debajo de ACCIONES te permiten eliminar un tema o ver detalles y contenido sobre el tema.
Aquí están los detalles del tema de páginas vistas como referencia, que usaremos más adelante.
Bien, tenemos un clúster de Kafka en funcionamiento y temas en él. Ahora, hagamos algo interesante. Como se mencionó en la introducción, lo más interesante que puedo hacer es enriquecer o filtrar datos mientras están en tránsito antes de que aterricen en su destino final, como una base de datos, un almacén o un lago. Para esos fines, vamos al espacio de trabajo.
Esta parte me costó un poco acostumbrarme. Una base de datos y un esquema en DeltaStream son simplemente carpetas organizativas. Puedes crear 'n' cantidad de bases de datos y, dentro de una base de datos, puedes tener 'n' cantidad de esquemas. Los esquemas contendrán el diseño de definición de tus objetos DeltaStream conocidos como STREAM, CHANGELOG, MATERIALIZED VIEW y TABLE. Una tabla se relaciona con una tabla de base de datos en algo como PostgreSQL, y la vista materializada es una forma de conservar los datos en un conjunto de resultados sin colocarlos en algún lugar específico. No voy a hacer nada con ninguno de ellos en este blog; me voy a centrar en Stream y Changelog.
Estoy creando un flujo del tema de vistas de página en el clúster de Kafka en la siguiente captura de pantalla. Pienso en ello como si se estuviera creando una definición de tabla del tema. Hemos asignado los nombres de los campos y les hemos indicado qué tema utilizar y cuál es el formato de los datos. No tenemos que justificar por completo el clúster trial_store, ya que está configurado como predeterminado en el cuadro combinado de la parte superior. Una vez que se ejecuta ese comando, aparecerá en TestDB.public. Luego puedo consultarlo con algo como SELECT * FROM PAGEVIEWS y comenzaré a ver los datos en el panel de resultados de la parte inferior.
A continuación, declaro un registro de cambios respaldado por el tema del usuario y ordenado por ID de usuario. Un registro de cambios es similar a un flujo, pero permite interpretar eventos en un tema como eventos UPSERT. Los eventos requieren una clave principal; DeltaStream interpreta cada evento como una inserción o actualización para la clave principal dada. En este caso, el registro de cambios refleja detalles específicos por usuario, como género e intereses.
Aquí es donde empezamos a divertirnos. Voy a crear una nueva secuencia que enriquece la secuencia de vistas de página con datos del registro de cambios users_log utilizando el ID de usuario como el valor clave para unirse. Esto ahora me da un tema único en el clúster con datos de dos temas diferentes. Desde aquí, puedo filtrarlo utilizando algo como regionid y escribir los resultados de esa consulta en un destino final, como una base de datos, un almacén o un lago. Esto me permitió enriquecer y filtrar los datos en tránsito antes de que llegaran, mejorando así la latencia y reduciendo los costos de computación y almacenamiento.
Entonces, ¿qué diablos es DeltaStream? Es una forma muy sencilla de usar Apache Flink sin saber nada sobre él ni hacer nada directamente con él. En mi ejemplo, viste lo sencillo que fue conectarse a Apache Kafka y luego leer, unir y filtrar los datos. Otras conexiones compatibles actualmente son Kinesis, PostgreSQL, Snowflake y Databricks, y me dijeron que ClickHouse e Iceberg pronto estarán disponibles.
En definitiva, DeltaStream te ofrece el poder de Apache Flink sin tener que lidiar con Apache Flink, y puedes hacerlo usando SQL en lugar de Java. Si trabajas con transmisión de datos o buscas implementarla, esta es definitivamente una solución muy inteligente y conveniente.
Consulta mis otros artículos de What the Heck is… en los enlaces que aparecen a continuación:
**