Amazon SimpleDB fornisce un'interfaccia di servizi Web semplice che consente di creare e conservare set di dati multipli, eseguire query sui propri dati in modo semplice e visualizzare i risultati delle ricerche. I tuoi dati vengono indicizzati automaticamente, rendendo la ricerca delle informazioni desiderate più rapida e semplice. Non è necessario predefinire uno schema o modificarne uno esistente se vengono aggiunti nuovi dati in un secondo momento. La scalabilità orizzontale (scale-out) si ottiene semplicemente aggiungendo altri domini, anziché creare nuovi server.

Cosa prevede Amazon SimpleDB:

  • Creazione di set di dati personalizzati
    • Scegli un'area geografica per i tuoi domini per ottimizzarne la latenza, ridurre al minimo i costi e soddisfare i requisiti normativi. Amazon SimpleDB è disponibile attualmente nelle seguenti regioni: Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon), Stati Uniti occidentali (California settentrionale), UE (Irlanda), Asia Pacifico (Singapore), Asia Pacifico (Tokyo), Asia Pacifico (Sydney), Sud America (San Paolo).
    • Utilizza CreateDomain, DeleteDomain, ListDomains, DomainMetadata per creare e gestire i domini di query
    • Utilizza Put, Batch Put e Delete per creare e gestire i set di dati all'interno del singolo dominio di query
  • Recupero dei dati
    • Utilizza GetAttributes per recuperare una specifica voce
    • Utilizza Select per interrogare i tuoi dati alla ricerca delle voci che corrispondono ai criteri specificati
  • Prezzi calcolati solo in base alle risorse utilizzate


Il modello dati utilizzato da Amazon SimpleDB semplifica l'archiviazione, la gestione e l'interrogazione dei dati strutturati dell'utente. Gli sviluppatori organizzano i loro set di dati in domini e possono formulare query su tutti i dati archiviati in un determinato dominio. I domini sono raccolte di voci corrispondenti, a loro volta, a coppie attributo-valore.

Immagina questi elementi negli stessi termini di una tabella di un tradizionale foglio di calcolo. Ad esempio, considera i dettagli del database di gestione del cliente raffigurato nella tabella sottostante e pensa a come sarebbero rappresentati in Amazon SimpleDB. La tabella intera corrisponderebbe al dominio denominato "cliente". I singoli clienti sarebbero le righe della tabella, ossia le voci del dominio. Sotto alle intestazioni delle colonne (attributi) andrebbero inserite le informazioni di contatto. I valori rappresenterebbero il contenuto delle singole celle. Ora supponi che i record indicati di seguito siano nuovi clienti da aggiungere al dominio creato.

ID cliente Nome Cognome Indirizzo Città Stato Zip Telefono
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555

Per aggiungere i record precedenti in Amazon SimpleDB, è sufficiente immettere (PUT) gli ID cliente nel dominio unitamente alle coppie attributo-valore per ciascun cliente. Senza la sintassi specifica, il risultato sarebbe più o meno questo:

PUT (voce, 123), (Nome, Bob), (Cognome, Smith), (Indirizzo, 123 Main St.), (Città, Springfield), (Stato, MO), (Zip, 65801), (Telefono, 222-333-4444) PUT (voce, 456), (Nome, James), (Cognome, Johnson), (Indirizzo, 456 Front St.), (Città, Seattle), (Stato, WA), (Zip, 98104), (Telefono, 333-444-5555)

Amazon SimpleDB si differenzia dalle tabelle dei database tradizionali sotto vari aspetti determinanti. Grazie all'elevata flessibilità, il servizio consente di tornare indietro in un momento successivo e aggiungere nuovi attributi applicabili solo a specifici record. Ad esempio, supponi di voler iniziare a registrare gli indirizzi e-mail dei tuoi clienti per poter inviare loro avvisi in tempo reale sullo stato dell'ordine. Anziché ricreare la tabella "cliente", riscrivere le query, ridefinire gli indici, ecc., sarà semplicemente sufficiente aggiungere i nuovi record e gli eventuali attributi al dominio "cliente" già esistente. Otterrai un dominio che avrà indicativamente le seguenti caratteristiche:

ID cliente Nome Cognome Indirizzo Città Stato Zip Telefono E-mail
123 Bob Smith 123 Main St Springfield MO 65801 222-333-4444  
456 James Johnson 456 Front St Seattle WA 98104 333-444-5555  
789 Deborah Thomas 789 Garfield New York NY 10001 444-555-6666 dthomas@xyz.com

