Para empezar, Azure Synapse Link no es una funcionalidad totalmente nueva. Es una tecnología bien conocida desde 2020, pero limitada a ser usada únicamente con Cosmos DB. En el evento de Microsoft Build 2022, se anunció el «Public Review» como la nueva funcionalidad para utilizar Synapse Link con nuestras DB en SQL (siendo más concreto las Azure SQL Database y los SQL Server 2022) y es lo que vamos a ver hoy.
Entonces, ¿cómo podemos configurar nuestro Synapse? Repasemos antes qué es esta funcionalidad y su utilidad
¿Qué es Azure Synapse Link?
Es un sistema que nos permite replicar datos en tiempo real desde nuestras bases de datos transaccionales a un Pool dedicado en Azure Synapse. Tendremos que hacer una configuración inicial que, una vez configurado, se realizará una carga inicial de todos los datos y comenzará a replicar en tiempo real cualquier modificación dentro de tus tablas.
Es importante destacar que para poder utilizar Synapse Link SQL necesitamos tener un Dedicated Pool, pues será en él donde se almacenarán los datos. Es necesario por tanto que instanciemos en nuestro Synapse un Dedicated Pool cuando queremos utilizar la funcionalidad de SQL. (Sin embargo si que podríamos prescindir del Dedicated pool y utilizar un Serveless si usamos Synapse Link con Cosmos DB, pero hoy estamos con las base de datos relaciones SQL 😋).
¿No recuerdas que era un SQL Pool?
Dedicated SQL Pool es lo que tradicionalmente conocíamos como Azure Data Warehouse, antes de que fuera «enguyido» por Synapse. Utiliza la Arquitectura MPP (Massive Parallel Processing) para procesar cantidades inmensas de datos de forma eficiente, gracias a que distribuye nuestras query en muchos nodos que trabajan de forma distribuida.
Dedicated SQL Pool además, también permite explotar nuestros datos de nuestras tablas relacionales que hasta ahora era imposible hacer una select sin que el ordenador se incendiara cuando consultábamos grandes cantidades de datos.
Azure Synapse Link es Real Time ¿No?
He de confesar que no es 100% real time, es near real time. Aunque no me apedreéis por mentiroso, debemos tener en cuenta que hoy en día mucha gente mete en el saco de near real time cualquier tipo de frecuencia:
• Entrega de datos 5 veces al día, esto es near real time.
• Entrega de datos cada 2 horas, esto es near real time.
• Entrega de datos cada 30 minutos, esto es near real time.
Real near real-time analytics:
- Cuando utilizamos Azure Synapse Link estaremos recibiendo datos near real time, pero a diferencia de nuestras típicas ETL que tenemos que construir para obtener los datos con un desde-hasta, Azure Synapse Link nos conecta directamente con nuestras DB (Streaming) y cualquier modificación nos la envía en cuestión de segundos.
- Sin código: no será necesario configurar ETL tabla a tabla, crear pipelines complejas, gestionar triggers… simplemente lo configuramos y listo.
- Consolidación de datos: combinar datos y consolidar datos desde diferentes orígenes a única solución analytica.
- Impacto mínimo en nuestros sistemas de origen: un punto muy importante.
¿Cuántas veces nos hemos encontrado que nuestros orígenes no están historificados? Nadie sabe qué se modificó, cuándo, modificaciones realizadas, etc. Azure Synapse Link al obtener los datos en streaming nos permite identificar cualquier modificación en nuestros datos y enviárnosla rápidamente.
Ahora que conoces un poco qué es, trataremos los pasos para su despliegue:
Paso 1: necesitamos crear un Dedicated SQL Pool, como ya mencioné con anterioridad.
Paso 2: una vez dentro, solo tenemos que poner el nombre y cuantas DWU queremos para nuestro Pool (seleccionar las DWU es algo importante, te dejo por aquí un enlace para que puedas leer un poco más sobre ellas y cómo seleccionar cuanto necesitas).
Paso 3 *(Extra):
Si queremos conectarnos a un SQL Server on premise hay un paso adicional que debemos de hacer. Debemos conectar nuestro SQL Server a la «landing zone» que no es más que nuestro Azure Data Lake (seguro lo tenemos pues el mismo Synapse lo crea cuando lo desplegamos).
Paso 4:
Ahora que tenemos listo nuestra configuración base ya podemos crear una pipeline de Link connection.
Paso 5:
Nos vamos a la pestaña y pulsamos sobre «Link connection» para crear nuestra pipeline de extracción:
Dentro tendremos la opción de configurar como dijimos extraer de Azure SQL Server y SQL Onpremise:
Y por último seleccionamos qué tablas queremos sincronizar en real-time:
Una vez que terminemos con esta configuración inicial, comenzará a hacer una carga completa de datos y esquemas desde nuestro origen a nuestro Data Lake. Posteriormente tomará esos datos de nuestro Data Lake y los subirá a nuestro DWH (Pool de SQL).
¡Listo! Desde ese mismo instante empezará a sincronizar nuestro SQL Server contra nuestro Synapse cada vez que realicemos una modificación ¿Sencillo verdad?