close

Amazon Simple DB

Vai alla navigazione Vai alla ricerca
Image
Logo SimpleDB

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:

  1. Disponibilità: i componenti del sistema potrebbero non funzionare, ma il servizio continuerà a funzionare correttamente.
  2. 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:

  1. Recupera il valore corrente del contatore SimpleDB.
  2. Aggiungi uno al valore.
  3. 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:

  1. Il programma A memorizza alcuni dati in SimpleDB.
  2. 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

  1. Cosa devi sapere su Amazon SimpleDB
  2. ^ "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.