Panoramica di DynamoDB - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Panoramica di DynamoDB

Amazon DynamoDB è un database di documenti e valori chiave NoSQL che combina prestazioni elevate e prevedibili con una scalabilità ottimale. È un database completamente gestito, multiregionale, multiattivo e durevole. (La funzionalità di tabella globale in DynamoDB sincronizza automaticamente le modifiche apportate in unaAWS regione con tutte le altre regioni selezionate, per fornire un supporto multiattivo.) DynamoDB dispone di funzionalità di sicurezza integrate, opzioni di backup e ripristino e cache in memoria per applicazioni su scala Internet.

La natura priva di schemi dei database NoSQL aiuta a ridurre il tempo e il processo necessari per trasferire una modifica al database (leggi lo schema) alla produzione, consentendo così lo sviluppo rapido di applicazioni (RAD). I database NoSQL come DynamoDB sono progettati per operazioni di lettura/scrittura ad alte prestazioni.

Caratteristiche e vantaggi

DynamoDB offre le seguenti caratteristiche e vantaggi:

  • Nessun server da gestire: DynamoDB è un servizio di database NoSQL completamente gestito, il che significa che non comporta alcun sovraccarico di manutenzione del server.

  • Schemaless: DynamoDB supporta lo sviluppo e l'implementazione rapidi di applicazioni.

  • Prestazioni su larga scala: DynamoDB combina prestazioni elevate e prevedibili con una scalabilità continua.

  • Supporto ACID: DynamoDB supporta le transazioni ACID (ACID, Consistency, Atomicity, Consistency, Atomicity, Consistency, Atomicity, Consistency, Atomicity, Consistency, Atomicity, Consistency,

  • Alta disponibilità e durabilità: i dati vengono archiviati su unità a stato solido (SSD) e vengono replicati automaticamente in più zone di disponibilità in unaAWS regione in modo da fornire elevata disponibilità e durabilità dei dati.

  • Scaling automatico: DynamoDB utilizza il servizioAWS Application Auto Scaling per regolare in modo dinamico la capacità di throughput assegnata in risposta ai modelli di traffico.

  • Opzioni di prezzo flessibili: DynamoDB offre due modalità di capacità con opzioni di fatturazione specifiche: la modalità di capacità on demand e la modalità di capacità assegnata.

  • oint-in-time Ripristino P: è possibile abilitare backup continui utilizzando il point-in-time ripristino per proteggere le tabelle da operazioni di scrittura o eliminazione accidentali e ripristinare le tabelle in qualsiasi momento negli ultimi 35 giorni.

  • Time to Live (TTL): puoi eliminare automaticamente gli elementi da una tabella DynamoDB dopo una durata specificata.

  • Tabelle globali: è possibile distribuire più repliche in piùAWS regioni senza dover creare una soluzione di replica personalizzata.

  • Indici secondari globali: puoi interrogare la tua tabella DynamoDB utilizzando chiavi di partizione e ordinamento diverse dalle chiavi di partizione e ordinamento proprie della tabella.

  • DAX: il servizio di caching DynamoDB Accelerator (DAX) fornisce tempi di risposta inferiori al millisecondo per le operazioni di lettura.

  • DynamoDB Streams: questa funzionalità fornisce una sequenza cronologica di modifiche a livello di elemento in un log per supportare il tracciamento e la notifica in tempo reale delle modifiche nelle tabelle DynamoDB.

Per ulteriori informazioni su questi vantaggi, consulta le funzionalità di Amazon DynamoDB sulAWS sito Web. Le sezioni seguenti illustrano alcune delle funzionalità rilevanti per modernizzare i carichi di lavoro del database mediante la migrazione da un RDBMS a DynamoDB.

Chiavi di partizione

DynamoDB è privo di schema, quindi non è necessario definire tutti gli attributi per una tabella. L'attributo della chiave di partizione è obbligatorio e la chiave di ordinamento è facoltativa. Gli altri attributi sono arbitrari e possono variare in base all'articolo. Si consiglia di scegliere una chiave di partizione con elevata cardinalità in modo che gli elementi a cui si accede di frequente non risiedano nella stessa partizione. Questa pratica consente di evitare squilibri di accesso ai dati e partizioni calde. Per ulteriori informazioni, consulta Best practice per la progettazione e l'uso efficace delle chiavi di partizione nella documentazione di DynamoDB.

Indici

Gli indici consentono di accedere a modelli di interrogazione alternativi e possono velocizzare le query. È necessario creare gli indici con attenzione, indipendentemente dal fatto che si utilizzi un database relazionale o DynamoDB. Ogni volta che si verifica un'operazione di scrittura su una tabella, tutti gli indici di quella tabella devono essere aggiornati.

Un indice secondario globale contiene una selezione di attributi dalla tabella di base organizzati in base a una chiave primaria diversa dalla chiave primaria della tabella. In DynamoDB, gli indici secondari globali sono sparsi per impostazione predefinita. Cioè, la chiave di ordinamento è facoltativa e non appare in tutti gli elementi della tabella. Per sfruttare questa funzionalità, è possibile creare indici secondari globali che memorizzano e proiettano solo gli attributi richiesti. È possibile archiviare fino a 20 indici secondari globali in una tabella DynamoDB. Per ulteriori informazioni su questa funzionalità, consulta Utilizzo di indici secondari globali in DynamoDB nella documentazione di DynamoDB.

È ora di vivere

È possibile impostare una proprietà Time to Live (TTL) su una tabella DynamoDB per definire un timestamp per elemento (record) per specificare quando un elemento non è più necessario. Poco dopo il timestamp specificato, DynamoDB elimina l'elemento dalla tabella senza consumare unità di capacità aggiuntive. Per ulteriori informazioni su questa funzionalità, vedi Elementi in scadenza utilizzando DynamoDB Time to Live nella documentazione di DynamoDB.

Modelli di prezzo

DynamoDB offre due modelli di prezzo tra cui scegliere: capacità fornita e capacità su richiesta. La scelta del modello di prezzo dipende dai carichi di lavoro previsti.

Modello di prezzo Tipo di carico di lavoro Costo Velocità effettiva di lettura/scrittura
Capacità con provisioning Prevedibile Minore

È possibile specificare il numero di operazioni di lettura/scrittura al secondo in termini di unità di capacità di lettura (RCU) e unità di capacità di scrittura (WCU). Ad esempio:

  • Per un elemento di dimensioni fino a 4 KB, 1 RCU può eseguire 2 letture a consistenza finale al secondo.

  • Per un elemento di dimensioni fino a 1 KB, 1 WCU può eseguire 2 letture a consistenza finale al secondo.

Puoi abilitare il ridimensionamento automatico per regolare la capacità in risposta alle variazioni del traffico.

Capacità on demand Dinamico Più alto

Non si specificano i requisiti di produttività. DynamoDB gestisce automaticamente i tuoi carichi di lavoro.

Le letture e le scritture eseguite dall'applicazione sulle tabelle in termini di unità di richiesta di lettura e unità di richiesta di scrittura. Ad esempio:

  • Un elemento da 8 KB richiede 1 unità di richiesta di lettura per una lettura eventualmente coerente e 8 unità di richiesta di scrittura per un'operazione di scrittura non transazionale.

Per ulteriori informazioni su questi due modelli, consulta la modalità di capacità di lettura/scrittura nella documentazione di DynamoDB.

Transazioni

DynamoDB supporta le transazioni ACID (ACID, Atomicity, Consistency, Consistency, Consistency, Consistency, Consistency, Consistency, Consistency, isolamento eAWS durabilità) su una o più tabelle all'interno di un singoloAWS account

Per gestire le modifiche a più elementi all'interno e tra le tabelle, puoi utilizzare le API transazionaliTransactWriteItems e leTransactGetItems API di DynamoDB.

  • TransactWriteItemsè un'operazione batch che contiene un set di scrittura con uno o piùPutItemUpdateItem, eDeleteItem azioni. TransactWriteItemspuò opzionalmente verificare le condizioni preliminari che devono essere soddisfatte prima di effettuare gli aggiornamenti. Queste condizioni potrebbero riguardare gli stessi elementi di quelli del set di scrittura o elementi diversi. Se una delle condizioni non viene soddisfatta, la transazione viene rifiutata.

  • TransactGetItemsè un'operazione batch che contiene un set di lettura con una o piùGetItem azioni. Se si invia unaTransactGetItems richiesta su un articolo che fa parte di una transazione di scrittura attiva, la transazione di lettura viene annullata. Per ottenere il valore precedentemente assegnato, è possibile utilizzare un'operazione di lettura standard.

Per ulteriori informazioni su queste API, consulta Transazioni Amazon DynamoDB: come funziona nella documentazione di DynamoDB.

Limitazioni

Le operazioni API transazionali di DynamoDB hanno i seguenti vincoli:

  • Una transazione non può aggiornare più di 100 elementi univoci.

  • Una transazione non può contenere più di 4 MB di dati.

  • Una transazione non può avere due operazioni che agiscono sullo stesso elemento nella stessa tabella. Ad esempio, non è possibile eseguire entrambeConditionCheck leUpdate azioni sullo stesso articolo in una transazione.

  • Una transazione non può operare su tabelle in più di un account o regione AWS.

  • Le operazioni transazionali forniscono garanzie ACID solo all'internoAWS della regione in cui si svolge originariamente l'operazione di scrittura. Le transazioni non sono supportate tra le regioni nelle tabelle globali.

  • Il modello di persistenza degli oggetti non supporta le transazioni. Per utilizzare la funzione di transazione, è necessario accedere al database e alle tabelle utilizzando l'API di basso livello di DynamoDB.

Componenti di grandi dimensioni

DynamoDB ha un limite di dimensione di 400 KB per ogni elemento. Questo limite include sia il nome dell'attributo (lunghezza binaria con codifica UTF-8) che il valore dell'attributo (ancora la lunghezza binaria). Il nome dell'attributo viene conteggiato ai fini del limite di dimensione. Ad esempio, considera un elemento con due attributi: un attributo denominato «codice paese» con valore «IN» e un attributo denominatocountry-phone-prefix "con valore «91". La dimensione totale di quell'elemento è di 36 byte.

Soluzione alternativa

Se un elemento è associato a molti attributi e proprietà o a una grande quantità di dati, la sua dimensione potrebbe superare i 400 KB. In questo caso, è possibile archiviare l'elemento serializzato in Simple Storage Service (Amazon S3) in formato JSON e salvare la posizione Amazon S3 come un attributo (S3Location) nell'elemento. Le operazioni di lettura e scrittura per quell'elemento recuperano l'oggetto S3 e aggiornano la stringa JSON. La chiave primaria, la chiave di ordinamento e tutti gli attributi utilizzati dagli indici locali e dagli indici secondari globali devono essere archiviati nella tabella insieme all'S3Locationattributo. Ciò richiede una logica aggiuntiva nell'applicazione (livello di accesso ai dati) per verificare l'S3Locationattributo e recuperare i dati completi dell'articolo da Amazon S3.

Backup e ripristino

Il supporto per il Backup e il ripristino è una caratteristica comune in qualsiasi database. DynamoDB supporta in modo nativo le operazioni di backup e ripristino all'interno dello stesso account, ma è possibile eseguire la copia della tabella su più account utilizzando altre opzioni o processi. Questi processi non consumano alcuna unità di capacità di lettura/scrittura. Per ulteriori informazioni, consulta la guida Opzioni di copia della tabella completa tra account per Amazon DynamoDB sul sito Web diAWS Prescriptive Guidance.

Limitazioni

Attualmente DynamoDB supporta il backup e il ripristino tra account utilizzando AWS Backup, ma l'account deve far parte della stessa organizzazione. È possibile ovviare a questa limitazione adottando una delle seguenti soluzioni:

Supporto per lingua e SDK

Gli AWSSDK forniscono un'interfaccia di programmazione semplificata perAWS i servizi e il supporto per .NET JavaScript, Java, Node.js, Python, PHP e Ruby.

Puoi scegliere tra tre modelli per accedere alle tabelle DynamoDB utilizzando unAWS SDK: modello di persistenza degli oggetti (interfaccia di alto livello), interfacce di documento e interfacce di basso livello. Per informazioni dettagliate, consulta la sezione Schemi di accesso più avanti in questa guida.