Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Elaborato finale in Sistemi Multimediali
Gestione di Basi di Dati in ambienti di
Cloud Computing
Anno Accademico 2010/2011
Candidato:
MIRIAM DURAZZO
matr. N46/000136
I
Alla mia famiglia
che mi ha incoraggiata e
sostenuta giorno per giorno.
Ai miei amici
che mi hanno regalato un
sorriso nei momenti più difficili.
II
Indice
Introduzione
4
Capitolo 1. Il Cloud Computing
5
1.1
1.2
1.3
1.4
1.4.1
1.5
1.6
Breve approccio storico
Virtualizzazione, Multitenancy e Grid Computing
Architetture e modelli di servizio per il Cloud Computing
Database as a Service (DaaS)
DaaS nella gestione dei dati geospaziali
Scenari per il Cloud Computing
Vantaggi e svantaggi del Cloud Computing
6
6
7
9
11
11
13
Capitolo 2. Amazon SimpleDB e Amazon Relation Database Service (RDS)
2.1
2.2
2.3
2.3.1
2.3.2
2.4
2.4.1
15
Storia di Amazon
Infrastruttura, protocolli e terminologia di AWS
SimpleDB
Concetti base del servizio SimpleDB
Programmazione del servizio SimpleDB
Amazon Relation Database Service (RDS)
Il servizio RDS
15
16
17
18
19
22
23
Bibliografia
26
III
Gestione di Basi di Dati in ambienti di Cloud Computing
Introduzione
L‟evoluzione delle tecnologie informatiche e dei mezzi di comunicazione è inarrestabile e ogni
giorno vengono messi a disposizione dei cittadini nuovi strumenti e soluzioni sempre più sofisticate
e integrate con la rete Internet, che consentono di soddisfare crescenti esigenze di
informatizzazione e di comunicazione. In tale quadro, il Cloud Computing è un insieme di modelli
di servizio che più di altri si sta diffondendo con grande rapidità tra imprese, pubbliche
amministrazioni e cittadini perché incoraggia un utilizzo flessibile delle proprie risorse
(infrastrutture e applicazioni) o di quelle messe a disposizione da un fornitore di servizi
specializzato.
Scopo di questa tesi è quello di verificare come l'infrastruttura del Cloud Computing sta
modificando le abitudini nell'utilizzo di risorse che possono andare dal semplice software di posta
elettronica fino ad un insieme di server per l'archiviazione di una grande mole di dati. Sarà
analizzato come avviene la gestione delle Basi di Dati tramite proprio l'infrastruttura
summenzionata (il cui servizio porta il nome di Database as a Service, DaaS) e come questa porti
innumerevoli benefici.
Saranno verificate le principale proposte che offre il mercato in termini di gestione della Base di
Dati (Amazon).
4
Gestione di Basi di Dati in ambienti di Cloud Computing
Capitolo 1
Il Cloud Computing[1][2]
Nella crescente complessità della società dell'informazione vengono prodotti ed elaborati un
numero sempre maggiore di dati. I nostri elaborati sono oggi salvati sul computer di casa o
dell'ufficio, ma la gestione e la condivisione di una quantità crescente di informazioni richiede un
sistema più flessibile che garantisca il salvataggio, la gestione e la condivisione delle informazioni.
Per rispondere a questa nuova esigenza nasce il Cloud Computing, un innovativo sistema di
gestione.
Il Cloud Computing risolve alcuni problemi pratici, come l'aggiornamento del back up e la
possibilità di costruire network sociali di computer, utili soprattutto nella gestione di dati nelle
piccole e medie imprese. Il Cloud dà la possibilità di navigare dentro una miniera enorme di dati e,
da lì, ricavare informazioni.
Alcune perplessità su questo tipo di tecnologia riguardano la sicurezza e la privacy, ma è stato
dimostrato che il sistema è sicuro e che l'insieme delle informazioni nel Cloud può essere utilizzata
solo dall'utente certificato attraverso chiavi di accesso.
Ma nello specifico cos‟è il Cloud Computing? Per dare una giusta definizione a tale espressione
analizziamo anzitutto l‟origine del termine. La parola CLOUD (in italiano NUVOLA) fa
riferimento all‟immagine più utilizzata per raffigurare il concetto di Internet nei diagrammi di
rete,ovvero una nuvola. È una metafora decisamente buona: al giorno d'oggi i dati e i programmi
non devono necessariamente risiedere sul PC, ma possono infatti essere "ospitati" (o memorizzati)
su Internet o, come si suol dire, "in the cloud".
5
Gestione di Basi di Dati in ambienti di Cloud Computing
Naturalmente Cloud Computing non è un sinonimo di Internet,anche se prevede un coinvolgimento
di tutta la rete. Con il termine CLOUD COMPUTING, invece, si intende semplicemente gestire
esternamente (online) le applicazioni e le attività, invece che all'interno delle quattro mura di casa o
dell‟ufficio. Quindi è una modalità di elaborazione basata su Internet in cui le risorse sono
distribuite con un approccio molto simile a quello di una centrale elettrica o telefonica. Ogni
utilizzatore, avendo precedentemente sottoscritto un abbonamento (a costo fisso o a consumo, pasas-you-go ), preleva le risorse in base alle sue esigenze senza sapere a quale centrale è connesso né
cosa avviene all‟altro capo del filo con cui è collegato al suo fornitore.
Dunque l‟obiettivo del Cloud Computing è molto semplice : affidare a qualcun altro il compito di
gestire l‟infrastruttura informatica aziendale eliminando la spesa necessaria per la gestione interna.
In tal modo vi è un risparmio in costi per l‟hardware, per le licenze software e di conseguenza di
tutte le risorse necessarie per la relativa manutenzione.
1.1 Breve approccio storico[3]
È noto considerare la storia dell‟informatica con un percorso ciclico che si ripete, che va dalla
centralizzazione alla decentralizzazione per poi tornare al ricentralizzarsi, il tutto condito
dall‟aumento della banda e della potenza delle CPU (processori). Con il Cloud Computing siamo
alla terza rivoluzione informatica. La prima fu l‟avvento del personal computer, la seconda la
nascita di Internet e la terza ha avuto avvio con la virtualizzazione e appunto il Cloud Computing.
Quasi 50 anni fa un qualcosa di simile al Cloud Computing avvenne con la creazione di agenzie, di
servizi e di sistemi time-sharing , ovvero sistemi centrali che prevedevano l‟utilizzo di mainframe
dislocati in istanze diverse rispetto ai terminali utilizzati dagli utenti. Tali terminali erano connessi
al mainframe attraverso linee telefoniche dedicate: in tal caso veniva utilizzato un software
configurato solo nel mainframe e non sui terminali.
Il primo ad accennare al Cloud Computing fu John McCarthy padre dell‟intelligenza artificiale. Nel
1961, al centenario del Mit, disse che il metodo time-sharing avrebbe condotto ad un futuro dove la
potenza dei calcolatori e delle applicazioni sarebbe stata venduta secondo il modello economico
della utilità, come per l‟acqua e l‟elettricità.
Con l‟avvento, però, dei personal computer è nato l‟approccio di “ liberare i software” dal
mainframe e di soddisfare un senso di personalizzazione che permetteva di “creare” sistemi
adeguati alle esigenze e ai gusti individuali. Uno dei principali profeti nel campo informatico, Ted
Nelson, anticipò questo bisogno attraverso il libro “Computer Lib/Dream Machines” del 1974.
Successivamente, con l‟avvento del modello client-server , circa nel 1980, una certa dislocazione
periferica avveniva solo per i dati tramite l‟utilizzo di un repository centrale e con personal
computer capaci di eseguire in loco i programmi.
1.2 Virtualizzazione, Multitenancy, Grid Computing[2]
Parlando del Cloud Computing i termini che emergono sono :

La VIRTUALIZZAZIONE DELL’HARDWARE fa riferimento alla possibilità di
sfruttare le risorse di un PC per creare una o più macchine virtuali in grado di simulare l‟hardware
fisico di un sistema di elaborazione. Questo tipo di tecnica è oggi sfruttata per il consolidamento di
6
Gestione di Basi di Dati in ambienti di Cloud Computing
più server su di una macchina fisica e proprio per questo motivo è importante per il Cloud
Computing. Si presti attenzione, la virtualizzazione dell‟hardware non deve essere confusa con
l’application virtualization che non ha niente a che fare con il Cloud, ma fa riferimento a
tecnologie che consentono di trasformare le normali applicazioni in applicazioni virtuali, le quali
agli occhi dell‟utente si comportano come normali programmi, in realtà, però, non interagiscono
con il sistemo operativo, ma bensì con lo strato software che le incapsula.