Amazon SimpleDB prevede un numero ristretto di chiamate API che implementano funzioni di scrittura, indicizzazione e esecuzione di query. L'interfaccia e le funzionalità sono volutamente incentrate sull'essenza del servizio, il quale infatti, partendo da un'API di base integrabile secondo le necessità degli sviluppatori, si propone come uno strumento semplice da configurare e di facile utilizzo.

  • CreateDomain – Crea un dominio contenente il set di dati dell'utente.
  • DeleteDomain – Elimina un dominio.
  • ListDomains – Elenca tutti i domini.
  • DomainMetadata – Recupera informazioni relative all'ora di creazione del dominio, informazioni sullo storage come il conteggio dei nomi voce e attributo e le dimensioni totali in byte.
  • PutAttributes – Aggiunge o aggiorna una voce e i suoi attributi o aggiunge coppie attributo-valore a voci già esistenti. Le voci vengono indicizzate automaticamente contestualmente alla ricezione.
  • BatchPutAttributes – Per un throughput complessivo più elevato con scritture in blocco, esegue fino a 25 operazioni PutAttribute in un'unica chiamata.
  • DeleteAttributes – Elimina una voce, un attributo o una coppia attributo-valore.
  • BatchDeleteAttributes – Per un throughput complessivo più elevato con eliminazioni in blocco, esegue fino a 25 operazioni DeleteAttributes in un'unica chiamata.
  • GetAttributes – Recupera una voce e tutti o un sottoinsieme dei suoi attributi e valori.
  • Select – Interroga il set di dati nella sintassi conosciuta “select target da domain_name dove query_expression”. Gli operatori supportati sono: 0, !=, =, like, not like, between, is null, is not null e every (). Esempio: Select * da dominio utente dove every(keyword) = 'Prenota'. Ordina i risultati utilizzando l'operatore SORT e conta le voci che soddisfano la condizione specificata mediante il predicato in una query utilizzando l'operatore Count.

Nota: Amazon SimpleDB è stato integrato con AWS Identity and Access Management per consentire un controllo granulare delle risorse di Amazon SimpleDB. Attraverso l'integrazione con AWS Identity and Access Management un account AWS registrato per l'utilizzo di SimpleDB può creare utenti multipli. A loro volta, agli utenti creati possono essere assegnati permessi a livello di API di SimpleDB per l'accesso ai domini di SimpleDB di cui l'utente principale è titolare. Per ulteriori informazioni, consulta la pagina dei dettagli di AWS Identity and Access Management.

Amazon SimpleDB custodisce varie copie distribuite geograficamente di ogni dominio per consentire disponibilità e durabilità dei dati elevate. Una scrittura si considera riuscita (tramite PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain o DeleteDomain) quando tutte le copie di ciascun dominio rimangono disponibili in modo durevole. Amazon SimpleDB supporta due opzioni di consistenza: letture consistenti o letture a consistenza finale.

  • Letture a consistenza finale (default) – L'opzione di lettura a consistenza finale massimizza le prestazioni della lettura (in termini di bassa latenza e throughput elevato). Tuttavia, una lettura a consistenza finale (tramite Select o GetAttributes) può non riflettere i risultati di una scrittura completata recentemente (tramite PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes). La consistenza su tutte le copie di solito viene raggiunta in un secondo; una lettura ripetuta qualche minuto dopo dovrebbe fornire i dati aggiornati.
  • Letture consistenti – oltre alla consistenza finale, Amazon SimpleDB fornisce ulteriore flessibilità e controllo dando la possibilità di richiedere una lettura consistente se l'applicazione, o un elemento dell'applicazione, lo richiede. Una lettura consistente (tramite Select o GetAttributes con ConsistentRead=true) restituisce un risultato che riflette tutte le scritture che hanno ricevuto una risposta positiva prima della lettura.

Di default, le API GetAttributes e Select eseguono letture a consistenza finale. Poiché una lettura consistente potrebbe comportare una latenza più elevata e un throughput di lettura inferiore, è consigliabile utilizzare tale opzione solo se lo scenario di un'applicazione richiede assolutamente un'operazione di lettura in cui debbano essere lette tutte le scritture che abbiano ricevuto una risposta positiva prima di tale lettura. Per tutti i restanti scenari, l'opzione predefinita di lettura a consistenza finale garantirà le prestazioni migliori. Amazon SimpleDB consente inoltre di specificare impostazioni di consistenza personalizzate per le singole richieste di lettura; pertanto, la stessa applicazione può essere strutturata in parti indipendenti con impostazioni di consistenza diverse.

