aws simple db
DESCRIPTION
Vantaggi/Svantaggi, corretto uso ed esempiTRANSCRIPT
AWS Simple DB:Vantaggi/Svantaggi,
corretto uso ed esempi
Gennaro VarrialeXiWeb.it
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
Modello Dati
Domini : (Fogli) simile alle tabelle Elementi: (Righe) rappresentano oggettiAttributi: (Colonne) categorie di dati Valori: (Celle) dati (anche valori multipli)
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
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
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
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)
Amazon ScratchPad
Create Domain
Put Attributes
Get Attributes
Select
Xml di rispostaXml con i dati di risposta
NextToken
Dati
Token
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'
Librerie di programmazionePHPJavaObject C (Iphone)C#PerlRuby
PHP libreria sdb.php http://sourceforge.net/projects/php-sdb/
<?php require_once('sdb.php');
$simpleDB= new SimpleDB($accessKey, $secretKey);
?>
Gestione DominiCreare un dominio :
$simpleDB ->createDomain(‘collezione');
Lista dei domini $listaDomini= $simpleDB >listDomains() ;
Eliminazione di un dominio $simpleDB->deleteDomain($nomeDominio) ;
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
Aggiornamento<?php $dati['autore']['value']='C.Zafòn';
$dati[‘autore’][‘replace’]=true; //aggiorna
$simpleDB- >putAttributes (‘collezione‘, 'item_2', $dati);
Cancellazione<?php $simpleDB- >deleteAttributes(‘collezione',
‘item_02’);
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’ ) ) )
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);