Il MULTITENANCY è un concetto che viene spesso utilizzato per descrivere alcune
piattaforme per il Cloud. Si riferisce a un principio di architettura del software in cui una singola
istanza del software gira su un server, che serve più clienti (tenants, cioè inquilini). Il multitenancy
è l'opposto di una architettura multi-istanza, dove separate istanze del software (o sistemi hardware)
sono istituite per diversi clienti. Con un‟architettura multitenant un‟applicazione software è
progettata per partizionare virtualmente i dati e la configurazione, così che ogni cliente lavora con
un'istanza personalizzata delle applicazioni virtuali.

Il GRID COMPUTING è un‟infrastruttura di calcolo distribuito, utilizzata per l‟elaborazione di
grandi quantità di dati, mediante l‟uso di una vasta quantità di risorse. In particolare, tale sistema
permette la condivisione coordinata di risorse all‟interno di un‟organizzazione virtuale. Prevede
che più computer collegati in rete lavorino contemporaneamente ad uno stesso problema, ad
esempio, la risoluzione di un complesso calcolo scientifico. In questo caso particolare si divide il
singolo problema computazionale in modo che possa essere elaborato simultaneamente su più
elaboratori. Nel Cloud Computing le cose funzionano al contrario, in un certo senso, ovvero un
singolo provider fornisce a più organizzazioni le risorse per l‟esecuzione di applicazioni simili.
1.3 Architetture e modelli di servizio per il Cloud Computing[2][5][6]
L'architettura del Cloud Computing prevede uno o più server reali, generalmente in architettura ad
alta affidabilità, fisicamente collocati presso il data center del fornitore del servizio. Il servizio, per
il quale è disponibile un fornitore, è ottenuto come trasformazione di un elemento
dell‟infrastruttura informatica di una rete. Esso viene eventualmente spostato e isolato per
permetterne la trasformazione. Il fornitore di servizi espone delle interfacce per elencare e gestire i
propri servizi. Il cliente amministratore utilizza tali interfacce per selezionare il servizio richiesto
(ad esempio un server virtuale completo oppure solo storage) e per amministrarlo (configurazione,
attivazione, disattivazione). Il cliente finale utilizza il servizio configurato dal cliente
amministratore. Le caratteristiche fisiche dell'implementazione (server reale, localizzazione del
data center) sono irrilevanti.
7
Gestione di Basi di Dati in ambienti di Cloud Computing
Il servizio potrebbe essere un componente software o, addirittura, un intero ambiente di lavoro.
Con l‟espressione “as a service” (“come un servizio”) , preceduta dall‟iniziale del servizio fornito
si formano alcuni degli acronimi più utilizzati in questo settore come : SaaS (Software as a
Service), PaaS (Platform as a Service), IaaS (Infrastructure as a Service). Un modo per identificare
tutte queste possibili variazioni è l‟ultilizzo della sigla XaaS, dove la “X” è considerata proprio
come una variabile. Gli acronimi prima elencati costituiscono i “modelli di servizio” maggiormente
utilizzati oggi e possono essere visti come i tre differenti tipi di Cloud Computing. Ad essi se ne
aggiunge un quarto, il “Database as a Service” (DaaS).
Esaminiamo nello specifico le tre tipologie fondamentali del Cloud Computing:

SaaS (Software as a Service) – Consiste nell‟utilizzo di programmi in remoto, spesso
attraverso un server web. È un modello di distribuzione del software applicativo dove un
produttore di software sviluppa, opera (direttamente o tramite terze parti) e gestisce un'applicazione
web che mette a disposizione dei propri clienti via internet.
Il concetto di "software as a service" ha iniziato a circolare nell'anno 2000 ed è associato
principalmente al saggio di Tim O'Reilly su "The Open Source Paradigm Shift".
Questa architettura può essere adottata sia dal produttore del software, per fornire il proprio
prodotto direttamente, sia da un semplice fornitore di servizi. A entrambi è demandata la gestione
degli aggiornamenti e l‟effettuazione della manutenzione dell‟applicativo con tutti gli oneri che
esso comporterà.
Dal momento che il modello di software come prodotto domina il mercato, l‟idea di software come
servizio può apparire quasi aliena: anziché “possedere” integralmente un software importante, si
propone ai clienti di pagare una sottoscrizione per un software che viene eseguito sui server di
qualcun altro e che non sarà più disponibile quando si smette di rinnovare la sottoscrizione. Per
questa ragione è fondamentale che il potenziale cliente comprenda che il passaggio dal modello
tradizionale al modello SaaS prospetta vantaggi diretti e ben quantificabili. Ad esempio i costi sono
strettamente legati all‟utilizzo, pertanto possono crescere progressivamente senza richiedere un
forte investimento iniziale. Dunque i clienti non pagano per il possesso del software bensì per
l'utilizzo dello stesso. Essi utilizzano il software tramite API accessibili via web.
Il termine SaaS è diventato il termine di riferimento, rimpiazzando i precedenti termini Application
service provider (ASP) e On-Demand. In effetti la differenza sostanziale tra ASP e SaaS è che le
piattaforme ASP eseguono di norma un‟ applicazione in uno spazio dati comune, mentre il
paradigma SaaS crea una sola istanza del software. Si differenzia inoltre dall'architettura multitenant nella quale troviamo tante macchine virtuali quanti sono i clienti, ma ognuno dei clienti gode
di uno spazio dati separato.

