Che cos'è un database di documenti?

Un database di documenti è un tipo di database NoSQL che archivia, gestisce e recupera i dati in un formato flessibile. Questi "documenti" possono avere ciascuno una propria struttura univoca, a differenza dei database relazionali, che utilizzano tabelle rigide con righe e colonne.

Questa flessibilità può rendere i database di documenti la scelta ideale per la gestione di dati semistrutturati o non strutturati, come applicazioni generate dall'AI o dati di sensori, casi in cui gli schemi tradizionali sarebbero troppo restrittivi. Sono particolarmente popolari in casi d'uso come la gestione dei contenuti, l'e-commerce e l'analisi in tempo reale.

Concetti fondamentali

Un database di documenti è un tipo di database NoSQL che archivia i dati in "documenti" flessibili simili a JSON.

I database di documenti sono noti per:

  • Modelli di dati flessibili: ogni documento può avere una struttura univoca, un design adatto agli sviluppatori che mappa gli oggetti direttamente nel codice
  • Scalabilità orizzontale: progettati per fare lo scale out, i database di documenti si scalano facilmente per la crescita
  • Query avanzate: un potente linguaggio di query consente filtraggio, ordinamento e aggregazione dei dati complessi
  • Varietà di casi d'uso: i database di documenti sono ideali per i dati non strutturati o semistrutturati e hanno una serie di casi d'uso, come sistemi di gestione dei contenuti, profili utente, cartelle cliniche e cataloghi di prodotti di e-commerce

Come funziona un database di documenti?

Immagina un database di documenti come un archivio digitale intelligente. I dati sono raggruppati in raccolte (le cartelle), ognuna delle quali contiene documenti autonomi (i file) per una singola entità come un cliente o un prodotto.

A differenza di una tabella relazionale rigida, ogni documento può avere una struttura univoca. Ad esempio, puoi aggiungere un campo "sustainability_rating" a un singolo prodotto nel tuo catalogo di e-commerce senza alterare lo schema per tutti gli altri articoli.

Documento 1:

{

id: 1

product_name: "blue shirt"

product_category: "shirt"

qty: 76

sustainability_rating: "moderate"

}


Documento 2:

{

id: 2

product_name: "green pants"

product_category: "pants"

qty: 44

}

Documento 1:

{

id: 1

product_name: "blue shirt"

product_category: "shirt"

qty: 76

sustainability_rating: "moderate"

}


Documento 2:

{

id: 2

product_name: "green pants"

product_category: "pants"

qty: 44

}

I database di documenti sono adatti alle applicazioni che richiedono flessibilità, scalabilità e sviluppo rapido, come le applicazioni di AI, la gestione dei contenuti, l'e-commerce e l'analisi in tempo reale.

Ad esempio, un singolo post sui social media contiene dati semistrutturati, ovvero campi prevedibili come nome utente, timestamp e numero di "Mi piace", ma la struttura è flessibile. Un post potrebbe includere un tag di posizione facoltativo, mentre un altro potrebbe avere un elenco di utenti taggati. Oltre a questi, il post può contenere dati non strutturati, come un'immagine o un video, il testo libero della didascalia e una serie di commenti degli utenti.

Un database di documenti è progettato per archiviare tutte queste informazioni correlate, dal nome utente strutturato all'immagine e ai commenti non strutturati, in un unico "documento" coeso. Ciò rende molto efficiente per gli sviluppatori lavorare con dati reali senza doverli prima forzare in una struttura rigida e predefinita.

Funzionalità chiave di un database di documenti

I database di documenti si distinguono per un insieme unico di funzionalità architetturali progettate per supportare i moderni pattern di sviluppo e l'efficienza dei dati.

I documenti sono raggruppati in raccolte, in modo simile alle tabelle nei database relazionali. Tuttavia, a differenza delle tabelle, le raccolte non richiedono che tutti i documenti abbiano la stessa struttura, offrendo maggiore flessibilità. Ad esempio, immagina documenti che memorizzano il nome e l'email di un cliente, ma diverse forme di pagamento. Un documento potrebbe archiviare i dettagli della carta di credito, mentre un altro potrebbe archiviare il numero di routing e il numero di conto corrente.

