# OLAP

OLAP, acronimo dell'espressione On-Line Analytical Processing, designa un insieme di tecniche software per l'analisi interattiva e veloce di grandi quantità di dati, che è possibile esaminare in modalità piuttosto complesse. Questa è la componente tecnologica base del data warehouse e, ad esempio, serve alle aziende per analizzare i risultati delle vendite, l'andamento dei costi di acquisto merci, al marketing per misurare il successo di una campagna pubblicitaria, a una università per organizzare i dati di un sondaggio ed altri casi simili. Gli strumenti OLAP si differenziano dagli OLTP per il fatto che i primi hanno come obiettivo la performance nella ricerca e il raggiungimento di interrogazioni quanto più articolate sia possibile; i secondi, invece, mirano ad una garanzia di integrità e sicurezza delle transazioni.
L'applicazione tipica di OLAP è all'interno di strumenti di business intelligence (BI).

## Descrizione
### Funzionalità

La creazione di un database OLAP consiste nell'effettuare un'istantanea delle informazioni (ad esempio quelle di un database relazionale) in un determinato momento e trasformare queste singole informazioni in dati multidimensionali.
Eseguendo successivamente delle interrogazioni sui dati, in tal modo strutturati, è possibile ottenere risposte in tempi decisamente ridotti rispetto alle stesse operazioni effettuate su altre tipologie di database, anche perché il database di un sistema OLTP non è stato studiato per consentire analisi articolate.
Una struttura OLAP creata per questo scopo è chiamata cubo multidimensionale. Ci sono diversi modi per creare un cubo, ma il più conosciuto è quello che utilizza uno schema a stella; al centro c'è la tabella maggiore dei facts che elenca i principali elementi su cui sarà costruita l'interrogazione, e collegate ad essa sussistono varie tabelle delle dimensioni che specificano come saranno aggregati i dati.
Per esempio un archivio di clienti può essere raggruppato per città, provincia, regione; questi clienti possono essere relazionati con i prodotti ed ogni prodotto può essere raggruppato per categoria.
Il calcolo delle possibili combinazioni di queste aggregazioni forma una struttura OLAP che, potenzialmente, potrebbe contenere tutte le risposte per ogni singola combinazione. In realtà viene memorizzato solo un numero predeterminato di combinazioni, mentre le rimanenti vengono ricalcolate solo al momento in cui quella richiesta viene materialmente effettuata.
Un sistema OLAP permette di:
* studiare una grande quantità di dati
* analizzare i dati da prospettive diverse
* supportare i processi decisionali nell'ambito della Business Intelligence.

### Tipi di sistemi OLAP

Partendo dai concetti di base appena descritti, si può precisare che esistono tre tipologie di sistemi OLAP: multidimensionale (MOLAP: Multidimensional OLAP), relazionale (ROLAP: Relational OLAP) e ibrido (HOLAP: Hybrid OLAP). Ciascuna di queste tipologie presenta i propri benefici, benché non vi sia una concordanza completa relativamente ad essi.
* MOLAP è la tipologia più usata e ci si riferisce ad essa comunemente con il termine OLAP. Sfrutta un database di riepilogo avente un motore specifico per l'analisi multidimensionale e crea le dimensioni con un misto di dettaglio ed aggregazioni. Risulta la scelta migliore per quantità di dati ridotte, perché è rapido nel calcolare aggregazioni e restituire risultati; tuttavia crea enormi quantità di dati intermedi.
* ROLAP lavora direttamente con database relazionali; i dati e le tabelle delle dimensioni sono memorizzati come tabelle relazionali e nuove tabelle sono create per memorizzare le informazioni di aggregazione. È considerato più scalabile e presenta requisiti di archiviazione e memoria minori; tuttavia, è lento nella creazione delle tabelle e nel generare il rapporto circa le interrogazioni.
* HOLAP utilizza tabelle relazionali per memorizzare i dati e le tabelle multidimensionali per le aggregazioni "speculative". Come dice il nome, questo sistema è un ibrido, poiché viene creato più velocemente di un sistema ROLAP ed è al tempo stesso più scalabile di MOLAP.
La difficoltà nell'implementazione di un database OLAP comincia dalle ipotesi delle possibili interrogazioni utente; scegliere la tipologia di OLAP, lo schema e creare una base dati completa e consistente è un'operazione complessa, decisamente complicata per una base di utenza ampia ed eterogenea.
Per venire incontro alle esigenze degli utenti, molti prodotti moderni forniscono una quantità enorme di schemi ed interrogazioni pre-impostate.

### Operatori OLAP

