Gestione di Basi di Dati in ambienti di Cloud Computing



Documenti analoghi
C Cloud computing Cloud storage. Prof. Maurizio Naldi

Introduzione al Cloud Computing

IT Cloud Service. Semplice - accessibile - sicuro - economico

Gartner Group definisce il Cloud

Creare una Rete Locale Lezione n. 1

Indice generale. Gli autori...xiii. Prefazione...xv. Benvenuti nel cloud computing...1

Cloud Computing....una scelta migliore. ICT Information & Communication Technology

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

LE RETI: STRUMENTO AZIENDALE

SICUREZZA INFORMATICA PER L UNIONE DI COMUNI LOMBARDA ASTA DEL SERIO

Identità e autenticazione

Virtualization. Strutturare per semplificare la gestione. ICT Information & Communication Technology

Introduzione alla Virtualizzazione

1) GESTIONE DELLE POSTAZIONI REMOTE

Che cos'è il cloud computing? e cosa può fare per la mia azienda

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata.

Le fattispecie di riuso

Sistemi centralizzati e distribuiti

Apps4Law: Riflessioni sul Cloud Computing. Roma 21 marzo 2013 Sala Seminari UNIRIZ. Alessandro Graziani, Avvocato

Database. Si ringrazia Marco Bertini per le slides

Allegato. Servizio Hosting Virtual DataCenter di Regione Lombardia. per l ENTE UCL Asta del Serio

Privacy Policy di

Online Help StruxureWare Data Center Expert

IL CLOUD COMPUTING DALLE PMI ALLE ENTERPRISE. Salvatore Giannetto Presidente Salvix S.r.l

Comprendere il Cloud Computing. Maggio, 2013

Capire i benefici di una rete informatica nella propria attività. I componenti di una rete. I dispositivi utilizzati.

Attività federale di marketing

In questa pagina si descrivono le modalità di gestione del sito in riferimento al trattamento dei dati personali degli utenti che lo consultano.

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Replica con TeraStation 3000/4000/5000/7000. Buffalo Technology

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

w w w. n e w s o f t s r l. i t Soluzione Proposta

Il cloud per la tua azienda.

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Procedura per la configurazione in rete di DMS.

Cloud Computing Stato dell arte, Opportunità e rischi

SIMULAZIONE PROVA SCRITTA ESAME DI STATO. PER LA DISCIPLINA di SISTEMI

lem logic enterprise manager

Finalità della soluzione Schema generale e modalità d integrazione Gestione centralizzata in TeamPortal... 6

Cloud Computing: alcuni punti fermi per non smarrirsi fra le nuvole

Turismo Virtual Turismo Virtual Turismo Virtual

Modifiche principali al programma Adobe Open Options NOVITÀ! DISPONIBILITÀ ESCLUSIVA DEL SOFTWARE ADOBE ACROBAT ELEMENTS

Progetto Virtualizzazione

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Il servizio di registrazione contabile. che consente di azzerare i tempi di registrazione delle fatture e dei relativi movimenti contabili

Network Monitoring. Introduzione all attività di Network Monitoring introduzione a Nagios come motore ideale

Grazie a Ipanema, Coopservice assicura le prestazioni delle applicazioni SAP & HR, aumentando la produttivita del 12%

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Andreani Tributi Srl. Titolare del Trattamento dei Dati. P.Iva Sede: Via Cluentina 33/D Macerata

Software per Helpdesk

PROGRAMMAZIONE MODULARE DI INFORMATICA CLASSE QUINTA - INDIRIZZO MERCURIO SEZIONE TECNICO

LA MIGRAZIONE IN SEMPLICI STEP. Il moving di una macchina Linux sul Cloud Server Seeweb

SOLUZIONE Web.Orders online

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

MANUALE DELLA QUALITÀ Pag. 1 di 6

Informativa Privacy Privacy Policy di

SERVER E VIRTUALIZZAZIONE. Windows Server Guida alle edizioni

TIPOLOGIE DI DATI RACCOLTI

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Archiviazione ottica documentale

Allegato 3 Sistema per l interscambio dei dati (SID)

Politica del WHOIS relativa al nome a dominio.eu

Base di dati e sistemi informativi

InfiXor. il programma facile e versatile per preventivi veloci e completi. il software di preventivazione per produttori e rivenditori di infissi

Organizzazione degli archivi

Approccio stratificato

Collegamento remoto vending machines by do-dots

Continuità operativa e disaster recovery nella pubblica amministrazione

Sistemi informativi secondo prospettive combinate

Retail L organizzazione innovativa del tuo punto vendita

INFORMATIVA SUL DIRITTO ALLA PRIVACY PER LA CONSULTAZIONE DEL SITO WEB

EasyMACHINERY ERPGestionaleCRM. partner

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

1. BASI DI DATI: GENERALITÀ

Corso di Amministrazione di Reti A.A. 2002/2003

Progettaz. e sviluppo Data Base

Soluzione dell esercizio del 2 Febbraio 2004

Sistemi Informativi e Sistemi ERP

Una rassegna dei sistemi operativi per il Cloud Computing

1- OBIETTIVI DEL DOCUMENTO 2- INTRODUZIONE

Docebo: la tua piattaforma E-Learning Google Ready.

Domande e risposte su Avira ProActiv Community

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

Il modello di ottimizzazione SAM

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Il Cloud Computing Privato per il settore bancario e assicurativo

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

SOLUZIONI INFORMATICHE PER LO STUDIO LEGALE

Cloud Service Broker

Privacy & Data protection. Diritto nuove tecnologie. Codice degli appalti. Decreto 231/2001

Dal software al CloudWare

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

INFORMATIVA SULLA PRIVACY. Informativa sul trattamento dei dati personali ai sensi dell art. 13 D.Lgs. 30 giugno 2003, n.196

esales Forza Ordini per Abbigliamento

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Business Consumer Solution. Il compagno ideale

In estrema sintesi, NEMO VirtualFarm vuol dire:

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

Transcript:

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 Breve approccio storico 6 1.2 Virtualizzazione, Multitenancy e Grid Computing 6 1.3 Architetture e modelli di servizio per il Cloud Computing 7 1.4 Database as a Service (DaaS) 9 1.4.1 DaaS nella gestione dei dati geospaziali 11 1.5 Scenari per il Cloud Computing 11 1.6 Vantaggi e svantaggi del Cloud Computing 13 Capitolo 2. Amazon SimpleDB e Amazon Relation Database Service (RDS) 15 2.1 Storia di Amazon 15 2.2 Infrastruttura, protocolli e terminologia di AWS 16 2.3 SimpleDB 17 2.3.1 Concetti base del servizio SimpleDB 18 2.3.2 Programmazione del servizio SimpleDB 19 2.4 Amazon Relation Database Service (RDS) 22 2.4.1 Il servizio RDS 23 Bibliografia 26 III

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, true); if ($res->isok()) print("inserted item $file\n"); else $error = $res->body->errors->error->message; print("could not insert item: $error\n"); 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