Aws Simple DB

908 views

Published on

Vantaggi/Svantaggi, corretto uso ed esempi

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
908
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Aws Simple DB

  1. 1. AWS Simple DB:<br />Vantaggi/Svantaggi, corretto uso ed esempi<br />Gennaro Varriale<br />XiWeb.it<br />
  2. 2. Introduzione<br />AWS SimpleDB è un servizio web per la gestione di una base dati non relazionale.<br /> (nessuno schema di Database, nessuna Join tra tabelle )<br />I dati sono memorizzati come oggetti con chiave/valore.<br />Gli oggetti sono partizionati in domini. <br />Le principali operazioni sono Put, Get, Delete e Query<br />Richieste tramite REST e risposte in XML<br />
  3. 3. Modello Dati<br />Domini : (Fogli) simile alle tabelle <br />Elementi: (Righe) rappresentano oggetti<br />Attributi: (Colonne) categorie di dati <br />Valori: (Celle) dati (anche valori multipli)<br />
  4. 4. Esempio<br />Elementi diversi (Film, Libri, CD)<br />I valori possono essere multipli (Attori)<br />Gli attributi non presenti non sono memorizzati<br />item_01 : titolo =>Pulp Fiction, attore=> J.Travolta, attore => S.Jackson , ...<br />Item_o2 : titolo=>Marina, categoria =>libro, autore=>C.Zafòn <br />Item_03 : titolo =>Thriller, categoria =>cd<br />
  5. 5. Vantaggi<br />Facile da utilizzare (set di API)<br />Flessibile : Nessuno schema per il database.<br />Scalabile : non ci sono limiti (banda e dati) e performance costante<br />Affidabile : i dati sono memorizzati, replicati e indicizzati.<br />Integrazione con sistemi scalabili : Amazon EC2 e Amazon S3 <br />Economico: Si paga solo per quello che si usa<br />
  6. 6. Svantaggi<br />Problemi di Latenza<br /> - Aggiornamento dei dati attraverso i vari server<br /> - Richieste : max 250 risultati e token sequenziali<br />Maggior lavoro di programmazione<br /> - tecniche di caching dei dati ed elaborazione<br />Limiti <br /> - max 256 attributi per elemento<br /> - max 1024 byte per valori<br />
  7. 7. Corretto uso<br />I dati sono stringhe ( codifica UTF-8) con ordinamento lessicografico<br /> - zero padding <br /> 10 “è minore di” 2 => 0010 “è maggiore di” 0002 (padding 4) <br /> - offset per numeri negativi <br /> -700, -400, 100 => 0300 , 0600, 1100 (offset 1000)<br /> - formatare i campi data <br />YYYY-MM-DDThh:mm:ss (formato ISO 8601)<br />Gli elementi chiave devono essere univoci nel dominio.<br /> Es. Id_utente, codice fiscale, (Timestamp)_(random number)<br />
  8. 8. Amazon ScratchPad<br />
  9. 9. Create Domain<br />
  10. 10. Put Attributes<br />
  11. 11. Get Attributes<br />
  12. 12. Select<br />
  13. 13. Xml di risposta<br />Xml con i dati di risposta<br />
  14. 14. NextToken<br />Dati<br />Token<br />
  15. 15. Esempio di Query<br />select * fromcollezionewherecategoria= ‘film’<br />select* fromcollezionewherepagine> ‘0120‘ andcategoria= ‘libro’<br />select * fromcollezionewhereautorelike ‘%Zafòn‘<br />select* fromcollezionewhere year between '1998' and'2004‘<br />select* fromcollezionewherecategoriais not null orderbycategoria<br />selectcount(*) fromcollezionewherecategoria= ‘libro'<br />
  16. 16. Librerie di programmazione<br />PHP<br />Java<br />Object C (Iphone)<br />C#<br />Perl<br />Ruby<br />
  17. 17. PHP<br /> libreria sdb.php<br /> http://sourceforge.net/projects/php-sdb/<br /><?php<br /> require_once('sdb.php');$simpleDB= newSimpleDB($accessKey, $secretKey);<br />?><br />
  18. 18. Gestione Domini<br />Creare un dominio : $simpleDB ->createDomain(‘collezione'); <br />Lista dei domini $listaDomini= $simpleDB >listDomains() ; <br />Eliminazione di un dominio $simpleDB->deleteDomain($nomeDominio) ; <br />
  19. 19. Inserimento dati<br /><?php<br /> $dati['categoria']['value']=‘film';<br /> //$dati['categoria'][replace ']=false; //inserimento<br /> $dati['titolo']['value']=‘Pulp Fiction';<br /> $dati['attore']['value'][]=‘J.Travolta';<br /> $dati['attore']['value'][]=‘S.Jackson';<br /> $simpleDB->putAttributes(‘collezione‘, 'item_01', $dati );<br />?> <br />Valori Multipli<br />
  20. 20. Aggiornamento<br /><?php<br /> $dati['autore']['value']='C.Zafòn'; $dati[‘autore’][‘replace’]=true; //aggiorna<br />$simpleDB- >putAttributes (‘collezione‘, 'item_2', $dati);<br />
  21. 21. Cancellazione<br /><?php<br /> $simpleDB- >deleteAttributes(‘collezione', ‘item_02’);<br />
  22. 22. Prelievo Dati<br />$item= $simpleDB->getAttributes(‘collezione‘, 'item_01‘);<br />echo $item[‘Attributes’][‘titolo’]; <br />print_r( $item ); <br />Pulp Fiction<br />Array ( [Name] => ‘item_01’,<br /> [Attributes] => Array ( <br /> [titolo] => ‘Pulp Fiction’,<br /> [categoria] => ‘Film’,<br /> [attore] => array( 0 =>‘J.Travolta’, <br /> 1 => ‘S.Jackson’<br /> ) <br /> )<br /> ) <br />
  23. 23. Select<br />$token =null;<br />do{<br /> $query = 'select * from collezione';<br /> $primoSet= $db->select(‘collezione', $query ,$token) );<br /> // max 250 elementi + token<br /> foreach ($primoSet as $item){<br />// chiave in $item[Name‘] <br />// valori in $item[‘Attributes’] <br /> } <br />} while ($token!=null); <br />

×