Oltre al fatto che ogni documento ha una sua struttura unica, il formato può anche cambiare man mano che vengono aggiunte informazioni. In altre parole, la struttura dei dati può evolversi, non solo i valori. Questo è fondamentalmente diverso da un database relazionale, in cui tutte le righe di una tabella devono essere conformi alle stesse colonne predefinite e cambiano solo i valori. Uno schema dinamico è particolarmente efficace nella programmazione di vibe, in cui un singolo prompt che esprime nuovi requisiti aziendali può riflettere una modifica a un modello di dati.

I database di documenti consentono di eseguire query direttamente all'interno dei campi di un documento, con indici che alimentano query veloci. Ad esempio, puoi trovare rapidamente un utente tramite la sua email o recuperare gli ordini superiori a un determinato prezzo.

I database di documenti sono progettati per crescere facilmente aggiungendo senza problemi più server o cluster con tempi di inattività minimi o nulli. Questa scalabilità li rende ideali per applicazioni con esigenze di dati in crescita o imprevedibili.

Casi d'uso principali per i database di documenti

I database di documenti sono ampiamente adottati per le applicazioni in cui flessibilità, scalabilità e velocità sono essenziali. Ecco alcuni casi d'uso comuni:

  • Sistemi di gestione dei contenuti (CMS): gestisci contenuti diversi, dai post del blog alle descrizioni dei prodotti, garantendo la distribuzione e gli aggiornamenti efficienti dei contenuti
  • Piattaforme di e-commerce: gestisci negozi online ad alte prestazioni, cataloghi di prodotti complessi, account utente e transazioni in tempo reale
  • Analisi in tempo reale: elabora e analizza grandi volumi di dati per ottenere informazioni preziose e prendere decisioni basate sui dati
  • Applicazioni web e per dispositivi mobili: crea applicazioni rapide e adattabili che offrono esperienze utente fluide su tutti i dispositivi
  • Internet of Things (IoT): archivia e analizza grandi quantità di dati dei sensori per alimentare dispositivi e sistemi intelligenti
  • Sviluppo di giochi: crea esperienze di gioco coinvolgenti gestendo i dati dei giocatori, gli stati dei giochi e le classifiche
  • Applicazioni sanitarie: archivia e gestisci in modo sicuro le informazioni sensibili dei pazienti, consentendo un'erogazione efficiente e accurata dell'assistenza sanitaria
  • Applicazioni basate sull'AI: supporta l'AI con un modello di dati in grado di evolversi rapidamente e di tenere il passo con le modifiche dei prompt di AI
  • Cache AI: memorizza nella cache i risultati dei servizi AI che producono traduzioni linguistiche, classificazioni di dati e altro ancora per ridurre i costi di distribuzione

Confronto tra database di documenti, chiave-valore e relazionali

Sebbene i database di documenti, i database relazionali e gli archivi chiave-valore gestiscano tutti i dati, lo fanno con priorità diverse in termini di struttura, flessibilità e velocità.

Funzionalità

Database di documenti

Archivio coppia chiave-valore

Database relazionali

Formato dei dati

Documenti strutturati e avanzati

Coppie chiave-valore semplici

In tabelle (righe e colonne)

Flessibilità

Alto; ogni documento può variare

Alto; il numero di colonne può variare da una riga all'altra

Limitato; schema predefinito

Fare query

Funzionalità avanzata, inclusi i campi nidificati

Per chiave o indice secondario per prestazioni ottimali

Query avanzate e complesse con JOIN

Ideale per

Sviluppo rapido ed evoluzione dei modelli dei dati

Strutture di dati semplici e ricerche rapide

Coerenza dei dati elevata e query su più tabelle

Funzionalità

Database di documenti

Archivio coppia chiave-valore

Database relazionali

Formato dei dati

Documenti strutturati e avanzati

Coppie chiave-valore semplici

In tabelle (righe e colonne)

Flessibilità

Alto; ogni documento può variare

Alto; il numero di colonne può variare da una riga all'altra

Limitato; schema predefinito

Fare query

Funzionalità avanzata, inclusi i campi nidificati