Non essendo un database relazionale, Amazon SimpleDB non include transazioni e relazioni complesse (ad es. unioni) con l'obiettivo di fornire caratteristiche funzionali e prestazionali uniche. Ciononostante, Amazon SimpleDB offre semantiche transazionali quali:

  • Immissioni/Eliminazioni condizionali – consentono di inserire, sostituire o eliminare valori per uno o più attributi di una voce se il valore esistente di un attributo corrisponde al valore specificato. Se il valore non corrisponde o non è presente, l'aggiornamento viene rifiutato. Le immissioni/eliminazioni condizionali sono utili per evitare perdite di aggiornamenti in caso di scritture contemporanee per la stessa voce.

Le immissioni e le eliminazioni condizionali si espongono utilizzando le API PutAttributes e DeleteAttributes e specificando una condizione opzionale con un valore atteso. Ad esempio, in un'applicazione per la prenotazione o la vendita di biglietti per un evento, è possibile consentire un acquisto (cioè scrivere un aggiornamento) solo se il posto specificato è ancora disponibile (condizione opzionale). Tali semantiche possono essere utilizzate anche per implementare funzionalità come i contatori, inserendo una voce solo se non già presente, o sistemi OCC (optimistic concurrency control, controllo a concorrenza ottimistica). Un'applicazione può implementare un sistema OCC includendo un attributo di numero di versione (o un timestamp) in una voce ed eseguendo un'immissione/eliminazione in base al valore del numero di versione specificato.

Per maggiori informazioni sulle semantiche transazionali e sulle opzioni di consistenza in Amazon SimpleDB, consulta la Developer Guide di Amazon SimpleDB o il Consistency Enhancements Whitepaper.

Amazon Web Services offre agli sviluppatori una serie di alternative a livello di database. È possibile utilizzare servizi NoSQL e relazionali completamente gestiti o eseguire il proprio database nel cloud su Amazon EC2 e Amazon EBS.

Amazon RDS consente di eseguire un database relazionale completo di funzionalità, alleggerendo il carico di lavoro dedicato all'amministrazione del database. Amazon DynamoDB è un servizio di database NoSQL interamente gestito che combina prestazioni estremamente veloci e prevedibili con una scalabilità ottimale. Amazon SimpleDB offre un servizio non relazionale concepito per set di dati di dimensioni ridotte. L'utilizzo di una delle numerose AMI di Amazon EC2 e Amazon EBS offre il pieno controllo del database senza il peso del provisioning e dell'installazione di hardware.

Tra queste alternative ci sono differenze importanti, che possono rendere più appropriata una soluzione rispetto all'altra in base allo specifico caso d'uso.

Consulta la pagina Running Databases on AWS per ulteriori dettagli sulle numerose alternative disponibili per le tue applicazioni.

A differenza di Amazon S3, Amazon SimpleDB non archivia dati grezzi. Utilizza piuttosto i tuoi dati come input e li espande per creare indici multipli consentendo l'esecuzione rapida di query sui dati disponibili. Inoltre, Amazon S3 e Amazon SimpleDB utilizzano tipologie diverse di storage fisico. Amazon S3 utilizza unità di archiviazione ad alta densità ottimizzate per archiviare oggetti di grandi dimensioni a costi contenuti. Amazon SimpleDB archivia bit di dati più piccoli e utilizza unità a minore densità ottimizzate per garantire la massima rapidità di accesso ai dati.

Per ottimizzare i costi sulle offerte AWS, gli oggetti o i file di grandi dimensioni andrebbero memorizzati in Amazon S3, mentre è preferibile memorizzare gli elementi di dati più piccoli o i puntatori a file (se possibile su oggetti Amazon S3) in Amazon SimpleDB. Per effetto della forte integrazione tra i servizi e del trasferimento di dati gratuito nell'ambiente AWS, gli sviluppatori possono contare sia sulla velocità e sulle capacità di query di Amazon SimpleDB, che sull'economicità delle soluzioni di storage offerte da Amazon S3, integrando entrambi i servizi nelle loro applicazioni.

