SlideShare uma empresa Scribd logo
1 de 23
AWS Simple DB: Vantaggi/Svantaggi, corretto uso ed esempi Gennaro Varriale XiWeb.it
Introduzione AWS 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 oggetti Attributi: (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
Vantaggi Facile 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
Svantaggi Problemi 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 risposta Xml con i dati di risposta
NextToken Dati Token
Esempio di Query select * fromcollezionewherecategoria= ‘film’ select* fromcollezionewherepagine> ‘0120‘ andcategoria= ‘libro’ select * fromcollezionewhereautorelike ‘%Zafòn‘ select* fromcollezionewhere year between '1998' and'2004‘ select* fromcollezionewherecategoriais not null  orderbycategoria selectcount(*) fromcollezionewherecategoria= ‘libro'
Librerie di programmazione PHP Java Object C (Iphone) C# Perl Ruby
PHP  libreria sdb.php          http://sourceforge.net/projects/php-sdb/ <?php     require_once('sdb.php');$simpleDB= newSimpleDB($accessKey, $secretKey); ?>
Gestione Domini Creare 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);

Mais conteúdo relacionado

Destaque (7)

Brighter Marketing
Brighter MarketingBrighter Marketing
Brighter Marketing
 
Project management
Project managementProject management
Project management
 
Ek Blogging Case
Ek Blogging CaseEk Blogging Case
Ek Blogging Case
 
Presentation skills
Presentation skillsPresentation skills
Presentation skills
 
Unit 1 (lesson 2)
Unit 1 (lesson 2)Unit 1 (lesson 2)
Unit 1 (lesson 2)
 
Unit 5a
Unit 5aUnit 5a
Unit 5a
 
Unit 5a
Unit 5aUnit 5a
Unit 5a
 

Aws Simple DB

  • 1. AWS Simple DB: Vantaggi/Svantaggi, corretto uso ed esempi Gennaro Varriale XiWeb.it
  • 2. Introduzione AWS 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
  • 3. Modello Dati Domini : (Fogli) simile alle tabelle Elementi: (Righe) rappresentano oggetti Attributi: (Colonne) categorie di dati Valori: (Celle) dati (anche valori multipli)
  • 4. 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
  • 5. Vantaggi Facile 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
  • 6. Svantaggi Problemi 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
  • 7. 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)
  • 13. Xml di risposta Xml con i dati di risposta
  • 15. Esempio di Query select * fromcollezionewherecategoria= ‘film’ select* fromcollezionewherepagine> ‘0120‘ andcategoria= ‘libro’ select * fromcollezionewhereautorelike ‘%Zafòn‘ select* fromcollezionewhere year between '1998' and'2004‘ select* fromcollezionewherecategoriais not null orderbycategoria selectcount(*) fromcollezionewherecategoria= ‘libro'
  • 16. Librerie di programmazione PHP Java Object C (Iphone) C# Perl Ruby
  • 17. PHP libreria sdb.php http://sourceforge.net/projects/php-sdb/ <?php require_once('sdb.php');$simpleDB= newSimpleDB($accessKey, $secretKey); ?>
  • 18. Gestione Domini Creare un dominio : $simpleDB ->createDomain(‘collezione'); Lista dei domini $listaDomini= $simpleDB >listDomains() ; Eliminazione di un dominio $simpleDB->deleteDomain($nomeDominio) ;
  • 19. 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
  • 20. Aggiornamento <?php $dati['autore']['value']='C.Zafòn'; $dati[‘autore’][‘replace’]=true; //aggiorna $simpleDB- >putAttributes (‘collezione‘, 'item_2', $dati);
  • 21. Cancellazione <?php $simpleDB- >deleteAttributes(‘collezione', ‘item_02’);
  • 22. 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’ ) ) )
  • 23. 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);