Aws Simple DB

23
AWS Simple DB: Vantaggi/Svantaggi, corretto uso ed esempi Gennaro Varriale XiWeb.it

description

Vantaggi/Svantaggi, corretto uso ed esempi

Transcript of Aws Simple DB

Page 1: Aws Simple DB

AWS Simple DB:Vantaggi/Svantaggi,

corretto uso ed esempi

Gennaro VarrialeXiWeb.it

Page 2: Aws Simple DB

IntroduzioneAWS SimpleDB è un servizio web per la gestione di una

base dati non relazionale. (nessuno schema di Database, nessuna Join tra tabelle )

I dati sono memorizzati come oggetti con chiave/valore.

Gli oggetti sono partizionati in domini.

Le principali operazioni sono Put, Get, Delete e Query

Richieste tramite REST e risposte in XML

Page 3: Aws Simple DB

Modello Dati

Domini : (Fogli) simile alle tabelle Elementi: (Righe) rappresentano oggettiAttributi: (Colonne) categorie di dati Valori: (Celle) dati (anche valori multipli)

Page 4: Aws Simple DB

Esempio

Elementi diversi (Film, Libri, CD)I valori possono essere multipli (Attori)Gli attributi non presenti non sono

memorizzati

item_01 : titolo =>Pulp Fiction, attore=> J.Travolta, attore => S.Jackson , ...Item_o2 : titolo=>Marina, categoria =>libro, autore=>C.Zafòn Item_03 : titolo =>Thriller, categoria =>cd

Page 5: Aws Simple DB

VantaggiFacile da utilizzare (set di API)

Flessibile : Nessuno schema per il database.

Scalabile : non ci sono limiti (banda e dati) e performance costante

Affidabile : i dati sono memorizzati, replicati e indicizzati.

Integrazione con sistemi scalabili : Amazon EC2 e Amazon S3

Economico: Si paga solo per quello che si usa

Page 6: Aws Simple DB

SvantaggiProblemi di Latenza - Aggiornamento dei dati attraverso i vari server - Richieste : max 250 risultati e token sequenziali

Maggior lavoro di programmazione - tecniche di caching dei dati ed elaborazione

Limiti - max 256 attributi per elemento - max 1024 byte per valori

Page 7: Aws Simple DB

Corretto uso I dati sono stringhe ( codifica UTF-8) con ordinamento lessicografico

- zero padding 10 “è minore di” 2 => 0010 “è maggiore di” 0002 (padding 4) - offset per numeri negativi -700, -400, 100 => 0300 , 0600, 1100 (offset

1000) - formatare i campi data YYYY-MM-DDThh:mm:ss (formato ISO 8601)

Gli elementi chiave devono essere univoci nel dominio.

Es. Id_utente, codice fiscale, (Timestamp)_(random number)

Page 8: Aws Simple DB

Amazon ScratchPad

Page 9: Aws Simple DB

Create Domain

Page 10: Aws Simple DB

Put Attributes

Page 11: Aws Simple DB

Get Attributes

Page 12: Aws Simple DB

Select

Page 13: Aws Simple DB

Xml di rispostaXml con i dati di risposta

Page 14: Aws Simple DB

NextToken

Dati

Token

Page 15: Aws Simple DB

Esempio di Query select * from collezione where categoria= ‘film’

select * from collezione where pagine> ‘0120‘ and categoria= ‘libro’

select * from collezione where autore like ‘%Zafòn‘

select * from collezione where year between '1998' and '2004‘

select * from collezione where categoria is not null order by categoria

select count(*) from collezione where categoria= ‘libro'

Page 16: Aws Simple DB

Librerie di programmazionePHPJavaObject C (Iphone)C#PerlRuby

Page 17: Aws Simple DB

PHP libreria sdb.php http://sourceforge.net/projects/php-sdb/

<?php require_once('sdb.php');

$simpleDB= new SimpleDB($accessKey, $secretKey);

?>

Page 18: Aws Simple DB

Gestione DominiCreare un dominio :

$simpleDB ->createDomain(‘collezione');

Lista dei domini $listaDomini= $simpleDB >listDomains() ;

Eliminazione di un dominio $simpleDB->deleteDomain($nomeDominio) ;

Page 19: Aws Simple DB

Inserimento dati<?php $dati['categoria']['value']=‘film'; //$dati['categoria'][replace ']=false;

//inserimento $dati['titolo']['value']=‘Pulp Fiction'; $dati['attore']['value'][]=‘J.Travolta'; $dati['attore']['value'][]=‘S.Jackson';

$simpleDB->putAttributes(‘collezione‘, 'item_01', $dati );

?>

Valori Multipli

Page 20: Aws Simple DB

Aggiornamento<?php $dati['autore']['value']='C.Zafòn';

$dati[‘autore’][‘replace’]=true; //aggiorna

$simpleDB- >putAttributes (‘collezione‘, 'item_2', $dati);

Page 21: Aws Simple DB

Cancellazione<?php $simpleDB- >deleteAttributes(‘collezione',

‘item_02’);

Page 22: Aws Simple DB

Prelievo Dati$item= $simpleDB->getAttributes(‘collezione‘, 'item_01‘);echo $item[‘Attributes’][‘titolo’]; print_r( $item );

Pulp Fiction

Array ( [Name] => ‘item_01’, [Attributes] => Array ( [titolo] => ‘Pulp Fiction’, [categoria] => ‘Film’, [attore] => array( 0 =>‘J.Travolta’, 1 => ‘S.Jackson’ ) ) )

Page 23: Aws Simple DB

Select$token =null;do{ $query = 'select * from collezione'; $primoSet= $db->select(‘collezione', $query ,

$token) ); // max 250 elementi + token foreach ($primoSet as $item){ // chiave in $item[Name‘] // valori in $item[‘Attributes’] } } while ($token!=null);