PaaS (Platform as a Service) – È simile al SaaS, ma, invece che uno o più programmi
singoli, viene eseguita in remoto una piattaforma software che può essere costituita da diversi
servizi, programmi, librerie, etc. In questo modo gli utenti coinvolti oltre che a utilizzare i software
possono, grazie alle piattaforme a disposizione, sviluppare, integrare ed erogare le applicazioni,
avendo di fatto il pieno controllo sugli strati applicativi.
Quindi, gli elementi del PaaS permettono di estendere, testare, implementare e gestire le
applicazioni aziendali (senza i costi e la complessità associati all'acquisto), la configurazione,
l'ottimizzazione e la gestione dell'hardware e del software di base; inoltre, essi possono essere
impiegati per la progettazione di design, sviluppo di applicazioni e di servizi applicativi come la
8
Gestione di Basi di Dati in ambienti di Cloud Computing
collaborazione in team, l'integrazione Web, l'integrazione del database, la sicurezza e la gestione
dello stato. Tali servizi possono essere impiegati come una soluzione integrata sul Web.
Il PaaS tuttavia è l‟aspetto tecnologico del Cloud Computing meno sviluppato ed è anche quello
che presenta più rischi per l‟utilizzatore. Ad esempio, migrare verso un altro provider potrebbe
essere molto oneroso, oppure, se chi eroga servizi dovesse cessare la propria attività l‟impatto sulle
attività di un‟azienda che utilizza PaaS potrebbero essere devastanti. Per questo, molti fornitori di
servizi PaaS (come Google) hanno iniziato ad offrire una soluzione alternativa che prevede
l‟esecuzione delle applicazioni anche on-premise, cioè entro le mura dell‟azienda.

IaaS ( Infrastructure as a Service) – Consiste nell‟utilizzo di risorse hardware in remoto
con una caratteristica imprescindibile: le risorse vengono utilizzate su richiesta o su domanda nel
momento in cui un cliente ne ha bisogno, non vengono assegnate a prescindere dal loro utilizzo
effettivo.
Dunque consiste nell‟utilizzo da remoto di software, hardware e di tutte le componenti che possono
servire allo storage di dati e al networking, come server e quant‟altro. Il provider, in questo caso,
mette a disposizione dell‟utente non più la fornitura di software o di una piattaforma, ma una o più
macchine (fisiche o virtuali) che egli potrà utilizzare e controllare da remoto in base alle proprie
esigenze. Il fornitore, però, non offre solo le infrastrutture hardware ma anche la licenza del sistema
operativo e tutto il sistema di virtualizzazione necessario.
Il cliente che usufruisce del servizio paga, nella maggior parte dei casi, in base all‟utilizzo con una
tariffa che dipende dall‟hardware richiesto, ma ci sono anche tariffe a costo mensile fisso (flat). Il
fornitore stabilisce, anche, un livello di disponibilità che si impegna a mantenere.
Oltre ai notevoli vantaggi in termini di ottimizzazione e razionalizzazione delle risorse, l‟utente
finale può contare su un‟elevata flessibilità e scalabilità del servizio, che può essere incrementato o
diminuito rapidamente (ad esempio, in termini di numero e capacità dei server cloud utilizzati) per
consentirgli di affrontare periodi di crescita o di abbassamento della domanda.
Affidandosi a provider specializzati, le aziende riescono inoltre a liberare da gravosi compiti di
gestione i propri team IT, guadagnando tempo prezioso da dedicare ad attività maggiormente
produttive.
1.4 Database as a Service (DaaS)[7]
DaaS (Database as a Service) consiste in un servizio che consente di creare, memorizzare e
accedere ad apposite Basi di Dati distribuite.
9
Gestione di Basi di Dati in ambienti di Cloud Computing
La gestione delle Basi di Dati viene, pertanto, realizzata dai Service Provider di Database attraverso
meccanismi che permettono di creare, archiviare e accedere ai dati. La totale responsabilità di tali
operazioni ricade sugli stessi provider. La gestione prevede anche il backup dei dati,
l‟amministrazione, il restauro, l‟eventuale riorganizzazione della struttura per il recupero di spazio
o il ripristino di una diversa disposizione dei dati e la migrazione.
Attraverso questo nuovo paradigma gli utenti avranno una vita maggiormente semplificata in
quanto l‟accesso ai dati potrà essere effettuato tramite l‟hardware e il software messo a
disposizione (previo pagamento del servizio) dal fornitore di servizi, invece di una complessa
organizzazione e infrastruttura informatica propria. L‟unica operazione che l‟utente dovrà compiere
sarà quella di accedere e operare su un sistema informatico già pronto per l‟uso.
Il primo servizio DaaS fu introdotto nel 2002 con la piattaforma NetDB2. Oggi il servizio è offerto
da diversi operatori che propongono, unitamente al servizio DaaS, i servizi SaaS, IaaS e PaaS :
Amazon, Google e Microsoft. I più diffusi sono : SimpleDB di Amazon e Cloud SQL di Google.
Entrambi prevedono un meccanismo per organizzare i dati archiviati come un servizio.
Tale modello riduce la necessità di acquistare costosi hardware per lo storage della Base di Dati, di
software per la gestione della stessa oltre alle attività di manutenzione e aggiornamento per la
buona resa del servizio. Tutto ciò è compreso direttamente nel servizio di Database in Cloud con i
vantaggi che ne derivano. Senza dimenticare che oggi le basi di dati tendono quantitativamente a
crescere e pertanto i costi potranno lievitare nel momento in cui le stesse basi di dati dovranno
coprire le esigenze crescenti delle imprese e degli enti utilizzatori.
Un ulteriore fattore da considerare, nel momento in cui parliamo delle basi di dati, è la migrazione :
migrare da una versione di software, che gestisce le BD ad un‟altra, risulta spesso un‟operazione
difficile e laboriosa. Le difficoltà da affrontare nel momento in cui si realizza un “Database as a
service” sono:


le prestazioni dovute alla distanza per l‟accesso ai dati
l‟infrastruttura per garantire la riservatezza dei dati

il design interfaccia utente per tale servizio
Le prestazioni, in questo contesto, sono profondamente legate alle prestazioni della rete. Utilizzare
delle connessioni ad elevata velocità, come la fibra ottica, permetterà di aumentare il livello
prestazionale offerto dal servizio. Ciò, però, comporterà delle spese maggiori e bisogna anche tener
conto che laddove si presenti la necessità di utilizzare connessioni wireless, esse non saranno
affidabili e veloci come una connessione wired. Mettere in preventivo eventuali decadenze del
servizio offerto, legate alle decadenze della rete, farà parte della politica di gestione dell‟impresa o
dell‟ente utilizzatore.
La riservatezza dei dati rappresenta uno dei punti cruciali nel momento in cui si gestisce una Base
di Dati tramite infrastruttura Cloud Computing. Sappiamo che nel momento in cui una società, un
ente o una grande corporazione decide di gestire in Cloud una serie di dati, questi dovranno, per
forza, risiedere in dispositivi di storage presenti nei locali del fornitore di servizi. Questo insieme di
dati potrebbe essere molto prezioso anche per lo stesso utilizzatore, quindi il fornitore deve
garantire delle elevati ed efficienti misure di sicurezza per proteggere la riservatezza delle
informazioni in questione. Una possibile soluzione potrebbe essere la crittografia.
10
Gestione di Basi di Dati in ambienti di Cloud Computing
Il fornitore di servizi di database in Cloud, infine, deve presentare un‟interfaccia utente appropriata.
I requisisti, facente parte di tale interfaccia, dovrebbero essere la semplicità di utilizzo, ma nel
contempo, un elevato grado di efficienza e facilità nella creazione di applicazioni.
1.4.1 DaaS nella gestione dei dati geospaziali[8]
In ambito geospaziale vengono molto utilizzati i servizi DaaS. Infatti la necessità di accedere a
grandi moli di dati, per elaborazioni che restituiscono piccoli sottoinsiemi delle basi dati analizzate,
è ideale per un utilizzo di servizi DaaS. Vari servizi specifici come il WMS (Web Map Service), il
WFS (Web Features Services), il WCS (Web Coverage Services), che restituiscono rispettivamente
Mappe, Features e Coverage, si basano sulla logica DaaS e sono di fatto veri e propri servizi DaaS.
Immaginiamo di volere sul nostro smartphone una piccola immagine del luogo dove ci troviamo
che però sia il frutto della sovrapposizione dello stradario, della situazione meteo e della posizione
di ristoranti,di parcheggi e di alberghi. Senza i servizi DaaS il software che elabora queste banche
dati dovrebbe (dopo essere stato installato sul cellulare) prima scaricare l'elenco dei ristoranti, poi
dei parcheggi, poi degli alberghi e poi tutte le immagini meteo per elaborare il tutto, generare una
piccola mappa e visualizzarla. Ciò comporta che vi sia un‟ enorme mole di dati spostati con tutti i
problemi connessi (memoria, banda, trasferimento, tempo etc.).
Un servizio DaaS invece funzionerebbe in questo modo: ricevuta la posizione con l'elenco degli
strati da visualizzare, elabora l'immagine così come verrà vista sul cellulare e la trasferisce già
elaborata in un formato, casomai compresso, con l'impiego di pochi kByte di traffico.
1.5 Scenari per il Cloud Computing[2][4]
L‟innovazione e il successo delle cloud (le nuvole informatiche) risiede nel fatto che, grazie alla
raggiunta maturità delle tecnologie che ne costituiscono la base, tali risorse sono facilmente
configurabili e accessibili via rete e sono caratterizzate da particolare agilità di fruizione che, da
una parte semplifica significativamente il dimensionamento iniziale dei sistemi e delle applicazioni
mentre, dall‟altra, permette di sostenere gradualmente lo sforzo di investimento richiesto per gli
opportuni adeguamenti tecnologici e l‟erogazione di nuovi servizi.
Nell‟ambito del cloud computing è ormai prassi consolidata distinguere tra private cloud, public
cloud e hybrid cloud.
Una private cloud (o nuvola privata) è un‟infrastruttura informatica per lo più dedicata alle
esigenze di una singola organizzazione, ubicata nei suoi locali o affidata in gestione ad un terzo
(nella tradizionale forma dell‟hosting dei server) nei confronti del quale il titolare dei dati può
spesso esercitare un controllo puntuale. Le private cloud possono essere paragonate ai tradizionali
“data center” nei quali, però, sono usati degli accorgimenti tecnologici che permettono di
ottimizzare l‟utilizzo delle risorse disponibili e di potenziarle attraverso investimenti contenuti e
attuati progressivamente nel tempo.
Nel caso delle public cloud, invece, l‟infrastruttura è di proprietà di un fornitore specializzato
nell‟erogazione di servizi che mette a disposizione di utenti, aziende o amministrazioni - e quindi
condivide tra di essi - i propri sistemi attraverso l‟erogazione via web di applicazioni informatiche,
di capacità elaborativa e di stoccaggio. La fruizione di tali servizi avviene tramite la rete Internet e
implica il trasferimento dell‟elaborazione o dei soli dati presso i sistemi del fornitore del servizio, il
11
Gestione di Basi di Dati in ambienti di Cloud Computing
quale assume un ruolo importante in ordine all‟efficacia delle misure adottate per garantire la
protezione dei dati che gli sono stati affidati. In questo caso l‟utente insieme ai dati, infatti, cede
una parte importante del controllo esercitabile su di essi. Ad esempio, la complessità delle
infrastrutture e la loro eventuale dislocazione su siti al di fuori dei confini nazionali potrebbe
determinare l‟impossibilità sia di conoscere con esattezza l‟ubicazione dei propri dati nella nuvola,
sia di sapere se e quando i dati vengono spostati da un luogo all'altro per esigenze organizzative,
tecniche o economiche difficilmente determinabili e gestibili a priori.
Un hybrid cloud è una combinazione di modelli pubblici e privati, che cerca di affrontare i limiti di
entrambi gli approcci. In una cloud ibrida, una parte dei servizi infrastrutturali viene eseguita nella
cloud privata, mentre la restante parte viene eseguita nella cloud pubblica. Le cloud ibride offrono
più flessibilità rispetto alle precedenti categorie. In particolare, forniscono maggiori controlli e
sicurezza sui dati rispetto alle cloud pubbliche, mentre facilitano l‟espansione e la contrazione ondemand. Ciò nonostante, progettare una cloud ibrida richiede di determinare attentamente il miglior
bilanciamento tra le risorse dedicate alla sua parte pubblica e a quella privata.
Accanto alle private ,public e hybrid cloud si annoverano le community cloud in cui
l'infrastruttura è condivisa da diverse organizzazioni a beneficio di una specifica comunità di utenti.
I potenziali vantaggi del cloud computing certamente possono promuovere la sistematizzazione
delle infrastrutture, la riorganizzazione dei flussi informativi, la razionalizzazione dei costi e quindi
in generale favorire sia il mondo imprenditoriale, che la pubblica amministrazione con servizi più
moderni, efficienti e funzionali in linea con le esigenze di crescita di un moderno Sistema Paese. È
d‟altra parte assodato che il cloud computing non è un fenomeno temporaneo o una moda, ma
l'evoluzione del modo in cui si utilizza la Rete Internet, che da strumento per la sola condivisione
documentale (la pagina web resa disponibile dal sito web remoto) diviene la porta d'accesso alle
risorse elaborative di un provider di servizi (l'applicazione resa disponibile in modalità web).
Questa trasformazione sta determinando una “modifica dei costumi” che è già in atto ed è più
evidente nell'utenza individuale che più frequentemente, ma non sempre con completa
consapevolezza dei possibili rischi derivanti dalle nuove tecnologie utilizzate, si avvale di servizi
erogati da fornitori terzi (public cloud) per far fronte alle sue esigenze informative. L'utente
consumer, infatti, utilizza i social network sui quali trasferisce abitualmente foto, informazioni,
idee e opinioni, usa strumenti di elaborazione documentale via web, impiega gli hard-disk remoti
per poter sempre disporre dei propri documenti da qualunque dispositivo e in qualunque luogo si
trovi, si avvale delle applicazioni per i moderni smartphone sempre connessi ad Internet che tramite
l‟associazione delle informazioni di geolocalizzazione hanno aperto all‟utente la strada a
innovative funzionalità anche in ambito sociale. Risulta d‟altra parte evidente come l‟offerta degli
12
Gestione di Basi di Dati in ambienti di Cloud Computing
operatori economici stia incalzando il mercato delle imprese e della Pubblica Amministrazione con
soluzioni che incoraggiano l‟acquisizione di servizi esternalizzati, sfruttando la prospettiva di
risparmi legati alla sostituzione o all‟affiancamento degli asset per il trattamento delle informazioni
che tradizionalmente sono in possesso dell‟utente. È tuttavia opportuno evidenziare che il ricorso a
modalità che promuovono l‟utilizzo di servizi esternalizzati comportino anche la migrazione dei
dati dai sistemi locali sotto il diretto controllo dell'utente, a sistemi remoti del provider di servizi.
1.6 Vantaggi e svantaggi del Cloud Computing[2][6]
Rex Wang, presidente di Oracle Corporation, in un‟apposita discussione sulla rete [9], dice: “Le
motivazioni primarie che spingono verso l'adozione del cloud computing. sono costituite dalla sua
agilità ed efficienza nel rispondere alle esigenze dinamiche del business. La possibilità di accedere
su richiesta a un pool condiviso di risorse di calcolo è molto attraente. Le architetture di tipo cloud
offrono servizi più rapidi e flessibili, percentuali maggiori di utilizzo dei server e un'efficienza di
gestione superiore…”.
Il cloud computing ha, infatti, enormi vantaggi. Elenchiamo i principali:

Riduzione delle spese di hardware ed elettriche: l'adozione di un'architettura basata sul
cloud può consentire un risparmio significativo sull'hardware soprattutto per ciò che riguarda le
applicazioni lato server. Il risparmio si realizza sulla manutenzione delle apparecchiature (è il
fornitore di servizi a occuparsi di tutto) e anche sul costo dell'energia elettrica consumata dagli
stessi dispositivi.
Altri risparmi si hanno sia sull‟acquisto dei dispositivi di rete (firewall, router, dispositivi di load
balancing, ecc.) in quanto non si ha più bisogno di preservare la rete interna da parte di un‟azienda,
e sia sui costi legati alla gestione preventiva delle situazioni di emergenza (come un incendio o un
furto).
Alle aziende è risparmiato l'onere di acquistare e gestire, come già precedentemente accennato,
tutte le licenze necessarie del caso e il relativo controllo sui termini d'uso.
Infine, nel caso di utilizzo del servizio SaaS e PaaS, il provider si occupa di installare tutte le patch
e di gestire gli aggiornamenti del sistema operativo e di tutti i software necessari. In tal modo si
evitano problemi di sicurezza e si limitano i costi di manutenzione.

Disponibilità dei dati ovunque nel mondo: Si evita di dover trasportare dispositivi di
storage a casa o in altre sedi dell'azienda perché i dati di un sistema cloud sono reperibili comunque
dato che si trovano già per definizione off-site.

Protezione dei dati: Tutti i principali fornitori di servizi cloud adottano standard di sicurezza
elevati e utilizzano il protocollo Ssl (Secure Socket Layer) per proteggere la confidenzialità dei dati
che sono trasmessi da e verso i loro server.

Scalabilità: disporre per le aziende e non solo, di una notevole potenza di calcolo è una
soluzione ottimale. Ad esempio, per un sito e-commerce poter disporre di maggiori risorse quando
gli accessi, cioè le vendite, aumentano è l‟ideale e presenta indubbi vantaggi in termini di
marketing. È bene precisare, infine, che nel momento in cui una determinata società non ha più
bisogno di un certo numero di risorse precedentemente richieste, il provider le rimetterà a
13
Gestione di Basi di Dati in ambienti di Cloud Computing
disposizione nella “nuvola”. In questo modo le risorse potranno nuovamente essere configurate per
il loro utilizzo e sono segnalate come disponibili.
Passiamo ora ad esaminare gli svantaggi che una tecnologia Cloud può presentare. I sistemi di
Cloud Computing vengono criticati principalmente per l‟esposizione degli utenti a rischi legati a:

Sicurezza informatica e privacy degli utenti: utilizzare un servizio Cloud Computing per
memorizzare dati personali o sensibili, espone l‟utente a potenziali problemi di violazione della
privacy. I dati personali vengono memorizzati nelle Server Farm di aziende che spesso risiedono in
uno stato diverso da quello dell‟utente. Il cloud provider, in caso di comportamento scorretto o
malevolo, potrebbe accedere ai dati personali per eseguire ricerche di mercato e profilazione degli
utenti.
Con i collegamenti wireless il rischio di sicurezza aumenta e si è maggiormente esposti ai casi di
pirateria informatica a causa della minore sicurezza offerta dalle reti senza fili. In presenza di atti
illegali, come appropriazione indebita o illegale di dati personali, il danno potrebbe essere molto
grave per l‟utente, con difficoltà di raggiungere soluzioni giuridiche e/o rimborsi se il fornitore
risiede in uno stato diverso da quello dell‟utente.
Nel caso di industrie o aziende, tutti i dati memorizzati nelle memorie esterne sono esposti a
eventuali casi di spionaggio industriale.

Problemi internazionali di tipo economico e politico: possono verificarsi quando dati
pubblici sono raccolti e conservati in archivi privati, situati in un paese diverso da quello degli
utenti della “nuvola”. Grandi quantità di informazioni personali sono memorizzate in forma di dati
digitali in archivi privati centralizzati e parzialmente accessibili e nessuna garanzia viene data agli
utenti per un libero accesso futuro.
Altre problematiche sono legate alla localizzazione degli archivi della “nuvola” in alcuni paesi
ricchi. Se non regolato da specifiche norme internazionali ciò potrebbe, ad esempio, aumentare il
“digital divide” tra paesi ricchi e poveri.

Continuità del servizio offerto: delegando a un servizio esterno la gestione dei dati e la loro
elaborazione l‟utente si trova fortemente limitato nel caso in cui i suddetti servizi non siano
operativi. Inoltre, un eventuale malfunzionamento colpirebbe un numero molto elevato di persone
contemporaneamente. Anche se i migliori servizi di Cloud Computing utilizzano architetture
ridondanti e personale qualificato, al fine di evitare malfunzionamenti dei sistemi e ridurre la
probabilità di guasti visibili dall‟utente finale, non eliminano del tutto il problema. Bisogna anche
considerare che tutto si basa sulla possibilità di avere una connessione Internet ad alta velocità sia
in download che in upload e che anche nel caso di un‟ interruzione della connessione dovuta al
proprio Internet Service Provider si ha la completa paralisi delle attività.

Difficoltà di migrazione dei dati nel caso di un eventuale cambio del gestore dei servizi
Cloud: non esistendo uno standard definito tra i gestori dei servizi, un eventuale cambio di
operatore risulta estremamente complesso. Tutto ciò risulterebbe estremamente dannoso in caso di
fallimento del gestore dei servizi cui ci si è affidati.
14
Gestione di Basi di Dati in ambienti di Cloud Computing
Capitolo 2
Amazon SimpleDB e Amazon Relation Database Service (RDS)[10]
Amazon, oltre ad essere stata una delle primissime aziende a credere nella potenza del commercio
elettronico, è stata un pioniere nel campo del Cloud Computing. Essa offre due servizi per la
gestione della base di dati nella “nuvola” : il servizio SimpleDB e il servizio Amazon Relation
Database Service (RDS).
2.1 Storia di Amazon
Amazon.com Inc. fu fondata nel 1994, ma il sito venne pubblicato on-line nel 1995. Allo scopo di
garantire la scalabilità richiesta per creare un business on-line redditizio, l‟azienda pianificò una
serie di investimenti strategici per costruire l‟infrastruttura Internet da sviluppare su scala globale.
L‟infrastruttura comprendeva svariati data center sparsi per il mondo, sistemi di connessione ad alta
velocità, un numero incredibile di server e un‟architettura di sistema configurata a livello mondiale.
Se si tiene conto del fatto che la base dei clienti è stimata nell‟ordine di decine di milioni di utenti,
non c‟è dubbio che ogni componente del sistema deve risultare affidabile, efficiente , conveniente e
pienamente scalabile.
La consapevolezza che gli sviluppatori web sparsi per il mondo possono sfruttare le potenzialità
offerte dai servizi del sito Amazon ha portato l‟azienda a definire successivamente una nuova
forma di business. All‟inizio del 2006 Amazon lancio il servizio S3 (Simple Storage Service), da
cui ha avuto inizio la realizzazione di una soluzione innovativa per il mercato web, che comprende
un‟infrastruttura dedicata alla tecnologia di Cloud Computing e diverse modalità di pagamento. A
ciò si aggiunge personale, marketing e servizi di monitoraggio web che vanno sotto il nome di AWS
(Amazon Web Service), una sigla che identifica una nuova azienda e un marchio ben preciso.
15
Gestione di Basi di Dati in ambienti di Cloud Computing
2.2 Infrastruttura, protocolli e terminologia di AWS
L‟infrastruttura web di AWS si basa sulla presenza di una serie di blocchi di costruzione. I servizi
sono configurati in modo tale da funzionare in maniera indipendente l‟uno dall‟altro, pertanto è
possibile utilizzare un servizio in particolare senza tener conto della presenza di altri servizi AWS.
I servizi offerti sono, ad ogni modo, progettati per funzionare in combinazione tra loro. Dato che
appartengono ad una sola azienda, condividono nomenclatura e un sistema unico di autenticazione:
ciò consente di applicare facilmente i blocchi di un servizio ad altri servizi. La soluzione a blocchi
permette di minimizzare le connessioni interne all‟infrastruttura e le dipendenze tra i diversi
servizi, il che garantisce ad Amazon la possibilità di perfezionare ciascun servizio
indipendentemente dagli altri, allo scopo di offrire sempre la massima efficienza possibile.
In AWS si può accedere ad una qualsiasi funzionalità tramite una chiamata (call) a un servizio
web. Operazioni come l‟avvio di un server, la creazione di un load balancer, l‟allocazione di un
indirizzo IP o la configurazione di un‟unità di memorizzazione permanente sono solo alcuni esempi
di funzionalità richiamate tramite call a servizi web di AWS. Queste calls rappresentano
l‟interfaccia primaria e di basso livello dei servizi AWS. È inoltre possibile scrivere direttamente le
calls per conto proprio, anche se è più facile sfruttare una libreria client che includa script
appositamente predisposti utilizzando un determinato linguaggio di programmazione.
Le calls relative ai servizi web utilizzano il protocollo SOAP (Simple Object Access Protocol)
oppure il protocollo REST (REpresentational State Transfer). Essi costituiscono le due modalità di
avvio di una call, ovvero della richiesta di un servizio web. Le librerie e gli strumenti delle API
(Application Programming Interface) permettendo di semplificare la procedura di accesso ai
servizi offerti da AWS.
L‟accesso ai servizi AWS da una libreria SOAP permette di evitare la definizione diretta di tag o di
XML . Al contrario, chi utilizza una libreria REST deve eseguire operazioni di parsing (analisi
sintattica) prima di accedere ai dati restituiti da ogni singola call.
Gli strumenti da riga di comando e gli strumenti dell‟interfaccia grafica comunicano con i servizi
AWS utilizzando le API, interfacce aperte e pubbliche. In questo modo è possibile duplicare le
funzioni di uno strumento nelle applicazioni. La struttura a livelli dell‟infrastruttura AWS implica il
fatto che tutti gli sviluppatori si trovano sullo stesso piano.
Introduciamo ora alcuni concetti fondamentali della soluzione offerta da Amazon per il Cloud
Computing, che consistono in un elenco di comandi che permettono di accedere agli elementi
fondamentali dei servizi AWS.

Availability zone (zona di disponibilità): corrisponde ad un gruppo di postazioni distinte
nell‟ambito di una regione AWS. Ogni availability zone dispone di una propria autonomia di
potenza elettrica e di connessioni in rete, tali da proteggerla da problemi di funzionamento che si
possono manifestare in altre availability zone.

Regione: indica un gruppo di availability zone che si trovano in una stessa posizione
geografica. Ogni regione AWS è identificata da un nome che descrive sommariamente l‟aria
geografica, anche se la localizzazione precisa è tenuta nascosta per motivi di sicurezza.

Access Identifier (identificatore di accesso): AWS utilizza diversi access identifier per
identificare gli account. Questi identificatori adottano modalità differenti di crittografia a chiave
pubblica e sono sempre definiti da una coppia di valori. Il primo elemento della coppia è pubblico,
se è necessario può essere reso noto e viene utilizzato per identificare un determinato account
16
Gestione di Basi di Dati in ambienti di Cloud Computing
AWS. Il secondo elemento è privato, non deve essere mai condiviso e costituisce la firma digitale
che accompagna ogni singola richiesta rivolta al sistema AWS. La firma, trasmessa insieme alla
richiesta, garantisce l‟integrità della richiesta stessa e permette inoltre al sistema AWS di verificare
che la richiesta è stata effettuata proprio dall‟utente in questione.

Amazon Machine Image (AMI) : unità molto simile a quella del root del computer, contiene
il sistema operativo e include il software e i livelli di applicazione necessari per il funzionamento
dei servizi AWS.

Istanza: copia di AMI in esecuzione. È possibile avviare un numero qualsiasi di copie della
stessa AMI.

Indirizzamento IP elastico: AWS permette di allocare indirizzi IP fissi e di collegare questi
indirizzi a determinate istanze. Questa operazione prende il nome di indirizzamento IP elastico.
Ogni istanza può essere collegata ad un solo indirizzo IP di questo tipo. Il termine “elastico” fa
riferimento al fatto che è possibile allocare, collegare, separare e liberare gli indirizzi a piacere, in
base alla necessità del servizio.

Security group (gruppo di sicurezza): è un insieme di connessioni di rete inbound a
disposizione di una determinata istanza. Ogni gruppo è identificato da un nome ed è costituito da
un elenco di protocolli, porte e intervalli di indirizzi IP.
2.3 SimpleDB
Numerose applicazioni web impiegano un database relazionale general purpose, come Oracle o
MySQL, per memorizzare i dati relativi a nomi utente, password, elenchi di file, preferenze, link e
così via. Tali database sono diventati sempre più complessi e comprendono migliaia di pagine di
documentazione, librerie e strumenti aggiuntivi, con un‟industria intera che si occupa della
formazione e del supporto del prodotto.
Amazon SimpleDB è un database basato sul Cloud Computing che non richiede di acquistare,
installare e gestire alcun hardware e nemmeno di configurare un software. Esso supporta la
memorizzazione e la ricerca di dati semistrutturati, che prevedono voci (righe) simili, ma non
completamente identiche tra loro. A differenza di un database relazionale di tipo convenzionale,
SimpleDB non utilizza uno schema fisso di dati, ma è in grado di adattarsi in tempo reale a
variazioni di “forma” dei dati memorizzati. Questa proprietà consente di evitare l‟aggiornamento
dei dati esistenti ogni volta che si aggiunge un nuovo campo del database.
Tutti i dati memorizzati in Amazon SimpleDB sono indicizzati in modo automatico, quindi non è
necessario ricorrere a profili personalizzati oppure ottimizzare le query. La conoscenza del
linguaggio SQL (Structured Query Language) è un prerequisito importante, dato che è possibile
leggere i dati utilizzando query SQL di selezione . Il modello di Amazon SimpleDB non supporta
la combinazione tra domini, ma può memorizzare i dati in una forma non normalizzata allo scopo
di ottenere un accesso più efficiente.
Lo schema dei dati di SimpleDB è flessibile e diretto. È possibile raggruppare dati simili in domini;
ogni dominio può gestire milioni di voci, ciascuna delle quali è identificata da una voce univoca.
Ogni voce può essere a sua volta associata a un certo numero di coppie attributo/valore e i nomi
degli attributi possono cambiare da voce a voce, dove è necessario. Analogamente ad altri servizi,
anche SimpleDB permette di gestire enormi quantità di dati a grande velocità, pertanto non è
17
Gestione di Basi di Dati in ambienti di Cloud Computing
necessario occuparsi dell‟aggiunta di nuove unità disco e dell‟implementazione di complessi
schemi di duplicazione dei dati ogni volta che aumentano le dimensioni del database. Si può
pensare di aumentare le dimensioni di un‟applicazione su scala mondiale mantenendo sempre una
struttura pulita del codice e un‟infrastruttura lineare.
La costruzione di un sistema altamente scalabile diventa in questo modo molto più immediata, ciò
che richiede il SimpleDB è solo un po‟ più di tempo per la progettazione dello schema del
database, ma le modifiche successive si potranno effettuare facilmente e senza dover lavorare
offline. SimpleDB verifica per conto proprio che sia disponibile uno spazio su disco sufficiente e
una CPU adeguata, sfruttando automaticamente tecniche di elaborazione parallela che vadano a
suddividere il carico di lavoro su più dischi e server differenti, se è necessario. Questa forma di
scalabilità e ridondanza, intrinseca e sempre dietro le quinte, offre la massima fault tolerance e una
considerevole availability senza richiedere un monitoraggio continuo o altri interventi manuali.
2.3.1 Concetti base del servizio SimpleDB
Il principio di funzionamento di Amazon SimpleDB comprende un piccolo numero di concetti
fondamentali e si basa su un‟interfaccia di programmazione molto compatta.
Un dominio Amazon SimpleDB è pressoché analogo alla tabella di un database relazionale. Ogni
dominio esiste nell‟ambito di un particolare account AWS ed è identificato da un nome. Può
memorizzare fino a 10 GB di dati e le applicazioni che devono memorizzare una quantità maggiore
di dati possono facilmente distribuirli tra più domini. Un account AWS ammette l‟assegnazione di
100 domini, se necessario è possibile richiedere l‟assegnazione di un numero maggiore.
Ogni voce di un dominio SimpleDB include un nome univoco e fino a 256 attributi (ovvero coppie
nome-valore). I nomi di voci, attributi e valori possono avere una lunghezza massima di 1024 byte
e ogni dominio può memorizzare fino a un miliardo di attributi. Gli attributi delle voci possono
assumere più valori e si possono avere fino a 256 valori per attributo. Ogni valore dell‟attributo
incrementa il conteggio dei 256 attributi disponibili per ogni voce e tutti i valori sono trattati come
stringhe. Questo comporta alcune implicazioni non scontate e importanti quando si tratta di
memorizzare e ricavare valori numerici. Tutti i valori sono indicizzati automaticamente.
Le operazioni di inserimento, cancellazione e aggiornamento di voci SimpleDB sono effettuate da
API. Le query sono definite utilizzando query SQL di selezione da API.
Il modello di elaborazione di Amazon SimpleDB è composto da nove chiamate API suddivise a
livello di dominio e a livello di voce:

A livello di DOMINIO le calls CreatDomain, ListDomain e DeleteDomain, rispettivamente,
creano un dominio, restituiscono un elenco di domini e cancellano domini, mentre la chiamata
DomainMetadata restituisce informazioni sull‟utilizzo del dominio indicato.

A livello di VOCE PutAttributes crea nuove voci e aggiunge/sostituisce gli attributi delle
voci esistenti; BatchAttributes è una versione estesa di PutAttributes e gestisce più voci con un solo
comando; DeleteAttributes rimuove attributi da una voce; GetAttributes restituisce gli attributi
inidicati nel comando; Select definisce una query SQL.
18
Gestione di Basi di Dati in ambienti di Cloud Computing
2.3.2 Programmazione del servizio SimpleDB
Per accedere al SimpleDB utilizziamo CloudFusion che consiste in una libreria che supporta tutti i
servizi AWS. CloudFusion è in grado di gestire gli accessi multi-thread, un numero considerevole
di operazioni ed è disponibile in formato open-source con licenza BSD. Include, inoltre, un certo
numero di utility di alto livello che semplificano l‟utilizzo dei servizi AWS.
Dunque, tramite CloudFusion possiamo anche accedere a tutte le funzionalità del SimpleDB. Di
seguito saranno riportate una serie di operazioni che riguarderanno la creazione, la memorizzazione
dei dati, l‟esecuzione di query e la cancellazione di attributi.
I domini utilizzati sono inseriti nel file book.inc.php:

define(„BOOK_FILE_DOMAIN‟, ‟files‟);


define („BOOK_FEED_DOMAIN‟, „feeds‟);
define („BOOK_FEED_ITEM_DOMAIN‟, „feed-items‟);
BOOK_FILE_DOMAIN memorizza le informazioni sul file, BOOK_FEED_DOMAIN
memorizza i dati dei vari feed RSS, e BOOK_FEED_ITEM_DOMAIN memorizza i dati relativi
alle voci trovate in ogni feed RSS.
CREAZIONE DI UN DOMINIO – create_domain.php
Il codice che segue crea tutti i domini SDB.
#!/usr/bin/php
<?php
error_reporting(E_ALL);
require_once('sdk.class.php');
require_once('include/book.inc.php');
// Create the SimpleDB access object
$sdb = new AmazonSDB();
foreach (array(BOOK_FILE_DOMAIN,
BOOK_FEED_DOMAIN,
BOOK_FEED_ITEM_DOMAIN) as $domain)
{
// Create the SimpleDB domains
$res = $sdb->create_domain($domain);
// Check result
if (!$res->isOK())
{
exit("L'operazione di creazione è fallita per il dominio ${domain}\n");
}
print("Il dominio ${domain} è stato creato con successo. .\n");
}
exit(0);
?>
Dal codice sopra riportato possiamo evincere alcune cose:

è creato un nuovo oggetto AmazonSDB con l'operazione $sdb = newAmazonSDB;
19
Gestione di Basi di Dati in ambienti di Cloud Computing


viene effettuata l'iterazione dell'array che contiene i nomi dei domini;
è creato un dominio con l'opzione create_domain che restituisce un risultato di corretto
funzionamento. Nel caso in cui il dominio risulti già esistente, non viene eseguita alcuna
operazione.
MEMORIZZAZIONE DEI DATI – insert_items.php
Ora vediamo un esempio di codice per memorizzare alcuni dati in un dominio mediante il metodo
put_attributes il quale permette di creare nuove voci oppure di aggiungere nuovi attributi a voci
esistenti.
#!/usr/bin/php
<?php
error_reporting(E_ALL);
require_once('sdk.class.php');
require_once('include/book.inc.php');
// Create the SimpleDB access object
$sdb = new AmazonSDB();
// Insert an entry for every PHP file in the current directory
$dir = opendir(".");
while (($file = readdir($dir)) !== false)
{
if (preg_match("/^[a-zA-Z0-9_-]*\.php$/", $file))
{
$data = file_get_contents($file);
$hash = md5($data);
$size = filesize($file);
$attrs = array('Name' => $file,
'Hash' => $hash,
'Size' => sprintf("%08s", $size));
$res = $sdb->put_attributes(BOOK_FILE_DOMAIN, $file, $attrs,
if ($res->isOK())
{
print("Inserted item $file\n");
}
else
{
$error = $res->body->Errors->Error->Message;
print("Could not insert item: ${error}\n");
}
true);
}
}
closedir($dir);
exit(0);
?>
Il programma crea una voce per ogni file della directory corrente il cui nome coincide con
l'espressione regolare /^[a-zA-Zo-9_-]*\.php$/, ossia con la sintassi dei nomi di file PHP. È
utilizzato il nome del file per definire il nome della voce e sono creati tre attributi: Name (nome del
file), Hash (hash MD5 del contenuto del file) e Size (dimensione, in byte, del file).
I comandi opendir e readdir permettono di accedere all'elenco di file della directory corrente
("."). Vediamo che ogni nome del file è letto tenendo conto dell'espressione regolare; se il nome
del file è conforme con l'espressione regolare, il programma legge il contenuto del file utilizzando
file_get_contents. Di seguito viene calcolato il valore di hash MD5 utilizzando la funzione
md5. Queste informazioni permettono di impostare l'array $attrs con coppie di nome-valori di
attributi.
20
Gestione di Basi di Dati in ambienti di Cloud Computing
Con il metodo put_attributes sono memorizzate nel dominio di SDB
(BOOK_FILE_DOMAIN) le informazioni. Il parametro finale (true) nella chiamata della funzione
segnala che i valori esistenti di un attributo devono essere rimossi e sostituiti con nuovi valori. Se,
viceversa, il parametro è definito con false significa che i nuovi valori vanno ad aggiungersi a
quelli esistenti in modo da ottenere attributi con più valori.
ESEGUIRE UNA QUERY – query_domain.php
#!/usr/bin/php
<?php
error_reporting(E_ALL);
require_once('sdk.class.php');
require_once('include/book.inc.php');
// Set the query
$query = "select * from " .
BOOK_FILE_DOMAIN .
" where Name like '%items%'";
// Create the SimpleDB access object
$sdb = new AmazonSDB();
// Query the SimpleDB domain
$res = $sdb->select($query);
// Check result
if (!$res->isOK())
{
exit("Select operation failed\n");
}
// Display results
foreach ($res->body->SelectResult->Item as $item)
{
foreach ($item->Attribute as $attribute)
{
print($attribute->Name . ": " . $attribute->Value . ", ");
}
print("\n");
}
exit(0);
?>
Il codice sopra riportato permette di creare una semplice query che restituisca tutte le voci che
hanno un attributo Name che contiene la stringa "items". In seguito viene eseguito un ciclo che
considera tutte le voci restituite dalla query e visualizza in output i rispettivi attributi con i loro
valori.
È utile osservare che il comando Select restituisce, per ogni chiamata, 100 voci oppure 1 MB a
seconda di quale delle due si raggiunge prima. Si può utilizzare l‟opzione limit per indicare la
restituzione di un numero maggiore di voci – fino ad un massimo di 2500 – ma, comunque, entro
1MB.
CANCELLARE ATTRIBUTI - delete_attrs.php
#!/usr/bin/php
<?php
error_reporting(E_ALL);
require_once('sdk.class.php');
require_once('include/book.inc.php');
21
Gestione di Basi di Dati in ambienti di Cloud Computing
// Create the SimpleDB access object
$sdb = new AmazonSDB();
// Set list of attributes to delete
$attrs = array('ModTime', 'Flavor');
// Query for each file
$res1 = $sdb->select("select Name from " . BOOK_FILE_DOMAIN);
if ($res1->isOK())
{
foreach ($res1->body->SelectResult->Item as $item)
{
$itemName = (string)$item->Name;
$res2 = $sdb->delete_attributes(BOOK_FILE_DOMAIN, $itemName, $attrs);
if ($res2->isOK())
{
print("Updated item $itemName\n");
}
else
{
$error = $res2->body->Errors->Error->Message;
print("Could not update item: ${error}\n");
}
}
}
else
{
$error = $res1->body->Errors->Error->Message;
exit("Could not run query: ${error}\n");
}
exit(0);
?>
Il programma delete_attrs cancella in ogni voce gli attributi ModTime e Flavor tramite
una chiamata del metodo delete_attributes.
2.4 Amazon Relation Database Service (RDS)
Quando si vuole trasferire nel Cloud Computing un‟applicazione MySQL già esistente, oppure
quando è necessario eseguire query complesse o combinare i dati memorizzati in due o più tabelle
si utilizzerà il servizio Relation Database Service di Amazon (RDS). Esso permette, infatti, di
sfruttare i vantaggi delle funzioni MySQL evitando nel contempo i problemi derivanti da
operazioni complesse e dispendiose in termini di tempo.
Il servizio RDS semplifica l‟impostazione, il funzionamento e la scalabilità di un database
relazionale da impiegare in un sistema Cloud Computing. È possibile utilizzare MySQL senza
perdere tempo a predisporre un server, installare un sistema operativo, installare MySQL , studiare
e installare eventuali patch del sistema operativo o del database, aggiornare server e data storage
quando cambiano le esigenze dell‟applicazione, configurare situazioni di failover, programmare
operazioni di backup e gestire i file di backup. Il servizio RDS è in grado di svolgere molti di questi
compiti in modo automatico e di gestire le altre attività tramite chiamate di servizi web. Ad
esempio, si può creare un‟istanza RDS DB con una sola chiamata del servizio web: l‟istanza viene
avviata e messa in esecuzione entro pochi minuti.
22
Gestione di Basi di Dati in ambienti di Cloud Computing
Dunque il servizio RDS può effettivamente modificare l‟idea stessa di database relazionale, in
quanto è possibile creare, utilizzare, terminare e ripristinare istanze DB in base alle proprie
esigenze.
Si prenda il caso in cui si voglia trasferire un‟applicazione nel Cloud Computing e che ogni
installazione dell‟applicazione richieda l‟impiego di un database MySQL privato. È possibile
automatizzare l‟intera installazione e la procedura di recupero dei dati. Ogni volta che un nuovo
cliente effettua la registrazione nel servizio il codice chiama l‟API CreateDBInstance di RDS
per creare una nuova istanza DB.
Si supponga, invece, di avere un‟applicazione multi-tier e di voler impostare un ambiente di test
completamente automatizzato. Anche in questo caso si possono utilizzare le API di Amazon RDS
(oppure gli strumenti da riga di comando) per creare, utilizzare e terminare istanze DB come
elementi della procedura di test.
2.4.1 Il servizio RDS
La maggior parte delle operazioni che hanno a che fare con il servizio Amazon RDS ruota attorno
al concetto di istanza DB. È possibile creare un‟istanza DB come Single-AZ o Multi-AZ.
La soluzione Multi-AZ Deployment aumenta la disponibilità e la persistenza di un‟istanza DB
replicando in modo sincrono gli aggiornamenti del database tra diverse availability zone e
introducendo un meccanismo automatico da failover a standby in caso di problemi di
funzionamento. Si tratta di un ottimo esempio della capacità della soluzione AWS di trasformare
un compito molto complesso di costruzione del sistema (impostare un database MySQL con un
meccanismo automatico e diretto di failover e con ripristino automatizzato) in un‟opzione di menu
semplice e chiara.
La creazione di un‟istanza DB richiede l‟indicazione della sua classe. Al momento esistono cinque
classi di istanze DB tutte a 64 bit : small, large, extra large, high memory double extra large, high
memory quadruplue extra large.
Nome
Virtual core CPU
Velocità del core CPU
RAM
Costo orario
Small
1
1
1,7 GB
$0,11
Large
2
2
7,5 GB
$0,44
Extra large
4
2
15 GB
$0,88
High memory double extra large
4
3,25
34 GB
$1,55
High memory quadruplue extra large
8
3,25
68 GB
$3,10
-Tabella 1- Classi delle istanze DB di Amazon RDS
La classe di un‟istanza DB può essere modificata in pochi minuti, evitando così di dedicare troppo
tempo alla scelta di quale soluzione adottare. I costi riportati nella Tabella 1 riguardano
l‟impostazione della modalità Single-AZ di un‟istanza DB, quindi nel caso di Multi-AZ i costi
raddoppiano.
23
Gestione di Basi di Dati in ambienti di Cloud Computing
Le istanze DB non prevedono una quantità fissa di data storage, ma bisogna indicare
un‟allocazione iniziale di data storage da 5 GB a 1024 GB in fase di creazione dell‟istanza DB (si
può aggiungere ulteriore spazio in base alle proprie esigenze e all‟aumento dei dati di
memorizzazione, fino a raggiungere il limite di 1024 GB). La quantità di spazio indicata
inizialmente corrisponde alla quantità di allocated storage relativa all‟istanza DB, tale quantità può
essere aumentata in tempo reale.
La creazione di un‟istanza DB richiede l‟indicazione di un identificatore, costituito da una stringa
che deve iniziare con una lettera minuscola e può contenere fino a 63 caratteri minuscoli, cifre
numeriche e trattini. L‟identificatore non può terminare con un trattino e non può includere più
trattini consecutivi, inoltre deve essere univoco nell‟ambito di ogni account.
Ogni istanza DB include la copia di un determinato motore di database. Al momento l‟unico
motore supportato è la versione 5.1 di MySQL. L‟identificatore di questo motore è MySQL5.1.
Un‟istanza DB si trova sempre in uno stato determinato. Gli stati principali sono: creating,
backing-up, available, modifying e deleting. Nella maggior parte dei casi un‟istanza DB si trova
nello stato available, mentre gli altri stati sono temporanei.
Il programma dell‟applicazione e gli strumenti del database devono essere in grado di stabilire una
connessione di rete con le istanze DB. Per eseguire questa operazione bisogna associare un gruppo
di sicurezza DB all‟istanza DB e autorizzare l‟ingresso all‟istanza DB da parte di un intervallo di
indirizzi di rete. Dopo tali impostazioni si configura il programma e gli strumenti affinché
utilizzino l‟elemento Endpoint dell‟istanza DB per stabilire una connessione.
Il servizio Amazon RDS offre la possibilità di controllare i parametri che determinano gli aspetti di
basso livello delle prestazioni e del comportamento del motore di database utilizzando gruppi di
parametri DB. Ogni gruppo contiene un elenco di variabili di configurazione, specifiche per il
motore di database. Per quanto riguarda il database MySQL, il gruppo di parametri DB include, per
esempio, i valori innodb_additional_mem_pool_size e innodb_buffer_pool_size. Alcuni valori
sono di tipo assoluto, altri sono impostati applicando una formula {DBInstanceClassMemory*3/4}.
Ciò consente al gruppo di parametri di essere applicato a tutte le classi di istanze DB, dato che il
valore può essere impostato in base alle caratteristiche della classe considerata. Se un gruppo non
definisce il valore di un parametro si utilizza il valore di default previsto dal servizio RDS o dal
motore di database. Ogni account AWS include un gruppo predefinito di parametri che si possono
impiegare fino a quando non c‟è il bisogno di modificarne uno in particolare. Nel caso di modifica
si può scegliere se applicare l‟aggiornamento dei parametri immediatamente oppure in
corrispondenza del prossimo riavvio dell‟istanza DB o delle istanze associate al gruppo. Alcuni
parametri sono dinamici e possono essere applicati direttamente, altri sono statici e richiedono il
riavvio dell‟istanza DB.
Nella creazione di una nuova istanza DB bisogna indicare un nome utente master e una password
master. Il servizio Amazon crea un account nel motore di database utilizzando i valori forniti, che
devono essere ripresi successivamente per creare una connessione con il database. L‟utente master
dispone di privilegi MySQL : SELECT, INSERT, UPDATE, DELETE, CREATE, DROP,
RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASE, CREATE
TEMPORARY TABLES, LOCK TABLES, EXCECUTE, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT e TRIGGER. Inoltre dispone
dell‟operazione GRANT, grazie alla quale può garantire i privilegi di accesso a utenti che sono stati
creati dopo aver impostato e messo in funzione l‟istanza DB. Infine, quando si crea una nuova
24
Gestione di Basi di Dati in ambienti di Cloud Computing
istanza DB si può anche indicare il nome di un database. Questo nome permette al servizio
Amazon RDS di creare un database vuoto con il nome dell‟istanza DB.
Ogni istanza DB è associata ad una finestra di manutenzione, che permette di verificare
l‟occorrenza di modifiche dell‟istanza DB, ad esempio il passaggio ad una diversa classe di istanze
DB, e la presenza di patch del software. Se in una particolare settimana si stabilisce un evento di
manutenzione, l‟intervento in questione si attiva e viene completato nel momento che è stato
indicato all‟interno delle quattro ore di funzionamento della finestra di manutenzione. Amazon
RDS applica le patch e gli aggiornamenti dei parametri nel corso delle quattro ore settimanali di
manutenzione. L‟impostazione predefinita prevede che la finestra di manutenzione si attivi in un
intervallo di tempo “di quiete” specifico per ogni regione AWS. Si può impostare la finestra in
modo da attivarla per una determinata applicazione in un istante qualsiasi della settimana. Gli unici
interventi di manutenzione per i quali Amazon RDS deve disattivare un‟istanza DB sono le
operazioni di scalabilità di calcolo e le patch software, che vengono programmate solo se hanno a
che fare con la sicurezza e la solidità del sistema. Patch di questo tipo sono rilasciate abbastanza di
rado, in genere a distanza di mesi, e richiedono raramente un tempo lungo di attivazione nella
finestra di manutenzione.
Le API di Amazon RDS permettono di effettuare procedure semplici e prive di rischi per il backup
di istanze DB. Il servizio RDS attiva un backup automatico quotidiano in coincidenza con
l‟attivazione della finestra di backup relativa all‟istanza DB. I file di backup sono conservati per il
numero di giorni indicato tra i parametri di backup dell‟istanza. Quando è ritenuto necessario è
possibile creare anche uno snapshot DB. Esso rappresenta lo stato del sistema in un certo istante di
tempo. Lo snapshot rimarrà a disposizione finché non si deciderà di cancellarlo. Inoltre, ad ogni
snapshot deve essere assegnato un nome univoco. Amazon RDS memorizza anche i log delle
modifiche di ogni database. I log offrono la possibilità di ripristinare il database alle condizioni di
un momento nel tempo, che coincidono con un momento successivo al periodo di backup e
precedente all‟ultimo ripristino dell‟istanza DB. Il tempo di ripristino è in genere inferiore ai
cinque minuti.
Quando l‟applicazione di produzione inizia a manifestare comportamenti inattesi e si vuole
esaminare il funzionamento del database per capire cosa succede, si può realizzare uno snapshot,
ripristinarlo in una nuova istanza DB e studiarlo nel dettaglio senza intervenire sul sistema di
produzione. In modo analogo quando si vuole una nuova versione del codice si realizza prima uno
snapshot del database, in modo da ritornare alla situazione di partenza se è stato commesso un
errore irreparabile.
Amazon RDS tiene traccia di eventi relativi ad origini diverse, ovvero ad istanze DB, snapshot DB,
gruppi di sicurezza DB e gruppi di parametri DB. Ogni evento contiene data e ora, tipo di origine,
nome dell‟origine e un messaggio.
25
Bibliografia
[1]
http://www.moebiusonline.eu/fuorionda/cloud_computing.shtml
[2]
Filippo Moriggia 2010 “Il server tra le nuvole”
[3]
http://denaro.it/blog/2011/09/22/cloud-il-futuro-del-web-e-sulle-nuvole/
Fabio Cecaro 2011 “Cloud, il futuro del web è sulle nuvole”
[4]
http://www.garanteprivacy.it/ - Garante per la privacy Cloud computing: indicazioni per l‟uso consapevole dei servizi
[5]
http://www.youimpresa.it/archive/201105
[6]
http://it.wikipedia.org/wiki/Cloud_computing
[7]
H. Hacigumus, B. Iyer, S. Mehrotra “Providing Database as a Service”
[8]
http://it.wikipedia.org/wiki/DaaS
[9]
http://www.oracle.com/it/ciocentral/new8226executiveviewpointqa-424487-ita.html
[10] Jeff Barr 2010 “Cloud Computing per applicazioni web”
26