Skip to content

Modellazione dati NoSQL spiegate

Pattern di modellazione per store a documenti, chiave-valore, colonne larghe, grafi e vettoriali — quando incorporare, referenziare, denormalizzare o raggruppare per tempo.

Gli store NoSQL scambiano schemi fissi e join con la scalabilità orizzontale. Ogni famiglia modella le relazioni a modo suo, quindi è il pattern di accesso — non la forma normale — a dettare la struttura.

Tabella di riferimento · 28 voci
28 of 28 rows
Documenti
Sotto-documenti annidati vivono dentro un unico documento padre invece che in tabelle separate.Relazioni uno-a-pochi lette insieme. Un ordine con le sue righe. Un utente con tre indirizzi.
Conserva un id esterno, non i dati. Risolvilo con una seconda lettura o un $lookup.Sotto-entità grandi, condivise o aggiornate in autonomia. Collegamenti molti-a-molti tra collezioni.
Il padre incorpora un breve array di figli; l'intero insieme entra e si carica come un unico documento.Una manciata di numeri di telefono o preferenze su un profilo. Una lettura restituisce padre e figli.
I figli vivono nella propria collezione; ogni figlio porta l'id del padre, oppure il padre tiene un array di id limitato.Insiemi troppo grandi o troppo indipendenti da incorporare. Interroga i figli per id padre.
Il figlio conserva l'id del padre; il padre non elenca mai i figli perché l'insieme è illimitato.Eventi, log o voti legati a un host o a un utente. Filtra i figli per id padre e paginali.
Documenti di tipi di entità diversi condividono una collezione, distinti da un campo tipo.Commenti o notifiche attaccati a molti tipi di padre, tutti interrogati allo stesso modo.
Poche entità estreme vengono separate dalla forma comune perché la loro dimensione o il loro traffico non deformi il resto.Account celebrity le cui liste di follower o contatori crescerebbero oltre il documento normale.
Ogni revisione è un nuovo documento con lo stesso id e un numero di versione crescente; la query sceglie l'ultima.Tracciati di audit e cronologia di modifiche dove le revisioni vecchie restano interrogabili.
I valori derivati si calcolano in scrittura e si conservano accanto ai dati che riassumono.Totali, valutazioni e top-N che altrimenti eseguirebbero un'aggregazione a ogni lettura.
Chiave-valore e colonne larghe
Termine di design DynamoDB: comprimi molti tipi di entità in una sola tabella usando partition e sort key in overload.Recupera item eterogenei in una query senza join.
Un attributo chiave serve molti tipi di entità, marcato da prefissi come USER# o ORDER#.Design single-table. Raggruppa item correlati sotto una partizione e recuperali in una query.
Una partition key distribuisce le righe tra i nodi; una sort key ordina ogni partizione.Cassandra e DynamoDB. Scansioni a intervallo, log ordinati, chiavi composte gerarchiche.
Impila più attributi in un'unica sort key delimitata — country#region#city — così un match per prefisso scende nella gerarchia.Gerarchie e filtri multi-faccetta. Una query ordinata a intervallo sostituisce molte ricerche indicizzate.
Raggruppa gli eventi in finestre fisse — ora, giorno, mese — sotto partizioni o tabelle dedicate.Metriche, log e telemetria IoT. Limita la dimensione della partizione e manda in pensione i dati freddi.
Duplica i campi letti spesso tra i record perché una query non insegua mai una seconda lettura.Carichi pesanti in lettura dove la consistenza eventuale è tollerabile e lo storage è economico.
Un indice secondario costruito su un attributo che solo alcuni item portano; gli item senza non entrano mai nell'indice.Percorsi di accesso alternativi. Trova il sottoinsieme sparso — ordini aperti, item non spediti — senza una scansione completa.
Scrivi prima le query esatte; il layout della tabella ne deriva, non da entità o forma normale.Lavoro di schema su Cassandra e DynamoDB. Una tabella per famiglia di query; il modello dati copia la domanda.
Una query deve colpire molte partizioni o nodi in parallelo perché nessuna chiave corrisponde alla domanda.Un cattivo odore da progettare via, non un obiettivo. Rimappa la tabella così la query comune atterra su una partizione.
Le copie vengono spinte nella vista di ogni lettore in scrittura, oppure raccolte e fuse in lettura.Feed e timeline. Fan-out in scrittura per pubblici piccoli, in lettura per pubblici enormi.
Un risultato di query pre-costruito, conservato come tabella propria e tenuto aggiornato al cambiare della base.Forme di lettura alternative su un solo percorso di scrittura. Serve query a cui la tabella base non sa rispondere.
Grafi
Ogni arco è una riga o tupla che punta da un nodo sorgente a un nodo destinazione.Store a grafi e property. Ricerche amico-di-amico, routing, raccomandazioni.
Ogni relazione è un documento nella propria collezione, con id from e to più attributi del collegamento.Grafi negli store a documenti. Attributi sul collegamento stesso — valutazione, ruolo, timestamp.
Ogni nodo conserva i contatori sinistro e destro di una visita in profondità; un sottoalbero vive nell'intervallo del padre.Alberi pesanti in lettura. Una query BETWEEN restituisce un sottoalbero; gli inserimenti rinumerano la visita.
Una tabella dedicata registra ogni coppia antenato-discendente, incluso ogni nodo a profondità zero.Query su interi rami a qualunque profondità. Join semplici, pagati in storage e manutenzione.
I property graph collegano attributi chiave-valore a nodi e archi; RDF esprime tutto come triple soggetto-predicato-oggetto.Property graph per traversal ricchi (Neo4j); RDF per linked open data e scambio di ontologie.
Vettori
Un array di float ad alta dimensione sta accanto ai metadati. Un indice ANN trova i vicini più prossimi.Ricerca semantica, retrieval RAG, raccomandazioni e similarità su contenuti non strutturati.
I documenti sorgente vengono spezzati — per dimensione, sovrapposizione o struttura — prima che ogni pezzo sia incorporato da solo.Qualità del retrieval RAG. La dimensione del chunk scambia precisione con richiamo; la sovrapposizione protegge le frasi spezzate.
La similarità vettoriale densa corre accanto al matching per parola chiave; le due liste ordinate si fondono in un risultato.Query che vogliono termini esatti e significato insieme, con filtri di metadati sopra.