Per chiave o indice secondario per prestazioni ottimali

Query avanzate e complesse con JOIN

Ideale per

Sviluppo rapido ed evoluzione dei modelli dei dati

Strutture di dati semplici e ricerche rapide

Coerenza dei dati elevata e query su più tabelle

Confronto tra database di documenti e database relazionali

I database di documenti eccellono in ambienti dinamici, come le piattaforme di e-commerce o le app mobile, in cui i dati si evolvono rapidamente o assumono forme diverse. La loro flessibilità è adatta a set di dati provenienti da origini diverse o con schemi diversi.

I database relazionali, d'altra parte, sono ideali per applicazioni tradizionali come i sistemi finanziari o la gestione dell'inventario, dove la coerenza e la struttura sono imprescindibili. Nei servizi finanziari, ad esempio, il mantenimento di uno schema rigoroso garantisce che ogni account cliente utilizzi gli stessi tipi di dati richiesti dalla governance.

Considerazioni per la scelta tra le due opzioni:

  • Struttura: i database relazionali impongono schemi rigidi, mentre i database di documenti consentono a ogni record di avere una struttura univoca
  • Relazioni: i database relazionali si basano su operazioni JOIN per collegare le tabelle, mentre i database di documenti spesso incorporano dati correlati all'interno di un singolo documento per un accesso più rapido
  • Scalabilità: i database relazionali sono più facili da scalare verticalmente, aggiungendo più risorse a un singolo server, ma richiedono meccanismi complessi per la scalabilità orizzontale. I database di documenti sono progettati per la scalabilità orizzontale su più server
  • Flessibilità: i database di documenti si adattano senza sforzo ai modelli dei dati in continua evoluzione, mentre i database relazionali richiedono uno sforzo significativo per modificare gli schemi

Le applicazioni di grandi dimensioni e complesse, come i videogiochi, possono essere create su un database di documenti e su un database relazionale, con ciascuno che memorizza porzioni diverse dei dati.

Database di documenti e archivi chiave-valore

Sia i database di documenti che gli archivi di coppie chiave-valore sono database NoSQL, ma hanno scopi diversi in base al modo in cui gestiscono i dati.

Database di documenti: i database di documenti estendono il concetto di coppie chiave-valore. I documenti possono includere dati nidificati e i database di documenti offrono maggiore flessibilità nell'indicizzazione di questi dati per consentire l'esecuzione di query efficienti sui valori dei dati nidificati. Questa struttura consente ai database di documenti di gestire set di dati diversi e supportare query avanzate.

Archivi di coppie chiave-valore: questi database utilizzano una struttura semplice di chiavi e valori. Ogni chiave è univoca e punta direttamente al suo valore. Questa semplicità rende gli archivi di coppie chiave-valore estremamente veloci per le ricerche, ma non sono ideali per la gestione di dati complessi o gerarchici, poiché non utilizzano linguaggi di query sofisticati.

Quando utilizzare ciascun elemento:

  • Scegli un archivio di coppie chiave-valore per strutture di dati semplici come la gestione delle sessioni utente o la memorizzazione nella cache, dove le ricerche rapide sono essenziali
  • Scegli un database di documenti per applicazioni con strutture di dati complesse ed evolutive, come la gestione di cataloghi dei prodotti o profili utente

Domande frequenti sui database di documenti

Firestore è un database di documenti serverless completamente gestito di Google Cloud. Consente di archiviare i dati in documenti flessibili e si integra perfettamente con altri servizi Google Cloud per una soluzione solida e scalabile.

La differenza sta nella struttura e nella flessibilità. I database SQL, come Cloud SQL o Cloud Spanner, utilizzano tabelle rigide con righe e colonne. I database di documenti, come Firestore, archiviano i dati in documenti flessibili di tipo JSON, consentendo alla struttura di evolversi senza interrompere lo schema.

Vantaggi dell'utilizzo di un database di documenti

I database di documenti sono strumenti potenti per la gestione delle moderne esigenze di dati. Ecco alcuni vantaggi chiave:

Flessibilità

