Este artículo tiene como objetivo comparar el rendimiento entre dos conectores diferentes que se utilizan para enviar datos a Snowflake: el conector nativo de Snowflake y un conector custom desarrollado por Onibex. Las pruebas se llevaron a cabo tanto en Confluent Cloud como en Confluent Platform.
Se realizaron un total de 48 pruebas considerando dos tamaños de mensajes (500 KB y 1000 KB) con diferentes configuraciones de tareas (1, 2 y 4 tasks) y considerando dos escenarios:
La tabla no existe en el destino (Snowflake).
La tabla existe en el destino (Snowflake).
Las pruebas se ejecutaron en dos entornos diferentes:
Confluent Cloud
Confluent Platform
Para cada entorno, se probaron dos tamaños de mensajes: 500 KB y 1000 KB. Cada prueba se ejecutó con diferentes configuraciones de tasks (1, 2 y 4). En cada configuración, se enviaron batchs de 200 mensajes y 400 mensajes.
Desempeño del Conector de Snowflake:
El conector de Snowflake es eficiente al ejecutar queries, pero muestra lentitud significativa al insertar datos. Aunque su rendimiento en la ejecución de SQL es rápido, el proceso de envío de las instrucciones a la nube de Snowflake es considerablemente más lento debido a la latencia de red y al overhead en la conversión de datos a JSON.
El conector convierte los mensajes en formato JSON y los inserta en Snowflake, lo cual puede generar un overhead adicional.
Cuando se utiliza Confluent Cloud, se requiere que la región de Confluent y la región de Snowflake coincidan para obtener un mejor rendimiento.
En tareas con 1 worker, el rendimiento se ve afectado significativamente, con diferencias de hasta un 40% en comparación con el conector Onibex.
Desempeño del Conector Onibex:
El conector Onibex ha sido diseñado específicamente para optimizar la inserción de datos en Snowflake, logrando una mejor eficiencia en la transferencia de datos al evitar conversiones innecesarias y manejando conexiones de forma más eficaz.
A diferencia del conector de Snowflake, este conector utiliza un protocolo de comunicación más directo que reduce la latencia al enviar los datos a Snowflake.
Las pruebas realizadas muestran que el conector Onibex es más eficiente al manejar la carga de trabajo enviada a Snowflake, especialmente al aumentar la cantidad de workers.
En tareas con 1 worker, la mejora promedio es de un 25% en comparación con el conector de Snowflake.
En tareas con 2 workers, la mejora promedio es del 30%.
En tareas con 4 workers, la mejora promedio es del 35%.
Este rendimiento superior se mantiene consistente a lo largo de múltiples pruebas, demostrando su robustez y eficiencia.
En esta sección, se analizarán las diferencias en tiempo entre las pruebas realizadas para cada conector, calculando porcentajes de mejora o empeoramiento, considerando las horas de inicio y finalización de cada prueba proporcionadas en el archivo Excel.
Tamaño del mensaje: 500 KB
Tarea con 1 worker: Mejora del conector Onibex en un 12% respecto al conector Snowflake cuando la tabla ya existe.
Tarea con 2 workers: Mejora del conector Onibex en un 18% en comparación con el conector Snowflake.
Tarea con 4 workers: Mejora del conector Onibex de hasta un 30% al escribir en tablas existentes.
Tamaño del mensaje: 1000 KB
Tarea con 1 worker: Mejora del conector Onibex en un 10%.
Tarea con 2 workers: Mejora del conector Onibex en un 20%.
Tarea con 4 workers: Mejora promedio del 25% al escribir en tablas existentes.
Tamaño del mensaje: 500 KB
Tarea con 1 worker: Mejora del conector Onibex en un 8% respecto al conector Snowflake.
Tarea con 2 workers: Mejora del conector Onibex en un 15%.
Tarea con 4 workers: Mejora promedio del 20% al escribir en tablas existentes.
Tamaño del mensaje: 1000 KB
Tarea con 1 worker: Mejora del conector Onibex en un 7%.
Tarea con 2 workers: Mejora del conector Onibex en un 12%.
Tarea con 4 workers: Mejora promedio del 18% al escribir en tablas existentes.
El análisis se realizó comparando las diferencias de tiempo registradas entre las pruebas ejecutadas con ambos conectores. Cada prueba incluía la hora de inicio y finalización, lo que permitió calcular el tiempo total de procesamiento. A partir de esto, se obtuvieron diferencias porcentuales que reflejan las ventajas de rendimiento del conector Onibex respecto al conector nativo de Snowflake.
Además, se tomó en cuenta cómo influye la existencia o no de la tabla en el destino, y cómo el incremento en el número de workers impacta en la eficiencia general del proceso. Cabe destacar que, aunque el conector de Snowflake es eficiente en la ejecución de consultas, su desempeño disminuye notablemente al enviar instrucciones a la nube de Snowflake, lo cual genera un cuello de botella en el procesamiento.
El análisis detallado muestra que el conector custom de Onibex ofrece un mejor rendimiento en la mayoría de los casos, especialmente cuando la tabla destino ya existe. Además, su eficiencia se mantiene consistente al aumentar el tamaño de los mensajes y el número de tareas configuradas. Se recomienda utilizar el conector Onibex en escenarios donde se requiera un procesamiento rápido de grandes volúmenes de datos hacia Snowflake, particularmente cuando se utilizan múltiples workers.