Un database di documenti è un tipo di database NoSQL che può essere utilizzato per archiviare e interrogare dati come documenti di tipo JSON. JavaScript Object Notation (JSON) è un formato di interscambio di dati aperto che è leggibile sia dall'uomo che dalla macchina. Gli sviluppatori possono utilizzare documenti JSON nel loro codice e salvarli direttamente nel database di documenti. La natura gerarchica, semistrutturata e flessibile dei documenti e dei database di documenti, gli permette di evolversi in base alle esigenze delle applicazioni.

Database di documenti JSON
Query del database di documenti JSON

Quali sono i vantaggi dei database di documenti

I database di documenti consentono un'indicizzazione flessibile, potente e ricerche ad hoc e analytics su raccolte di documenti. Scopri i vantaggi di seguito.

Facilità di sviluppo

I documenti JSON vengono mappati agli oggetti, un tipo di dati comune nella maggior parte dei linguaggi di programmazione. Durante la creazione di applicazioni, gli sviluppatori possono creare e aggiornare documenti in modo flessibile direttamente dal codice. Ciò significa che dedicano meno tempo alla creazione preventiva di modelli di dati. Pertanto, lo sviluppo delle applicazioni è più rapido ed efficiente.

Schema flessibile

Un database orientato ai documenti consente di creare più documenti con campi diversi all'interno della stessa raccolta. Questo può essere utile quando si archiviano dati non strutturati come e-mail o post sui social media. Tuttavia, alcuni database di documenti offrono la convalida dello schema, quindi è possibile imporre alcune restrizioni alla struttura.

Prestazioni su larga scala

I database di documenti offrono funzionalità di distribuzione integrate. È possibile dimensionarli orizzontalmente su più server senza influire sulle prestazioni, il che è anche conveniente. Inoltre, i database di documenti offrono tolleranza agli errori e disponibilità attraverso la replica integrata.

Quali sono i casi d'uso dei database di documenti

Il modello di documento funziona bene con casi d'uso come la gestione dei contenuti, i cataloghi, la gestione dei sensori e altro ancora. Per ogni caso d'uso, ogni documento è unico e si evolve nel tempo.

Gestione dei contenuti

Un database di documenti rappresenta una scelta eccellente per le applicazioni di gestione dei contenuti come blog o piattaforme video. Nei database di documenti, ogni entità di cui l’applicazione tiene traccia può essere archiviata come singolo documento. Nei database di documenti, gli sviluppatori possono aggiornare le applicazioni al variare delle richieste in maniera più intuitiva. Inoltre, se i modelli di dati devono essere cambiati, è necessario aggiornare solo i documenti interessati. L’aggiornamento degli schemi e l’inattività temporanea del database non sono necessari per apportare i cambiamenti.

Cataloghi

I database di documenti sono soluzioni efficaci per archiviare e catalogare le informazioni. Ad esempio, in un’applicazione di e-commerce, a prodotti differenti corrispondono quantità differenti di attributi. La gestione di migliaia di attribuiti attraverso un database relazionale non è efficace e la lettura risulta meno agevole. Nei database di documenti, gli attributi di ogni prodotto possono essere descritti in un unico documento favorendo la gestione e la velocità di lettura. Cambiare gli attributi di un prodotto non avrà conseguenze sugli altri.

Gestione dei sensori IoT

L'Internet delle cose (IoT) ha portato le organizzazioni a raccogliere regolarmente dati da dispositivi intelligenti come sensori e contatori. I dati dei sensori in genere arrivano come un flusso continuo di valori variabili. A causa di problemi di latenza, alcuni oggetti dati potrebbero essere incompleti, duplicati o mancanti. Inoltre, è necessario raccogliere un grande volume di dati prima di poterli filtrare o riepilogare per l'analisi.

Gli archivi di documenti sono più convenienti in questo caso. È possibile archiviare rapidamente i dati del sensore così come sono, senza pulirli o renderli conformi a schemi predeterminati. Puoi anche dimensionarlo secondo necessità ed eliminare interi documenti una volta completata l'analisi.

Come funzionano i database di documenti

I database di documenti archiviano i dati come coppie chiave-valore in formato JSON. È possibile leggere e scrivere documenti JSON nei database a livello di codice.

Struttura dei documenti JSON

JSON rappresenta i dati in tre modi:

Chiave-valore

Le coppie chiave-valore vengono registrate all'interno di parentesi graffe. La chiave è una stringa e il valore può essere qualsiasi tipo di dati come intero, decimale o booleano. Ad esempio, una coppia chiave-valore semplice è {"year": 2013}.

Array

Un array è una raccolta ordinata di valori definiti tra parentesi quadre sinistra ([) e destra (]). Gli elementi dell'array sono separati da virgole. Ad esempio, {"fruit": ["apple","mango"]}.

Oggetti

Un oggetto è un insieme di coppie chiave-valore. In sostanza, i documenti JSON consentono agli sviluppatori di incorporare oggetti e creare coppie annidate. Ad esempio, {"address": {"country": "USA","state": "Texas"}}.

Esempio di documenti JSON

Nell'esempio che segue, un documento di tipo JSON descrive un set di dati di un film.

