Azure Data Factory per il backup di Table Storage

Nel corso dell’ultimo ho realizzato per un mio cliente un sistema che utilizza come fonte dati Azure Table Storage essendo in fase sperimentale senza volere incorrere nei costi di un database. Terminato lo sviluppo, bisognava pensare ad una modalità di backup (ed eventuale ripristino in caso di problemi) e per farlo ho utilizzato Azure Data Factory. Come?

Azure: Componenti Utilizzati

  • Storage account sorgente dati dove l’app e le Azure function lavorano per computare il tutto
  • Storage account di backup dove verranno riposte le copie di backup
  • Azure Data Factory il motore del nostro backup che sposterò tramite pipeline mirate i dati dalla sorgente alla destinazione

Azure Data Factory: Come crearlo step by step

Per creare il sistema di backup delle Table Storage ho utilizzato il data factory esportando il contenuto ogni Table all’interno di un Blob Container specifico nello Storage Account di destinazione. Ora vediamo step by step di cosa abbiamo bisogno.

ADF Connections:

Dobbiamo creare due connessioni di tipologia diversa.

  • Azure Table Storage: connessione che punterà al datasource sorgente
  • Azure Blob Storage:  connessione che punterà al datasource destinazione

Attenzione: in un mondo teorico il datasource sorgente e destinazione possono essere lo stesso, MA LO SCONSIGLIO VIVAMENTE.

ADF Dataset:

Ho diviso la sezione “datasets” in due cartelle

  • Source: è presente un dataset per ogni tabella presente nel “Azure Table Storage” di partenza. 
  • Destination: è presente un dataset per ogni Blob Container di destinazione 

Prima di salvare il “dataset Destination” bisogna fornire anche dei dettagli su come salvare il file del backup.

  • File path: nomecontainer / @concat(formatDateTime(utcnow(), ‘yyyyMMdd’),'.csv’)
  • File format: Text Format
  • Column delimiter: Comma (,)
  • Column names in the first row: true

ADF Pipelines:

Ho realizzato una “pipeline Entry Point” di nome backup ed in seguito una pipeline (che viene richiamata dalla principale) per ogni “Table Storage” che si desidera sottoporre a backup. Ora vediamo come si struttura la singola pipeline:

  • Activity: Copy Data

  • Source: Dataset da cartella Source

    • Use Query: Table ( attenzione al limite dei mille elementi)
  • Sink: Dataset da cartella Destination

ADF Trigger:

Dopo avere creato tutte le pipelines e provato il backup tramite il debug manuale ho aggiunto un Trigger schedulato prima della mezzanotte. In questo modo troverò un file csv in ogni container fotografia del “Table Storage” al termine della giornata lavorativa.

Azure Data Factory & GitHub

Prima di sviluppare il Data Factory l’ho collegato a GitHub e vi consiglio di fare lo stesso. In questo modo avrete tutte le modifiche versionate ed inoltre potrete portare avanti in parallelo diversi sviluppi su ADF essendo rami isolati. Vi ricordo che il Trigger è possibile aggiungerlo solamente su master, mentre il “debug” per dei test manuali è possibile eseguirli senza problemi.