Grazie ai loro schemi dinamici, i database di documenti possono essere utili per le applicazioni in cui i modelli di dati cambiano frequentemente.

Prestazioni

L'indicizzazione integrata e i pattern di accesso ai dati efficienti rendono veloci i database di documenti, anche quando si gestiscono set di dati di grandi dimensioni o complessi.

Scalabilità

Con la scalabilità orizzontale, puoi aggiungere più server man mano che i tuoi dati crescono, garantendo prestazioni coerenti per le applicazioni in crescita. I database di documenti possono anche essere scalati verticalmente aggiungendo potenza di calcolo a ciascun nodo.

Esperienza di sviluppo

Puoi mappare i documenti JSON agli oggetti all'interno del database utilizzando una sintassi che gli sviluppatori conoscono bene. Aggiorna i documenti direttamente all'interno del codice.

Versatilità dei dati

I database di documenti sono eccellenti nell'archiviazione, nella gestione e nell'esecuzione di query su vari tipi di dati, tra cui informazioni non strutturate e semistrutturate e metadati associati a file come immagini e video.

Scegli Firestore per le esigenze del tuo database di documenti

Firestore è un database di documenti completamente gestito che riduce le complessità della gestione di database. Ti consente di sfruttare tutta la potenza di Google Cloud e della sua piattaforma scalabile a livello globale.

Che tu stia creando una piccola app o scalando una piattaforma globale, le funzionalità di Firestore sono progettate per aiutarti a muoverti più velocemente mantenendo flessibilità e prestazioni.

  • Architettura serverless: Firestore è serverless, il che significa che non è necessario configurare o gestire alcuna infrastruttura. Si adatta automaticamente per gestire i carichi di dati, da zero a milioni di connessioni simultanee.
  • Integrazione con i servizi Google Cloud: connettiti facilmente ad altri servizi Google Cloud come Cloud Functions, Cloud Run e BigQuery. Ciò consente di creare pipeline di elaborazione e analisi dei dati potenti senza configurazioni complesse.
  • Compatibilità con MongoDB: utilizza driver, strumenti e codice MongoDB per connetterti direttamente a Firestore. Ciò rende incredibilmente semplice la migrazione di applicazioni esistenti o l'avvio di nuovi progetti con pattern familiari.
  • Aggiornamenti in tempo reale: mantieni i tuoi utenti connessi con la sincronizzazione dei dati in tempo reale, integrata direttamente nella piattaforma.
  • Scalabilità globale: gestisci la crescita senza sforzo grazie alla capacità di Firestore di scalare orizzontalmente, garantendo al contempo un accesso a bassa latenza per gli utenti di tutto il mondo.
  • A misura di sviluppatore: concentrati sulla creazione di funzionalità innovative senza preoccuparti dell'infrastruttura o della manutenzione. Il servizio completamente gestito di Firestore si occupa del lavoro più pesante.
  • Livello senza costi per un utilizzo limitato: Firestore offre un livello senza costi generoso, che lo rende ideale per le startup o i progetti più piccoli che vogliono scalare man mano che crescono senza costi iniziali.

In quanto parte di Google Cloud e Firebase, Firestore si integra per potenziare le tue applicazioni con semplici integrazioni con Firebase Auth, BigQuery e molti altri servizi. Dagli strumenti di collaborazione in tempo reale alle app mobile e alle piattaforme aziendali, Firestore fornisce gli strumenti necessari per avere successo.

Inizia oggi stesso con un livello senza costi disponibile per un utilizzo limitato e scopri i vantaggi di un database di documenti potente, affidabile e scalabile.

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.

Risorse aggiuntive

  • Cos'è un database relazionale? Scopri le nozioni di base sui database relazionali, tra cui come strutturano i dati in righe e colonne e quando utilizzarli per un'elevata coerenza
  • Che cos'è un database NoSQL? Esplora i diversi tipi di database NoSQL, come gli archivi di coppie chiave-valore, di documenti e a colonne larghe, e scopri come gestiscono i dati non strutturati
  • Inizia a utilizzare Firestore: segui questa guida per configurare il tuo primo database Firestore, aggiungere dati e iniziare a creare applicazioni scalabili su Google Cloud

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud