• Non ci sono risultati.

Greenplum

L’attività di migrazione aziendale è finalizzata a rendere Greenplum l’unico

Database (DB) a disposizione degli sviluppatori e degli utenti finali. Prima di addentrarsi nei tecnicismi del processo di migrazione e nell’utilizzo del nuovo DB,

è stato indispensabile studiare la nuova tecnologia. In questo capitolo si tratteranno gli aspetti teorici e tecnici del DB di Greenplum. Si descriveranno le caratteristiche, si cercheranno di approfondire gli aspetti relativi all’architettura e al funzionamento

dei componenti coinvolti.

2.1 Greenplum Database

Pivotal Greenplum Database[16] è un server del database di elaborazioni massicce e

parallele (Massively Parallel Processing - MPP) la cui architettura è stata appositamente progettata per gestire i DWH che operano su larga scala e i carichi di lavoro della BI.

MPP (conosciuto anche come architettura non-condivisa) si riferisce a sistemi con due o più processori che cooperano per effettuare un’operazione: ogni processore è

costituito da una propria memoria, da un proprio sistema operativo e da dischi. Un’architettura così costruita prevede alte prestazioni e permette di distribuire il carico di lavoro di un DWH multi-terabyte in modo che possano essere utilizzate tutte le risorse in parallelo per elaborare una query.

Tesi di Laurea Magistrale 2015/2016

16

agiscono insieme come un unico sistema coeso di Data Base Management System (DBMS). La tecnologia PostgreSQL ha subito delle modifiche per poter essere adattata alle esigenze del DB Greenplum, se ne analizzano nel dettaglio gli aspetti:

● Per permettere la struttura di lavoro in parallelo prevista dal DB Greenplum

sono state apportate delle integrazioni al catalogo di sistema, all’ottimizzatore, all’esecutore delle query e ai componenti che permettono la

gestione delle transazioni;

● Sono state incluse funzionalità che permettono di ottimizzare PostgreSQL per

la BI come il caricamento dei dati in parallelo (tabelle esterne), la gestione delle risorse, l’ottimizzatore delle query e il miglioramento della memoria; ● Sono state introdotte caratteristiche che sono state ereditate successivamente

anche da PostgreSQL standard come, ad esempio, la possibilità di partizionare le tabelle.

2.2 Architettura

Il Database Greenplum[16] memorizza ed elabora grandi quantità di dati,

distribuendo i dati e l'elaborazione del carico di lavoro su più server o host. In altre parole si può descrivere come un array di singoli database basati su PostgreSQL 8.2 che lavorano insieme per presentarsi come un unico database. Esso è principalmente composto da tre elementi: il Master che è il punto d’ingresso ed è l’istanza a cui si collegano i client per trasferire istruzioni SQL; i Segmenti sono

coordinati dal master e hanno il compito di memorizzare ed elaborare i dati; i

Collegamenti, come suggerito dal nome, permettono l’interazione tra i primi due.

Tesi di Laurea Magistrale 2015/2016

17

far riferimento ai vari componenti appena citati che verrano meglio analizzati.

Figura2.1: Architettura del DataBase di Greenplum

Il Database è stato pensato per elaborare una grande mole di dati in modo efficiente, per essere utilizzato nella Big Data Analysis che è la nuova frontiera dell’Information Technology.

2.2.1 Masters

Il nodo master è l'ingresso per il sistema Greenplum, accetta le connessioni client e le query SQL, e distribuisce il carico di lavoro alle istanze dei segmenti.

Il processo parte dagli utenti, che, attraverso il loro client psql o interfacce di programmazione (Application Programming Interface - API) ad esempio JDBC o ODBC si collegano al DB.

Nel componente risiede il catalogo di sistema globale, cioè l’insieme delle tabelle

di sistema che contengono i metadati; non sono contenuti, invece, i dati richiesti dagli utenti che sono contenuti nei segmenti. Il compito del master è di eseguire

Tesi di Laurea Magistrale 2015/2016

18

l’autenticazione delle connessioni client, di elaborare i comandi SQL che immette l’utente distribuendo i carichi tra i vari segmenti. Una volta ottenuti i risultati delle

elaborazioni di ogni segmento atteso, presenta i risultati finali al programma client. La maggior parte delle operazioni come la scansione, join, aggregazione e ordinamento vengono eseguite dei segmenti in parallelo.

Figura2.2: Indirizzamento della query in modo parallelo

Alcune query possono accedere ai dati mediante un solo segmento, come quelle che prevedono l’INSERT, l’UPDATE, la DELETE di una singola riga o le SELECT