[
    {
        "year" : 2013,
        "title" : "Turn It Down, Or Else!",
        "info" : {
            "directors" : [ "Alice Smith", "Bob Jones"],
            "release_date" : "2013-01-18T00:00:00Z",
            "rating" : 6.2,
            "genres" : ["Comedy", "Drama"],
            "image_url" : "http://ia.media-imdb.com/images/N/O9ERWAU7FS797AJ7LU8HN09AMUP908RLlo5JF90EWR7LJKQ7@@._V1_SX400_.jpg",
            "plot" : "A rock band plays their music at high volumes, annoying the neighbors.",
            "actors" : ["David Matthewman", "Jonathan G. Neff"]
        }
    },
    {
        "year": 2015,
        "title": "The Big New Movie",
        "info": {
            "plot": "Nothing happens at all.",
            "rating": 0
        }
    }
]

Puoi osservare che il documento JSON contiene valori, array e oggetti semplici in modo abbastanza flessibile. Puoi persino avere un array con oggetti JSON al suo interno. Pertanto, i database orientati ai documenti consentono di creare una gerarchia di livelli illimitati di oggetti JSON incorporati. Dipende interamente da te quale schema vuoi assegnare al tuo archivio documenti.

Operazioni del database di documenti

È possibile creare, leggere, aggiornare ed eliminare interi documenti archiviati nel database. I database di documenti forniscono un linguaggio di interrogazione o un'API che consente agli sviluppatori di eseguire le seguenti operazioni:

Creazione

È possibile creare documenti nel database. Ogni documento ha un identificatore univoco che funge da chiave.

Lettura

È possibile utilizzare l'API o il linguaggio di interrogazione per leggere i dati del documento. È possibile eseguire query utilizzando valori di campo o chiavi. È inoltre possibile aggiungere indici al database per aumentare le prestazioni di lettura.

Aggiornamento

È possibile aggiornare i documenti esistenti in modo flessibile. È possibile riscrivere l'intero documento o aggiornare singoli valori.

Differenza tra database di documenti e archivi chiave-valore

Un database chiave-valore è un database non relazionale che immagazzina i dati mediante un semplice metodo chiave-valore. Archivia i dati come una raccolta di coppie chiave-valore in cui una chiave funge da identificatore univoco. Le chiavi e i valori possono essere qualsiasi cosa, da un oggetto semplice ad articolati oggetti composti.

Un database orientato ai documenti è un tipo speciale di archivio chiave-valore in cui le chiavi possono essere solo stringhe. Inoltre, il documento è codificato utilizzando standard come JSON o linguaggi correlati come XML. Puoi anche archiviare PDF, file di immagini o documenti di testo direttamente come valori.

Quando interroghi il tuo archivio documenti, puoi leggere il valore o una parte di un valore, specialmente se il valore è un altro oggetto JSON. Ad esempio, puoi avere {"book": {"id": 1,"price": $10}}, quindi interrogare book.price e il database restituirà il valore 10. I database chiave-valore restituiscono sempre l'intero valore con informazioni sull'ID e sul prezzo.

Come AWS può supportare i requisiti inerenti ai database di documenti

Amazon DocumentDB (compatibile con MongoDB) è un servizio di database di documenti JSON nativo completamente gestito che supporta carichi di lavoro relativi a documenti, incluso MongoDB. Gli sviluppatori possono usare lo stesso codice di applicazione, gli stessi driver e strumenti MongoDB che usano per eseguire, gestire e suddividere i carichi di lavoro su Amazon DocumentDB. Puoi trarre vantaggio da prestazioni, scalabilità e disponibilità migliorate senza la preoccupazione di gestire l'infrastruttura sottostante. Con Amazon DocumentDB puoi:

  • Scalare fino a milioni di richieste di lettura e scrittura al secondo con cluster elastici di Amazon DocumentDB, con un impatto minimo o nullo sulle prestazioni e nessuna gestione dell'infrastruttura sottostante.
  • Archiviare ed elaborare in maniera disaccoppiata per aumentare le prestazioni di lettura con un massimo di 15 repliche di lettura che condividono lo stesso spazio di archiviazione sottostante, senza dover eseguire scritture sui nodi di replica.
  • Automatizza le attività manuali indifferenziate di gestione dei database senza costi di licenza, tra cui il provisioning dell'hardware, l'applicazione di patch, la configurazione e altro ancora.
  • Ottieni un'elevata disponibilità del 99,99% migliorata con i cluster globali di Amazon DocumentDB per applicazioni distribuite a livello globale che supportano prestazioni di lettura locale veloci. 
  • Raggiungi il 99,99% di durabilità con la replica automatica, il backup continuo e lo stretto isolamento della rete.
  • Altamente affidabile e durevole con spazio di archiviazione con tolleranza ai guasti e riparazione automatica, ripristino point-in-time, backup continui e altro ancora. Amazon DocumentDB rende i tuoi dati durevoli su tre AZ all'interno di una regione replicando nuove scritture in sei modi e pagando solo una copia.
  • Altamente sicuro con crittografia predefinita a riposo, isolamento della rete e controllo avanzato, offrendo al contempo la possibilità di controllare le autorizzazioni a livello di risorsa con accesso granulare.
  • Ampia copertura di conformità che include SOC (1, 2 e 3), PCI DSS, idoneità HIPAA e altro ancora.

Inizia a usare i database di documenti su AWS creando un account gratuito oggi stesso!

Modellazione dei dati con Amazon DocumentDB
Introduzione ai cluster elastici di Amazon DocumentDB