Strumento di single-table design per DynamoDB
Inserisci le tue entità e come hai bisogno di leggerle — il pianificatore suggerisce template di chiavi PK/SK prefissate dall'entità, mostra un'anteprima delle collezioni di item e aggiunge un GSI solo dove la tabella di base non può servire un pattern.
Dai pattern di accesso a uno schema di chiavi
Il single-table design parte dalle letture, non dalle entità: invece di normalizzare le tabelle e fare join al momento della query, elenchi ogni modo in cui l'applicazione ha bisogno di recuperare i dati — ottenere un utente tramite ID, elencare gli ordini di un utente dal più recente, trovare un account tramite email — e modelli le chiavi così che ciascuno sia una singola GetItem o Query. Ogni pattern a cui la tabella di base non può rispondere ti costa un indice, e questo compromesso dovrebbe essere visibile prima di creare la tabella.
Questo pianificatore rende esplicito il compromesso. Applica in modo deterministico le regole standard del single-table — chiavi composte prefissate dall'entità, collezioni di item per i pattern uno-a-molti, GSI invertiti o limitati a un attributo per il resto — e dove un pattern non può essere servito in modo pulito lo dichiara invece di fingere. La tabella degli item di esempio mostra come le righe risultanti si trovino effettivamente una accanto all'altra all'interno di una partizione.
L'output è un semplice documento JSON CreateTable con attributi chiave generici di tipo stringa — niente di specifico dello strumento da districare in seguito — più stime dei costi che riutilizzano l'esatto arrotondamento di 4 KB in lettura / 1 KB in scrittura usato dai nostri calcolatori di prezzi e dimensione degli item.
Sei nuovo a questi concetti o non sei sicuro che l'approccio si adatti al tuo carico di lavoro? La nostra guida al single-table design spiega l'idea partendo dai principi di base, e quando NON usarlo copre gli onesti casi contrari. Una volta definito lo schema, componi la richiesta effettiva nel Generatore di query DynamoDB oppure stima l'intera bolletta mensile con il Calcolatore dei prezzi di DynamoDB.
Domande frequenti
Cos'è il single-table design in DynamoDB?
Un approccio di modellazione in cui tutti i tipi di entità di un'applicazione condividono un'unica tabella con attributi generici di chiave di partizione e di ordinamento (PK/SK). Gli item correlati condividono una chiave di partizione, così una singola Query li recupera insieme — il design è guidato dai tuoi pattern di accesso anziché dalle forme normalizzate delle entità.
Come decide il design delle chiavi questo pianificatore?
Con regole fisse e pubblicate — deterministiche, non generative. Ogni entità parte come radice della propria collezione di item con chiavi prefissate dall'entità; il primo pattern di elenco dei figli sposta il figlio nella partizione del genitore su una chiave di ordinamento composta; le ricerche per altri attributi, i secondi genitori e i pattern che elencano tutto diventano suggerimenti di GSI; e un pattern che le regole non riescono a servire in modo pulito viene contrassegnato come non supportato anziché ricevere un design inventato.
Quando un pattern di accesso ha bisogno di un indice secondario globale?
Quando la disposizione delle chiavi della tabella di base non può soddisfarlo: recuperare un figlio ricollocato tramite il suo ID, elencare gli stessi item sotto un secondo genitore, trovare un item tramite un attributo non chiave come un'email o elencare ogni item di un tipo. Ciascuno di questi ridefinisce le chiavi sugli stessi dati, cosa che solo un indice può fare — il pianificatore ne suggerisce uno per forma di chiave e lo riutilizza tra i pattern che condividono la stessa forma.
Come influiscono i GSI sul costo di DynamoDB?
Ogni GSI mantiene una propria copia proiettata degli item che copre, perciò ogni scrittura sulla tabella consuma anche capacità di scrittura su ogni GSI che proietta l'item, e lo storage viene fatturato per copia. La scheda dei costi mostra una stima per la sola tabella di base e una che include la replica delle scritture sui GSI, usando lo stesso arrotondamento di 4 KB in lettura / 1 KB in scrittura dei nostri calcolatori di prezzi e dimensione degli item.
Il pianificatore carica il mio modello di dati da qualche parte?
No. La pagina è statica e il design viene calcolato interamente nel tuo browser — i nomi delle entità, gli attributi ID e i pattern di accesso non raggiungono mai un server. L'unico modo in cui un design lascia la pagina è l'URL “Copia link”, che lo racchiude nel link così che la condivisione resti un atto deliberato.