che filtrano la tabella in base alla colonna-chiave. In questi casi il piano della query non viene distribuito in tutti i segmenti, ma è indirizzato ad un unico segmento, cioè quello che contiene la riga interessata.

Tesi di Laurea Magistrale 2015/2016

19

Figura2.3: Indirizzamento della query in un singolo segmento

Sul master, il processo di lavoro della query viene chiamato Query Dispatcher. Esso è responsabile della creazione e del dispacciamento il piano di query, inoltre, si fa carico di presentare i risultati finali.

2.2.2 Segmenti

I segmenti sono indipendenti dal DB PostgreSQL, ognuno di essi contiene una porzione di dati ed eseguono la maggior parte dell’elaborazione prevista che gli viene passata dal nodo master. Il nodo, che è l’unità minima dell’architettura, smista l’elaborazione negli n segmenti di cui è composto in modo da parallelizzare l’esecuzione richiesta. Nel momento in cui un utente si connette al sistema ed

esegue una query, i processi per gestirla vengono creati in ogni segmento e smistato sui nodi. Per eseguire una query i segmenti elaborano il piano di esecuzione della

Tesi di Laurea Magistrale 2015/2016

20

stessa, così, ogni nodo coinvolto esegue un’operazione che deve essere fatta per risolvere l’intera query e produrne il risultato.

Oltre alle comuni operazioni dei DB, Greenplum ha un’operazione aggiuntiva

chiamata motion, essa prevede lo spostamento delle tuple tra i segmenti durante l’elaborazione della query. Per ottenere il massimo parallelismo, Greenplum esegue

uno slice del piano ovunque vi sia un’operazione di motion, producendo una “fetta” (da elaborare) che i segmenti possono eseguire in modo indipendente gli uni dagli altri.

Per poter meglio capire quanto appena descritto, si procede mostrando un esempio e viene considerata la seguente query:

SELECT Customer.name, Sales.amount FROM Sales JOIN Customer USING (c_id)

WHERE dateCol = '28-04-2017';

Il piano della query prevede una motion per distribuire le tuple tra i segmenti per soddisfare l’operazione di JOIN. La motion risulta necessaria in quanto la tabella

Customer viene distribuita in base alla colonna c_id, mentre la tabella Sales viene

distribuita secondo la colonna s_id. La JOIN, invece, richiede che entrambe le tabelle siano distribuite secondo la c_id (chiave di join), quindi viene eseguito uno slice delle operazioni e vengono create slice_1 e slice_2.

Sui segmenti, un processo di lavoro della query viene chiamata Query Executor ed è responsabile del completamento della sua porzione di lavoro e di comunicare i risultati intermedi agli altri processi.

Tesi di Laurea Magistrale 2015/2016

21

ogni esecuzione ogni segmento avrà un numero di processi di lavorazione della query parallelizzato sui vari nodi. I processi correlati che lavorano sulla stessa “porzione” del piano della query sono chiamati bande. Man mano che parte dell’esecuzione è stata effettuata, le tuple scorrono il piano delle query da una

banda di processi alla successiva.

Figura2.4: Lavorazione di una query

Un segmento esegue in genere da due a otto nodi Greenplum, a seconda dei core della CPU, RAM, capacità di memorizzazione, interfaccia di rete e carichi di lavoro. La configurazione dei segmenti presenti dovrebbe essere identica; il modo

Tesi di Laurea Magistrale 2015/2016

22

per ottimizzare le prestazioni del Database Greenplum è quello di distribuire i dati e i carichi di lavoro in modo uniforme su un ampio numero di segmenti in modo che ognuno di essi possa lavorare simultaneamente e possa completare l’esecuzione più o meno in contemporanea.

2.2.3 Collegamenti

Il collegamento è il livello di rete dell'architettura Greenplum Database e permette la comunicazione tra gli elementi sopra descritti. Esso regola la comunicazione dei processi tra i segmenti e l’infrastruttura di rete utilizzando un tessuto standard di

commutazione 10-Gigabit Ethernet.

Per impostazione predefinita, l'interconnessione utilizza User Datagram Protocol (UDP) per inviare messaggi sulla rete. Il software Greenplum esegue la verifica dei pacchetti assicurando un'affidabilità equivalente al Transmission Control Protocol (TCP), mentre per efficienza supera TCP. In altre parole, l’utilizzo del protocollo

UDP garantisce velocità, mentre per la sicurezza si simula il protocollo TCP attraverso un software predisposto.

Tesi di Laurea Magistrale 2015/2016

23

Documenti correlati