Gli operatori base di uno strumento OLAP per fare analisi multidimensionale dei dati sono:
* pivoting: è l'operazione di rotazione delle dimensioni di analisi. È un'operazione fondamentale per analizzare totali ottenuti in base a dimensioni diverse o se si vogliono analizzare aggregazioni trasversali;
* slicing: è l'operazione di estrazione di un subset di informazioni dall'aggregato che si sta analizzando. L'operazione di slicing viene eseguita fissando uno specifico valore per una delle dimensioni del "cubo", estraendo quindi una "fetta" e ottenendo un nuovo cubo con una dimensione in meno rispetto a quello di partenza;
* dicing: è l'operazione di estrazione di un subset di informazioni dall'aggregato che si sta analizzando. L'operazione di dicing viene eseguita quando l'analisi viene focalizzata su un sottoinsieme del "cubo" avente particolare interesse per l'analista. In alcuni casi l'operazione di dicing può essere "fisica" nel senso che non consiste solo nel filtrare le informazioni di interesse ma anche nell'estrarle dall'aggregato generale per distribuirne i contenuti;
* drill-down: è l'operazione di "esplosione" del dato nelle sue determinanti. L'operazione di drill-down può essere eseguita seguendo due diversi percorsi: la gerarchia costruita sulla dimensione di analisi (p. es.: passaggio dalla famiglia di prodotti all'insieme dei prodotti che ne fanno parte) oppure la relazione matematica che lega un dato calcolato alle sue determinanti (p. es.: passaggio dal margine al ricavo e costo che lo generano). È comprensibile l'importanza di tale operazione ai fini analitici in termini di comprensione delle determinanti di un dato;
* drill-across: è l'operazione mediante la quale si naviga attraverso uno stesso livello nell'ambito di una gerarchia. Come visto precedentemente, il passaggio dalla famiglia di prodotti alla lista dei prodotti è un'operazione di drill-down, il passaggio da una famiglia a un'altra famiglia è un'operazione di drill-across;
* drill-through: concettualmente simile al drill-down, è l'operazione mediante la quale si passa da un livello aggregato al livello di dettaglio appartenente alla base dati normalizzata. Molti venditori proclamano che i loro prodotti hanno la capacità, mediante l'operazione di drill-through, di passare dal data warehouse ai sistemi transazionali alimentanti. Tale operazione, anche se tecnicamente fattibile sotto una serie di condizioni abbastanza rilevanti, è poco sensata per le problematiche di sicurezza e di performance indotti nei sistemi transazionali stessi.

### Punti deboli

I punti deboli degli strumenti OLAP sono:
* Inaccessibilità/difficoltà ad accedere al livello atomico del dato: gli strumenti OLAP funzionano molto bene su dati di sintesi, non è conveniente usarli su dati analitici;
* Sistemi di backup, restore, security, rollback non molto sofisticati o inesistenti: pur essendo in molti casi dei motori database, gli strumenti OLAP non hanno ancora raggiunto il livello di completezza dei database relazionali, principalmente perché, a differenza di questi ultimi, non hanno un paradigma concettuale di riferimento come la teoria di Codd, ma sono soggetti alle interpretazioni dei diversi produttori software;
* Richiede una struttura denormalizzata per funzionare in maniera efficiente: i motori OLAP generano grandi masse di dati per il semplice fatto che per migliorare le prestazioni di accesso sono costretti a memorizzare chiavi ridondanti e sommarizzazioni;
* Possibile proliferazione del codice SQL: nel caso in cui il database su cui vengono effettuate le analisi OLAP non sia multidimensionale (MOLAP) ma sia relazionale (ROLAP), ognuna delle operazioni sopra descritte (slicing, dicing, drilling) provoca la generazione e l'esecuzione di query SQL estremamente complesse, che richiedono molte risorse di elaborazione.

## Prodotti

Il primo prodotto che permetteva interrogazioni OLAP è stato rilasciato da Edgar F. Codd nel 1970 (ed acquisito da Oracle nel 1995). Comunque il termine OLAP non venne utilizzato fino al 1993, quando fu coniato da Codd, che viene peraltro considerato il "padre dei database relazionali". Le ricerche di Codd furono tuttavia finanziate dalla Arbor, che rilasciò un anno prima il proprio prodotto OLAP Essbase (noto in seguito con il nome di Hyperion, software acquisito da Oracle dal marzo 2007).
Altri prodotti molto conosciuti sono SAS enterprise intelligence platform, IBM DB2 OLAP Server (una versione OEM di Essbase), SAP BW, Business Objects, DataTime, Cognos, MicroStrategy, Lilith (Hicare), Sybase IQ, Microsoft Analysis Services (precedentemente chiamato OLAP Services) che è parte di Microsoft SQL Server, Oracle Business Intelligence Suite, Brio, DssMUSA di IG Consulting, BIExplore di Sediin, Information Builders, QlikView ed altri ancora.