Amazon Simple DB
Amazon SimpleDB è un database distribuito scritto in Erlang [ 1 ] da Amazon.com . Viene utilizzato come servizio Web insieme ad Amazon Elastic Compute Cloud (EC2) e Amazon S3 e fa parte di Amazon Web Services . È stato annunciato il 13 dicembre 2007.
Come EC2 e S3, Amazon addebita commissioni per l'archiviazione, il trasferimento e le prestazioni di SimpleDB su Internet. Il 1° dicembre 2008, Amazon ha introdotto un nuovo prezzo per la sezione gratuita per 1 GB di dati e 25 ore macchina. Il trasferimento ad altri servizi Amazon Web Service è gratuito.
Limitazioni
SimpleDB fornisce un'eventuale coerenza , che è una forma di coerenza più debole, rispetto ad altri sistemi di gestione del database . Questo è spesso considerato un limite, perché è più difficile ragionare, il che rende difficile scrivere programmi corretti che utilizzano SimpleDB. Questa limitazione è il risultato di un compromesso di progettazione fondamentale. Rinunciando alla coerenza, il sistema può ottenere altre due caratteristiche altamente desiderabili:
- Disponibilità: i componenti del sistema potrebbero non funzionare, ma il servizio continuerà a funzionare correttamente.
- Tolleranza partizione: i componenti del sistema sono collegati tra loro tramite una rete di computer . Se i componenti non possono comunicare tra loro sulla rete (una condizione nota come partizionamento di rete ), il funzionamento del sistema continuerà.
Si presume che i guasti dei componenti siano inevitabili; pertanto, entrambe le funzionalità sono state ritenute necessarie per fornire un servizio web affidabile . Il teorema CAP afferma che non è possibile che un sistema mostri queste proprietà insieme alla consistenza; pertanto, i progettisti hanno dovuto accontentarsi di una forma di consistenza più debole.
Limitazioni pubblicate:
Limitazioni del negozio
| Attributo | Massimo |
|---|---|
| domini | 250 domini attivi per account. Ulteriori informazioni possono essere richieste compilando un modulo. |
| dimensione di ciascun dominio | 10 GB |
| attributi per dominio | 1.000.000.000 |
| attributi per articolo | 256 attributi |
| dimensione per attributo | 1024 byte |
Limiti delle query
| Attributo | Massimo |
|---|---|
| elementi restituiti in una risposta alla query | 2500 articoli |
| secondi in cui una query può essere eseguita | 5 secondi |
| nomi degli attributi per predicato della query | 1 nome attributo |
| confronti per predicato | 22 operatori |
| predicati per espressione di query | 20 predicati |
Caratteristiche
L'inserimento condizionale e l'eliminazione condizionale sono nuove operazioni aggiunte a febbraio 2010. Risolvono un problema durante l'accesso a SimpleDB contemporaneamente. Si consideri un semplice programma che utilizza SimpleDB per memorizzare un contatore, ovvero un numero che può essere incrementato. Il programma deve fare tre cose:
- Recupera il valore corrente del contatore SimpleDB.
- Aggiungi uno al valore.
- Memorizza il nuovo valore nella stessa posizione del vecchio valore in SimpleDB.
Se questo programma viene eseguito mentre nessun altro programma accede a SimpleDB, funzionerà correttamente; tuttavia, è spesso auspicabile che le applicazioni software (in particolare le applicazioni Web ) accedano agli stessi dati contemporaneamente. Quando si accede agli stessi dati contemporaneamente, si verifica una race condition , che comporterebbe una perdita di dati non rilevabile.
Continuando con l'esempio precedente, consideriamo due processi, A e B, che eseguono lo stesso programma. Si supponga che SimpleDB soddisfi le richieste di dati, come descritto nel passaggio 1, da A e B. A e B vedono lo stesso valore. Diciamo che il valore corrente del contatore è 0. A causa dei passaggi 2 e 3, A proverà a memorizzare 1. B proverà a fare lo stesso; pertanto, il valore finale del contatore sarà 1, anche se il valore finale previsto del contatore sarà 2, poiché il sistema ha tentato due operazioni di incremento, una di A e una di B.
Questo problema può essere risolto utilizzando put condizionale. Supponiamo di modificare il passaggio 3 come segue: invece di memorizzare incondizionatamente il nuovo valore, il programma chiede a SimpleDB di memorizzare il nuovo valore solo se il valore che contiene attualmente è lo stesso del valore recuperato nel passaggio 1. Quindi possiamo essere sicuri che il il valore del contatore aumenta effettivamente. Ciò introduce una certa complessità aggiuntiva; Se SimpleDB non è stato in grado di memorizzare il nuovo valore perché il valore corrente non era quello previsto, il programma deve ripetere i passaggi da 1 a 3 finché l'operazione di immissione condizionale non modifica effettivamente il valore memorizzato.
Lettura coerente
La lettura coerente era una nuova funzionalità rilasciata contemporaneamente al posizionamento condizionale e alla rimozione condizionale. Come suggerisce il nome, la lettura coerente risolve i problemi che sorgono a causa dell'eventuale modello di coerenza di SimpleDB. Considera la seguente sequenza di operazioni:
- Il programma A memorizza alcuni dati in SimpleDB.
- Subito dopo, A richiede i dati appena archiviati.
L'eventuale garanzia di coerenza di SimpleDB non ci consente di affermare che i dati recuperati nel passaggio 2 riflettano gli aggiornamenti apportati al passaggio 1. L'eventuale coerenza garantisce solo che il passaggio 2 rifletta l'intero set di aggiornamenti dal passaggio 1 o nessuno di questi aggiornamenti. È possibile utilizzare una lettura coerente per garantire che i dati recuperati nel passaggio 2 riflettano le modifiche nel passaggio 1.
Il motivo per cui potresti ottenere risultati incoerenti quando non utilizzi l'operazione di lettura coerente è che SimpleDB archivia i dati in più posizioni (per disponibilità) e i nuovi dati del passaggio 1 potrebbero non essere scritti in tutte le posizioni quando SimpleDB riceve la richiesta di dati nella fase 2. In tal caso, è possibile che la richiesta di dati nella fase 2 venga evasa in una delle locazioni in cui non sono stati scritti i nuovi dati.
Amazon sconsiglia l'uso di una lettura coerente, a meno che non sia richiesta per la riparazione. Il motivo di questa raccomandazione è che la velocità con cui vengono gestite le operazioni di lettura coerenti è più lenta delle letture normali.
Relazione con DynamoDB
Si è parlato di sostituire SimpleDB con DynamoDB (non è più "iterato" anche se Amazon non prevede di rimuoverlo). DynamoDB sembra essere il suo successore. [ 2 ]
Vedi anche
Riferimenti
- ↑ Cosa devi sapere su Amazon SimpleDB
- ^ "Amazon DynamoDB: un servizio di database NoSQL veloce e scalabile progettato per applicazioni di scalabilità Internet - All Things Distributed" . www.allthingsdistributed.com . 18 gennaio 2012.