Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Elaborato finale in Basi di Dati In memory database management con SAP HANA Anno Accademico 2013/2014 Candidato: Angelo Maisto matr. N46000645 Indice Introduzione 4 Capitolo 1. Big Data 5 1.1 Le 3Vs 6 Capitolo 2. SAP HANA 2.1 2.2 2.3 2.4 2.5 Capitolo 3. 3.1 3.2 7 L’azienda SAP La piattaforma HANA L’architettura L’archiviazione in tabelle Backup & Recovery 7 8 10 14 17 In-memory database 18 Proprietà ACID Compressione 18 20 Sviluppi futuri Bibliografia 21 22 III In memory database management con SAP HANA Introduzione Il seguente elaborato dal titolo In memory database management con SAP HANA, tratterà nel primo capitolo, una panoramica del concetto di Big Data. Nel secondo capitolo si esporrà in maniera approfondita la piattaforma HANA, sviluppata dalla SAP, incentrando lo studio sulla capacità di poter analizzare ed effettuare analisi in tempo reale. Seguirà la specifica dettagliata di tutti i componenti dell’architettura, delle tecniche di compressione e di backup & recovery, adoperate dall’appliance HANA. Nel terzo ed ultimo capitolo si parlerà della relatà dirompente dei database inmemory, delle relative proprietà e caratteristiche e di come SAP HANA utilizza tale tecnologia. 4 Capitolo 1 Big Data L’esplosione digitale del ventunesimo secolo ha generato un’increscente proliferazione di dati: e-mail inviate da smartphone, post provenienti dai social network, transazioni di pagamenti gestiti tramite circuiti e-banking, misure attuate da sensori sparsi in ogni angolo del globo… Il quantitativo di dati prodotto da individui e dispositivi connessi in rete, si stima in zettabyte, ordine di grandezza pari ad un triliardo di byte. Il termine adatto a descrivere un enorme quantitativo di dati strutturati e non, estremamente complesso, prende il nome di Big Data. Il concetto di database tradizionale non è più sufficiente a garantire un’analisi contemporanea di un data set così esteso di dati non strutturati. 5 1.1 Le 3Vs La descrizione più diffusa del termine Big Data, si riferisce ad un modello 3Vs, in cui si descrivono i Big Data come set di dati che necessitano di Volume, Velocità e Varietà. Volume: fa riferimento all’enorme quantitativo di dati da archiviare ed analizzare. Velocità: esprime la possibilità di poter effettuare analisi ed elaborazioni quasi in tempo reale. Varietà: grandi volumi di dati, vuol dire anche enorme tipologia di dati (strutturati e non strutturati) provenienti da fonti differenti. 6 Capitolo 2 SAP HANA 2.1 L’azienda SAP La multinazionale europea SAP (Systems, Applications, and Product in data processing) la cui traduzione sta per Sistemi, Applicazioni e Prodotti nell’elaborazione dati, è leader mondiale nel settore enterpise ed ERP, acronimo che sta per “Enterprise Resource Planning”, letteralmente pianificazione delle risorse d’impresa; consiste in un sistema informativo che ingloba tutti i processi aziendali che spaziano dal settore di vendita a quello di magazzino. L’azienda nasce in Germania nel 1972 dall’idea di 5 ingegneri di nome: Hasso Plattner, Dietmar Hopp, Klaus Tschira, Hans-Werner Hector e Claus Wellenreuther; lo scorso 2012 la società ha compiuto 40 anni di attività, divenendo tutt’oggi un punto di riferimento per le imprese e conta ad oggi 55.000 dipendenti in oltre 50 Paesi e si stimano 200.000 clienti in tutto il mondo. 7 L’azienda ha definito un proprio linguaggio di programmazione di nome ABAP e nel 1992, ha prodotto la versione client - server del software SAP ERP, rinominato SAP R/3. 2.2 La piattaforma SAP HANA La piattaforma HANA (High-Performance Analytic Appliance) di SAP, è un data ware house in grado di analizzare in tempo reale ingenti volumi di dati operativi e transazionali provenienti dal settore enterpise. Sviluppata in sostituzione dei sistemi di gestione di database relazionali su disco, consente di archiviare all’interno della memoria principale terabyte di dati e informazioni, analizzarli ed elaborarli in maniera efficiente e performante, riducendo notevolmente i tempi e i costi ai fini di un processo decisionale. I fattori predominanti che hanno consentito l’introduzione di tale innovazione sul mercato possono essere essenzialmente racchiusi dalla seguente analisi: un crescente aumento della disponibilità di archiviazione e notevole riduzione dei costi delle memorie volatili nell’ultimo decennio e l’elevata differenza di velocità che sussiste tra le memorie RAM e i supporti di archiviazione persistenti. Il grafico seguente, mostra la notevole differenza di ordini di grandezza in termini di velocità elaborativa da parte memorie delle volatili e permanenti. L’immissione della piattaforma SAP HANA sul mercato, ha completamente rivoluzionato in senso positivo, il settore dell’elaborazione dei 8 dati aziendali. Con l’ausilio del database SAP HANA è possibile eseguire analisi approfondite, aggiornamenti dei dati al minuto, svolgere in modo molto rapido ed efficiente, processi che prima richiedevano giorni se non mesi. Prima della sua introduzione nello scenario di elaborazione dei dati d’impresa, i sistemi IT dovevano essere in grado fondamentalmente di garantire due compiti essenziali: garantire l’OLTP, acronimo di On-Line Transaction Protection ovvero funzionare come sistema di gestione dei dati, essere in grado di catturare ed elaborare in maniera precisa le transazioni alla velocità del mercato, classificarle correttamente, immagazzinarle e renderle rapidamente accessibili. Il secondo obiettivo era quello di raccogliere i dati, analizzarli e presentarli mediante sistemi informativi e di gestione, operazione che odiernamente va sotto il nome di business intelligence o tecnicamente OLAP, acronimo di On-Line Analytical Processing. L’elemento principale dell’architettura OLAP è una particolare base di dati chiamata data ware house, letteralmente “magazzino dei dati”, in cui sono contenuti dati che analizzati in maniera opportuna, possono garantire un supporto alle decisioni e una programmazione delle attività future di una data impresa. Elemento preponderante è che mentre nelle tradizionali tecnologie, il processo di elaborazione dei dati avviene a livello applicativo, con SAP HANA tale fase viene effettuata direttamente a livello del database e solo il risultato delle query viene trasferito e visualizzato dall’utente. La seguente appliance consente di eseguire query complesse su miliardi di record in pochi secondi; le fasi di aggiornamento, inserimento e caricamento dei dati nel database sono rese ancora più snelle dal fatto che in memoria, i dati non sono aggregati o indicizzati e inoltre tutte le operazioni a run-time, ad eccezione del logging, vengono eseguite in-memory. La grande novità di SAP HANA consiste nel fatto che supporta sia OLTP che OLAP custodendo tutti i dati in una copia e sempre in memoria. In tal modo, i diversi programmi che devono attingere ai dati possono utilizzare le stesse basi di 9 dati senza commettere errori e ritardi. Tutti i dati sono sempre aggiornati e facilmente accessibili. 2.3 Architettura SAP HANA è un database in-memory, basato su approccio relazionale, ottimizzato per l’archiviazione dei dati in forma colonnare sinteticamente espressa attraverso la dicitura “column-oriented”. La tecnologia in-memory consente di elaborare enormi volumi di dati, compiere analisi operative e transazionali sulle informazioni estratte. SAP HANA è stato sviluppato principalmente nel linguaggio di programmazione C++ e progettato per essere eseguito su sistema operativo SUSE Linux Enterprise Server. La seguente figura mostra nei particolari, l’architettura della piattaforma. Analizziamo i componenti della piattaforma: Index Server: è il componente principale del database SAP HANA, in quanto contiene i dati archiviati nella piattaforma e i motori che consentono di 10 effettuare un processo elaborativo su di essi. Il server di indicizzazione gestisce anche le richieste SQL o MDX in caso di sessioni e transazioni autenticate. Preprocessor Server: viene adoperato dal server di indicizzazione per analizzare dati testuali ed estrarre informazioni sulla base di ricerche mirate. Statistical Server: effettua una raccolta di dati inerenti allo stato attuale del sistema, metriche per la valutazione delle prestazioni, allocazione e consumo delle risorse. Il compito principale è quello di garantire un continuo monitoraggio della piattaforma. Name Server: contiene le informazioni riguardanti la topologia di database SAP HANA. In un sistema multi - server distribuito, tiene traccia del numero e del tipo di componenti in esecuzione e su quale server essi sono operativi. Il name server registra al suo interno anche quali dati sono in fase di elaborazione e qual è il server in questione. XS Engine: il termine XS, sta per extended service; tale motore, fornisce una estensione del modello di database in un modello di consumo, consentendo alle applicazioni esterne di comunicare con la piattaforma mediante richieste http. Client Application: sono le applicazioni che è possibile ospitare sulla piattaforma; è possibile accedere al database via browser mediante XS Engine. 11 L’index server, svolge una serie di funzioni atte ad ottimizzare, velocizzare e rendere performante la fase analitica dei dati, garantendo un elevato livello di sicurezza e protezione delle informazioni contenute nell’appliance SAP HANA. I componenti essenziali che sono racchiusi nel server di indicizzazione sono elencati nella prossima figura. Connection and Session Management: si occupa di gestire le sessioni e le connessioni ad opera dei client di database, consentendo loro di comunicare con l’appliance mediante istruzioni SQL. La sessione viene stabilita in seguito all’inserimento delle proprie credenziali o demandando la richiesta di accesso ad un provider di autenticazione esterno come ad esempio una directory LDAP. Authorization Manager: il suo compito è quello di accertarsi che un client sia in possesso dei giusti privilegi per poter effettuare una determinata operazione 12 (creazione, aggiornamento, selezione, inserimento) su un particolare oggetto (vista, tabella, SQLScript) all’interno della piattaforma. SQL Processor: è un altro elemento essenziale del server di indicizzazione in quanto gestisce la fase di creazione e invio delle query, garantendo elevati livelli di prestazioni ed efficienza. Il database possiede un proprio linguaggio di scripting, denominato SQLScript, altro non è che un’estensione dell’SQL. A supporto del processore di query vi sono quattro motori altrettanto fondamentali per la fase di interrogazione all’interno di SAP HANA: MDX, Multidimensional Expression Engine: è un linguaggio per l'interrogazione e la manipolazione dei dati multidimensionali memorizzati in cubi OLAP. Planning Engine: è il motore che si occupa di eseguire operazioni di pianificazione di base tramite applicazioni finanziarie all’interno del database. Procedure Store Processor: ha come ruolo quello di eseguire in maniera efficiente le chiamate di procedure. Calculation Engine: effettua tutti i calcoli all’interno del database; nessun dato viene spostato a livello applicativo prima del termine dell’elaborazione. Consente l’elaborazione parallela e converte i dati analizzati in modelli di calcolo creando una logica di esecuzione. Transaction Manager: si prende cura del coordinamento e dell’isolamento delle transazioni che avvengono all’interno del database e tiene traccia sia 13 delle operazioni in corso che di quelle commited. Informa i motori di archiviazione dello stato delle transazioni e coopera con lo strato di persistenza affinché siano garantite transazioni atomiche e durevoli. Metadata Manager: è il gestore che si occupa di accedere ai metadati presente nella piattaforma; essi sono tutti archiviati in un catalogo comune a tutti i motori del database, sotto forma di tabelle, viste, indici e definizioni di funzioni di script. Persistence Layer: è lo strato responsabile della durabilità e dell’atomicità delle transazioni che avvengono all’interno dell’appliance SAP HANA. In caso di commit mancato da parte di una transazione, esegue il completo annullamento dell’operazione. In seguito ad un riavvio dell’intero sistema, si preoccupa di garantire i punti di ripristino, assicurandosi di riportare il database in uno stato consistente. 2.4 L’archiviazione in tabelle Le tecniche di archiviazione dei dati all’interno del database, in forma tabellare sono le seguenti: Row-based: i dati sono archiviati in tabelle sotto forma di riga. Column based: lo storage dei dati avviene in maniera colonnare. In memoria la tecnica row-stored è gestita nel seguente modo: in ciascuna locazione contigua, è presente un campo della riga “in esame”, della tabella; nella modalità column-stored, invece, in ciascuna locazione contigua della memoria, è presente un campo della colonna “in esame” della tabella. La seguente figura, illustra quanto detto: 14 Una delle caratteristiche che consente al database SAP HANA di essere flessibile, veloce e performante, è proprio quella di adoperare un approccio column-oriented, rispetto ai tradizionali database relazionali che gestiscono i dati in memoria mediante la forma row-oriented, quest’ultima comunque supportata dalla piattaforma HANA. I componenti del database SAP HANA che si occupano di gestire le due tecniche di archiviazione sono i seguenti: Row-store engine: gestisce la tecnica row-based. Column-store engine: gestisce la tecnica column-based. 15 Ambedue i motori, hanno in comune il Layer Persistence, in modo tale da garantire la persistenza dei dati in entrambe le modalità di archiviazione. L’approccio column based, consente di avere: Rapido accesso ai dati: ciascuna colonna può essere vista come un indice; all’atto della richiesta di una query, solo le colonne interessate vengono esaminate per fornire una risposta. Migliore livello di compressione: la molteplice ripetitività delle informazioni presenti nelle colonne, garantisce un livello di compressione molto efficiente. Miglior grado di parallelismo: a ciascun core del processore può essere assegnata una colonna di una tabella. Nel caso di row-based, invece si ha: Ridotto tempo di elaborazione: in un unico ciclo di esecuzione viene esaminato l’intero record, riducendo il tempo di analisi dei dati. Ridotte dimensioni della struttura: le dimensioni delle tabelle nel caso di archiviazioni basate su righe, sono molto più piccole del caso column-oriented, garantendo una ridotta dimensionalità dell’intero database. Semplificazione delle operazioni di insert e update. 16 2.5 Backup & Recovery La completa disponibilità di tutti i dati in memoria centrale, riduce al minimo eventuali riduzioni delle prestazioni da parte dei dischi di I/O, tali, pur sempre necessari per ovviare ad un’ingente perdita di dati in caso di un’improvvisa mancanza di alimentazione o eventuale catastrofe, poiché a differenza della memoria RAM, volatile, essi sono in grado di memorizzare in maniera persistente e permanente i dati al loro interno. La memoria in SAP HANA è suddivisa in pagine salvate sull’hard disk in seguito ad una modifica dei dati ad opera di una transazione. Per tenere traccia di tutte le modifiche apportate ai dati, viene adoperato un registro in cui sono annotate tutte le variazioni. Ogni transazione committed, genera un log entry che viene scritto su disco; questo approccio, assicura che tutte le transazioni siano permanenti. In maniera del tutto indipendente, ad intervalli con cadenze regolare, avviene il salvataggio dei dati su disco, in modo tale da ovviare ad un’ingente perdita di dati in caso di un’improvvisa di assenza alimentazione. caso di In riavvio improvviso del sistema, è possibile ripristinare il database dal punto precedente al guasto interrotto, con un approccio basato su disco. 17 Capitolo 3 In-memory database Con l’esponenziale aumento dei Big Data, si è sentita sempre più la necessità se non l’esigenza, di adoperare un cambio generazionale nel settore della gestione dei dati, puntando non più su supporti di memorizzazione permanenti, bensì su memorie volatili. Dal concetto di database relazionale in cui i dati sono archiviati su disco, si è passati ad una gestione in-memory del database, archiviando i dati direttamente in memoria principale. Con l’acronimo IMDB, In-Memory DataBase, s’intende appunto un sistema di gestione dei dati con la suddetta caratteristica. 3.1 Proprietà ACID Nell’ambito dei database, le caratteristiche a cui devono sottostare le transazioni che avvengono al loro interno, sono inglobate nel termine ACID, acronimo che sta per: Atomicity, Consistency, Isolation e Durability. In dettaglio, esprimono quanto segue: Atomicità: l’esecuzione di una transazione deve avvenire in maniera completa e non parziale e la transazione durante tale fase deve essere indivisibile, atomica. 18 Consistenza: terminata una transazione, il database si deve trovare in uno stato coerente a quello iniziale; devono essere garantiti eventuali vincoli di integrità; non si devono verificare condizioni di inconsistenza tra i dati archiviati. Isolamento: deve essere garantita la completa indipendenza e il totale isolamento della transazione nel momento in cui essa è in esecuzione, in modo da non interferire con altre operazioni in corso. Durabilità: detta anche persistenza, si riferisce al fatto che una volta che una transazione abbia richiesto un 1commit work, i cambiamenti apportati non dovranno essere più persi. Per evitare che nel lasso di tempo fra il momento in cui la base di dati si impegna a scrivere le modifiche e quello in cui li scrive effettivamente si verifichino perdite di dati dovuti a malfunzionamenti, vengono tenuti dei registri di log dove sono annotate tutte le operazioni sul DB. Per quanto riguarda i database in-memory, l’unico parametro a non essere soddisfatto è la persistenza, in quanto un improvviso calo di alimentazione dell’intera piattaforma su cui opera il database, provocherebbe la perdita di tutti i dati in memoria principale, essendo quest’ultima volatile. La soluzione è quella di adottare dischi astato solido o dispositivi flash. 1 Commit work: in SQL si riferisce alla terminazione di una transazione. 19 3.2 Compressione Nei database in-.memory nonostante sia possibile immagazzinare un enorme quantitativo di dati all’interno della memoria principale, vengono comunque adoperate tecniche di compressione; lavorando mediante dizionari, è possibile associare a parti testuali, numeri interi in modo da comprimere in maniera significativa le informazioni e migliorare quindi le prestazioni dell’intero database. In figura è mostrato un esempio in cui avviene tale tecnica. Il livello di compressione che si ottiene, dipende dalla tipologia di dati presenti nelle tabelle del database: attributi con pochi valori distinti consentono una compressione migliore rispetto a dati con molti valori differenti. 20 Sviluppi Futuri La Shell e Volkswagen prevedono che si possa stipulare un accordo per l’implementazione di un progetto che prevede l’interazione tra auto connesse ed ambiente circostante con l’ausilio della piattaforma SAP HANA che prevede interazioni quali la possibilità di trovare e pagare il parcheggio tramite lo smartphone o di prenotare il rifornimento di carburante alla stazione più vicina, pagando il pieno grazie ai servizi cloud. 21 Bbliografia [1] Bachmaier M., Krutov I., In-memory Computing with SAP HANA on IBM, IBM ReedBooks, 2014, 286. [2] www.mtfbs.com, http://www.mtfbs.com/Soluzioni/SAP-Business- One/SAP-HANA.html, 21/02/2015. [3] www.newslettertracking.it, http://www.newslettertracking.it/mk/get/Understanding%20SAP%20H ANA%20%20Italian.pdf?_EL=JbXLNB3ibIynO9j_cTx5bY&_EALANG=it_IT, 18/02/2015. [4] www.grupposistema.it, http://www.grupposistema.it/docs/default- source/brochure/board_hbmp.pdf?sfvrsn=2 , 20/02/2015. [5] robertocagliuso.xoom.it, http://robertocagliuso.xoom.it/virgiliowizard/saphana?SESS0012b289c5ad791e2d4a2bfe74652673=74d3f8ee0aebf4 9fcf40ad875289c96a, 19/02/2015. [6] it.wikipedia.org, http://it.wikipedia.org/wiki/ACID, 21/02/2015. [7] www.fabbricafuturo.it , http://www.fabbricafuturo.it/index.php/velocitaaziendale-e-tecnologie-in-memor, 21/02/2015. [8] www.runtime.it, http://www.runtime.it/it/soluzioni/sap-hana , 21/02/2015. [9] scn.sap.com, http://scn.sap.com/docs/DOC-60338, 16/02/2015. [10] saphanatutorial.com, http://saphanatutorial.com/sap-hana-sqlscript/, 22 20/02/2015. [11] Direction Dossier di soluzioni, servizi e tecnologie ict,56,2012,1-32. [12] saphanaolt.blogspot.it, http://saphanaolt.blogspot.it/2013/11/sap- hana-online-training-architecture-overview.html, 21/02/2015. [13] www.sap.com, https://www.sap.com/italy/cmp/ppc/crm-it14-3di-ppc- aa/index.html?q=hana&campaigncode=CRM-IT15-3DIPPC_ITDG&mid=stmVYmtQR|dc_1573q9y19629_47770047409_sap %20hana_e&KEY_ID=tmVYmtQR, 15/02/2015. [14] help.sap.com, http://help.sap.com/hana/SAP_HANA_Developer_Guide_en.pdf, 21/02/201. 23