Al momento, Amazon SimpleDB consente di memorizzare fino a 10 GB per singolo dominio. Se il set di dati è superiore a 10 GB, è possibile sfruttare l'architettura di scalabilità orizzontale di Amazon SimpleDB e ripartire i dati su più domini. Poiché la concezione di Amazon SimpleDB è basata sul parallelismo, la distribuzione dei dati su più domini aumenta il potenziale di throughput di lettura e scrittura. Inizialmente viene assegnato un massimo di 250 domini; per richiedere domini supplementari, compila questo modulo.

Per maggiori informazioni sui vantaggi dell'utilizzo di Amazon SimpleDB in combinazione con Amazon S3, fai clic qui.

Con Amazon SimpleDB, il miglior modo per prevedere l'entità dei dati strutturati archiviati è il seguente:

Dimensioni raw in byte (GB) di tutti gli ID voce + 45 byte per voce + dimensioni raw in byte (GB) di tutti i nomi attributo + 45 bytes per nome attributo + dimensioni raw in byte (GB) di tutte le coppie valore-attributo + 45 byte per coppia valore-attributo

Per calcolare il costo di storage mensile stimato per le regioni Stati Uniti orientali (Virginia settentrionale) o Stati Uniti occidentali (Oregon), si prende il dato delle dimensioni in GB risultante e lo si moltiplica per 0,25 USD. Per le regioni Europa (Irlanda), Asia Pacifico (Singapore), Asia Pacifico (Sydney) o gli Stati Uniti occidentali (California settentrionale), si prende il dato delle dimensioni in GB risultante e lo si moltiplica per 0,275 USD. Per l'area geografica Asia Pacifico (Tokyo), il dato delle dimensioni in GB risultante va moltiplicato per 0,276 USD, mentre per l'area geografica Sud America (San Paolo), il dato delle dimensioni in GB risultante deve essere moltiplicato per 0,34 USD.

Amazon SimpleDB misura l'utilizzo macchina di ciascuna richiesta e addebita i costi in base alla capacità utilizzata per completare la richiesta specifica (SELECT, GET, PUT, ecc.), normalizzata in base alla capacità oraria di un processore Xeon a 1,7 GHz del 2007. L'utilizzo macchina è calcolato sulla quantità di dati (n. di attributi, lunghezza degli attributi) elaborati a ogni richiesta. Un'operazione GET che recupera 256 attributi utilizzerà più risorse di una che restituisce solo 1 attributo. Una chiamata SELECT multi-predicato che esamina 100.000 attributi costerà di più di una query a predicato singolo che ne esamina 250.

Nel messaggio di risposta per ciascuna richiesta, Amazon SimpleDB restituisce un campo denominato Box Usage (Risorse di calcolo utilizzate). Le risorse di calcolo utilizzate misurano le risorse macchina consumate ad ogni richiesta. Non includono larghezza di banda o storage. Le risorse di calcolo utilizzate sono espresse come frazione di ora-macchina utilizzata per completare una determinata richiesta. Per gli Stati Uniti orientali (Virginia settentrionale) e gli Stati Uniti occidentali (Oregon), il costo di una singola richiesta corrisponde alle risorse di calcolo utilizzate (espresse in ore) * 0,14 USD per ora-macchina di Amazon SimpleDB. Il costo di tutte le richieste corrisponde al totale delle risorse di calcolo utilizzate (espresse in ore) * 0,14 USD.

Ad esempio, se in un mese il totale delle risorse di calcolo utilizzate per le richieste consuma l'equivalente di un processore Xeon da 1,7 GHz per 9 ore, il costo imputato verrà così calcolato:

9 ore * 0,14 USD per ore-macchina di Amazon SimpleDB = 1,26 USD.

Se i domini di query dell'utente sono situati in Europa (Irlanda), Asia Pacifico (Tokyo), Asia Pacifico (Singapore), Asia Pacifico (Sydney) o Stati Uniti occidentali (California settentrionale), la tariffa è di 0,154 USD per ora-macchina di Amazon SimpleDB. Se i domini di query dell'utente sono situati in Sud America (San Paolo), la tariffa è di 0,19 USD per ora-macchina di Amazon SimpleDB. Tutti i calcoli dei costi vanno adeguati in base ai prezzi dell'area geografica corrispondente.

L'uso di questo servizio è soggetto al contratto con il cliente Amazon Web Services.