Datawarehouse: riflessioni sull'ETL
Il fatto che con un package di SSIS ci si possa connettere in modo quasi elementare a una qualsivoglia sorgente dati per estrarre un insieme di dati di interesse, non ci autorizza a farlo direttamente su database operazionali :)
In un ambiente cosiddetto Enterprise, è quasi impossibile conoscere con certezza l'ambiente operativo di un database. Di solito, la prima cosa che ci si chiede è se il database da cui dobbiamo cavare i dati, possa essere usato anche di notte. E se la risposta è "Sì", viene naturale pensare che la notte sia il periodo candidato per l'estrazione dei dati.
Occorre, però, tener presente che un database viene utilizzato non soltanto dagli utenti di questa o quell'altra applicazione, ma anche da procedure di manutenzione, batch vari, e per finire applicazioni che ignoriamo e di cui il cliente potrebbe aver perso letteralmente la memomoria.
Poi, c'è un problema di sicurezza che non è meno importante di quello prestazionale. E' bene evitare che il cliente ci dia accesso con una Login con i "super-poteri" (vedi "SA" o un utente windows del gruppo "Domain Admins"), accertandosi che l'utente SqlServer o Windows fornito per connettersi al database operazionale di turno, sia il più "povero" possibile in quanto a diritti: in fin dei conti ci basta un permesso di sola lettura (db_datareader congiuntamente a db_denydatawriter) sulle tabelle o le viste interessate, allo scopo di evitare di far danni irreversibili.
Un approccio migliore potrebbe essere quello di avere due procedure distinte (corrispondenti a due diversi package) nell'ambito del nostro ETL: una di estrazione e l'altra di trasformazione e caricamento, dove quella di estrazione si preoccupa unicamente di connettersi alle sorgenti dati, quindi leggere i dati di interesse e scaricarli in file di testo o di altro formato che fungeranno da sorgente al secondo package. Inoltre, se l'estrazione fosse realizzata e pianificata da chi all'interno dell'azienda meglio conosce l'ambiente operativo dei database sorgente, saremmo tutti più felici. In tal modo, siamo certi che quell'estrazione è "certificata" sia nei contenuti, sia nell'impatto prestazionale con le applicazioni concorrenti all'ETL.