In informatica, all'interno dei sistemi informativi, nella pratica della business intelligence per data warehouse (dall'inglese , abbreviato DW) si intende in generale una collezione o aggregazione di dati strutturati, provenienti da fonti interne operazionali (DBMS) ed esterne al sistema informativo aziendale, utili ad analisi e rapporti informativi, prima adattati tramite strumenti appositi di trasformazione dei dati di tipo ETL, e poi analizzati tramite strumenti di analisi di tipo OLAP (query multidimensionali) o data mining, tipicamente ad uso strategico aziendale nei processi decisionali di impresa.
Può essere visto come una grande banca dati in sola lettura (schema on read), utile quindi ad analisi storiche, ovvero senza le usuali operazioni di CRUD tipiche delle banche dati relazionali operazionali (schema on write). Nell'ambito dell'analisi multidimensionale OLAP il sottoinsieme del DW è detto invece data mart.
Definizioni William H. Inmon, colui che per primo ha parlato esplicitamente di data warehouse, lo definisce come una raccolta di dati "integrata, orientata al soggetto, variabile nel tempo e non volatile" di supporto ai processi decisionali.
L'integrazione dei dati costituisce la principale caratteristica distintiva del DW rispetto ad altri sistemi di supporto alle decisioni.
Secondo Inmon la raccolta di dati è: Integrata: requisito fondamentale di un data warehouse è l'integrazione dei dati raccolti. Nel data warehouse confluiscono dati provenienti da più sistemi transazionali e da fonti esterne. L'obiettivo dell'integrazione può essere raggiunto percorrendo differenti strade: mediante l'utilizzo di metodi di codifica uniformi, mediante il perseguimento di una omogeneità semantica di tutte le variabili, mediante l'utilizzo delle stesse unità di misura; Orientata al soggetto: il DW è orientato a temi aziendali specifici, alle applicazioni o alle funzioni. In un DW i dati vengono archiviati in modo da essere facilmente letti o elaborati dagli utenti. L'obiettivo, quindi, non è più quello di minimizzare la ridondanza mediante la normalizzazione, ma quello di fornire dati organizzati in modo tale da favorire la produzione di informazioni. Si passa dalla progettazione per funzioni ad una modellazione dei dati che consenta una visione multidimensionale degli stessi; Variabile nel tempo: i dati archiviati all'interno di un DW coprono un orizzonte temporale molto più esteso rispetto a quelli archiviati in un sistema operazionale. Nel DW sono contenute una serie di informazioni relative alle aree di interesse che colgono la situazione relativa ad un determinato fenomeno in un determinato intervallo temporale piuttosto esteso. Ciò comporta che i dati contenuti in un DW siano aggiornati fino ad una certa data che, nella maggior parte dei casi, è antecedente a quella in cui l'utente interroga il sistema. Ciò differisce da quanto si verifica in un sistema transazionale, nel quale i dati corrispondono sempre ad una situazione aggiornata, solitamente incapace di fornire un quadro storico del fenomeno analizzato; Non volatile: tale caratteristica indica la non modificabilità dei dati contenuti nel DW, che consente accessi in sola lettura. Ciò comporta una semplicità di progettazione della banca dati rispetto a quella di un'applicazione transazionale. In tale contesto non si considerano le possibili anomalie dovute agli aggiornamenti, né tanto meno si ricorre a strumenti complessi per gestire l'integrità referenziale o per bloccare record a cui possono accedere altri utenti in fase di aggiornamento.
Il data warehouse, quindi, descrive il processo di acquisizione, trasformazione e distribuzione di informazioni presenti all'interno o all'esterno delle aziende come supporto ai decision maker. Esso si differenzia in modo sostanziale dai normali sistemi gestionali che, al contrario, hanno il compito di automatizzare le operazioni di routine.
Si può notare che la definizione di Inmon precedentemente citata sia indifferente rispetto alle caratteristiche architetturali dei sistemi transazionali e alla dislocazione fisica dei dati nelle diverse banche dati.
Se il focus viene posto sulla capacità di supportare il processo decisionale, il data warehouse può essere costruito secondo modalità differenti, che possono andare da una logica completamente accentrata a una logica completamente distribuita.
Componenti e architettura Gli elementi costitutivi dell'architettura sono: I dati provenienti dai sistemi transazionali: sono quell'insieme di dati elaborati dai sistemi transazionali dell'azienda. Essi possono essere contenuti all'interno della stessa banca dati, provenienti da diverse banche dati o anche esterni all'azienda. Spesso l'architettura di un data warehouse prevede l'integrazione dei dati interni con quelli esterni. L'utilizzo di questi ultimi consente di arricchire il patrimonio informativo. Il data movement: tale componente è responsabile dell'estrazione dei dati dai sistemi transazionali, dell'integrazione tra dati aziendali e dati esterni, del pre-processing dei dati, del controllo della consistenza dei dati, della conversione delle strutture dati, e dell'aggiornamento dei dizionari dei dati. Il data warehouse: i dati estratti dagli archivi transazionali vengono memorizzati internamente al data warehouse. Nel data warehouse l'accesso ai dati è consentito in sola lettura. Tali dati hanno una dimensione storica e sono riferiti a soggetti d'impresa. Essi possono essere memorizzati in un archivio centrale o in un data mart. Il termine data mart identifica un data warehouse di dimensioni ridotte, specializzato per una particolare area di attività. Si pensi, ad esempio, al data mart per il marketing, in cui i dati filtrati dagli archivi transazionali sono memorizzati per consentire l'analisi della clientela. All'interno della banca possono quindi esistere più data mart, aventi finalità diverse e orientati a coprire diverse aree d'impresa. I dati contenuti nel data warehouse possono essere aggregati e indicizzati per rispondere a specifiche necessità informative. I metadati: i metadati costituiscono informazione aggiuntiva che arricchisce i dati contenuti nel data warehouse. Spesso essi vengono chiamati in gergo "data about data", indicando la provenienza, l'utilizzo, il valore o la funzione del dato. A tale proposito vengono costituiti dei veri e propri information catalog. Questi ultimi sono i file che contengono i metadati. Il catalog consente di spiegare all'utente la natura dei dati nel data warehouse, il loro significato semantico, da quali archivi essi provengono e la loro storicità. Lutente finale: i dati contenuti nel data warehouse vengono presentati all'utente finale, il quale dispone di un insieme di strumenti per effettuare elaborazioni e produrre informazioni appropriate. Gli strumenti a disposizione dell'utente possono essere semplici generatori di query e report, interfacce grafiche che consentono la rappresentazione dei dati o sistemi di analisi dati più complessi.
Il data warehouse è organizzato su quattro livelli architetturali: trasformazione dei dati: è il livello che si occupa di acquisire i dati e validarli; preparazione e "stoccaggio" dati: è il livello che fornisce i dati agli utenti e alle applicazioni analitiche; interpretazione e analisi dati: è il livello, ad elevato valore aggiunto, che presiede alla trasformazione dei dati in informazioni aventi valore strategico; presentazione dati: è il livello, a basso valore aggiunto, che presiede alla presentazione finale agli utenti delle informazioni e quindi delle risposte cercate.
Nel suo complesso il data warehouse è un sistema periferico, cioè non risiede fisicamente sul sistema informativo centrale. Il motivo di ciò va ricercato nel tipo di attività svolto: una piattaforma di tipo transazionale è maggiormente orientata all'esecuzione costante di operazioni di aggiornamento, per cui l'ottimizzazione viene fatta soprattutto sull'I/O; una piattaforma di supporto alle decisioni invece deve essere ottimizzata per effettuare un numero limitato di query particolarmente complesse. Un'eccezione a tale regola può essere rappresentata da soluzioni di tipo mainframe, ove la possibilità di definire macchine virtuali all'interno della stessa macchina fisica consente la coesistenza sullo stesso server fisico delle applicazioni transazionali e delle applicazioni di Decision support system.
Vediamo ora nei dettagli come è fatta un'architettura per il data warehouse.
Data transformation layer
L'architettura parte dallo strato denominato data transformation, cioè dall'insieme di applicazioni che svolgono l'attività di estrazione, trasformazione e caricamento dei dati dai sistemi transazionali che alimentano il data warehouse.
Nella maggior parte dei casi la fase di estrazione dei dati dai sistemi alimentanti viene implementata utilizzando i linguaggi proprietari delle piattaforme alimentanti. Si tratta per lo più di interrogazioni ad hoc, parametrizzate per quanto riguarda l'arco temporale, eseguite periodicamente solitamente nei momenti di minore attività del sistema.
La fase di trasformazione, quella a maggiore valore aggiunto tra le tre contenute in questo layer applicativo, applica regole di integrazione, trasformazione e cleansing (business rule) ai dati estratti dai sistemi alimentanti. È in questo layer che molto spesso si gioca la credibilità dei dati del data warehouse presso gli utenti. Nella maggior parte dei casi i dati estratti dai sistemi transazionali sono incompleti o comunque inadatti a prendere decisioni, in quanto non sono coerenti con le analisi da effettuare.
In alcuni casi le operazioni di trasformazione possono causare un reject ("rifiuto"), il quale segnala l'impossibilità di accettare parte del flusso alimentante a causa di 'impurità' nei dati di origine.
Le possibili cause di rifiuto sono varie: Codifiche incoerenti. Lo stesso oggetto è codificato in modo diverso a seconda del sistema alimentante. In fase di trasformazione ogni flusso alimentante andrà ricodificato seguendo la codifica convenzionale definita per il data warehouse; Unità di misura/formati incoerenti. È il caso in cui la stessa grandezza viene misurata con unità di misura o rappresentata con formati differenti a seconda del sistema alimentante di provenienza. In fase di trasformazione ogni flusso alimentante andrà convertito in un'unica unità di misura convenzionale per il data warehouse; Denominazioni incoerenti. È il caso in cui, a seconda della fonte, lo stesso oggetto (di solito un dato) viene denominato in modo diverso. Solitamente il dato all'interno del warehouse viene identificato in base alla definizione contenuta nei metadati del sistema; Dati incompleti o errati. Nei tre casi precedenti le operazioni di trasformazione consistevano essenzialmente in attività di conversione, entro certi limiti automatizzabili. In questo caso, invece, l'operazione di trasformazione può richiedere l'intervento umano per risolvere casistiche non prevedibili a priori.
Data preparation and storage layer
Una volta che i dati hanno superato il transformation layer, essi vengono 'stoccati' in questo livello architetturale per consentire:
la creazione di sintesi informative per gli utenti (data mart e aggregazioni) mediante procedure ad hoc che solitamente vengono innescate (in termini di update) al completamento delle operazioni di estrazione, trasformazione e caricamento; l'esecuzione di analisi avanzate, basate prevalentemente su algoritmi di tipo statistico, che richiedono di operare sul massimo dettaglio disponibile dei dati per restituire risultati significativi.
Questo livello coincide con il massimo dettaglio disponibile (in termini di dati) all'interno del sistema di data warehousing.
Data interpretation and analysis layer