Un confronto tra modelli e DBMS NoSQL

21 febbraio 2014 NoSQL , MongoDB

Introduzione

I database NoSQL provano ad offrire alcune funzionalità che i tradizionali sistemi di gestione di database relazionali non hanno. Sia che si tratti di memorizzare semplici coppie chiave-valore per brevi istanti di tempo a scopo di caching, o mantenere insiemi non strutturati (ad esempio collezioni) di dati che non possono essere gestiti facilmente usando i database relazionali e l’SQL, i database NoSQL sono qui per aiutarvi.

In questo articolo di DigitalOcean, si cercherà di farvi conoscere vari popolari DBMS NoSQL e spiegarvi il loro scopo e le loro funzionalità, in modo che possiate decidere quale usare, oppure se soddisfano le esigenze della vostra applicazione – a tutti i costi.

Glossario

  1. Sistemi di gestione di basi di dati

  2. Sistemi di gestione di database NoSQL

    1. Basati su chiave / valore
    2. Basati su colonne
    3. Basati su documenti
    4. Basati su grafici
  3. Sistemi di gestione di database NoSQL basati su chiave / valore

    1. I più diffusi database basati su chiave / valore
    2. Quando vanno usati
  4. Sistemi di gestione di database NoSQL basati su colonne

    1. I più diffusi database basati su colonne
    2. Quando vanno usati
  5. Sistemi di Gestione di database NoSQL basati su documenti

    1. I più diffusi database basati su documenti
    2. Quando vanno usati
  6. Sistemi di gestione di database NoSQL basati su grafici

    1. I più diffusi database basati su grafici
    2. Quando vanno usati
  7. Confronto tra DBMS NoSQL e DBMS relazionali

    1. Quando usare i database NoSQL

Sistemi di gestione di basi di dati

I database sono spazi di immagazzinamento per ogni differente tipo di informazione (i dati), modellati con una determinata logica. Ogni database, a differenza di quelli senza schema, hanno un modello che fornisce la struttura per trattare i dati. I sistemi di gestione di basi di dati (DBMS) sono applicazioni (o librerie) che gestiscono banche dati di varie forme, dimensioni e tipo.

Nota: Per ulteriori informazioni sui DBMS, date un’occhiata all’articolo: Comprendere i database [sic!].

Sistemi di gestione di database NoSQL

Negli ultimi dieci anni circa, i sistemi di gestione di database relazionali sono stati la scelta di molti sviluppatori e amministratori di sistema per una varietà di applicazioni, per una molteplicità di ragioni. Pur non essendo esattamente flessibili, la potente natura di molti RDBMS ha permesso che siano potuti essere creati, interrogati e utilizzati molti complessi database. Ciò è stato più che sufficiente per soddisfare un sacco di requisiti, dato che la quantità di tali requisiti ha avuto un incremento recente.

Il termine “NoSQL” fu coniato più di un decennio fa, curiosamente come fosse il nome di ancora-un-altro database relazionale. Tuttavia, questo database si basò su un’idea diversa: eliminare l’uso dell’SQL standardizzato. Negli anni successivi, quest’idea è stata raccolta e fatta evolvere, riferendosi così ai vari altri database non relazionali come database NoSQL.

Per come sono stati progettati, i database e i sistemi di gestione NoSQL sono privi di relazioni (privi di schema). Non si basano su un unico modello (ad esempio il modello relazionale degli RDBMS) ed ogni database, a seconda della sua precisa funzione, ne adotta uno diverso.

Per i database NoSQL vi sono una manciata di modelli operativi e sistemi diversi:

      • Chiave / valore:

ad esempio Redis, MemcacheDB, ecc.

      • Colonne:

ad esempio Cassandra, HBase, ecc.

      • Documenti:

ad esempio MongoDB, Couchbase, ecc.

      • Grafici:

ad esempio OrientDB, Neo4j, ecc.

Al fine di comprendere meglio i ruoli e la tecnologia alla base di ogni sistema di gestione di basi di dati, cerchiamo di dare una rapida scorsa a questi quattro modelli operativi.

Basati su chiave / valore

Inizieremo il nostro viaggio nella realizzazione del modello NoSQL con i database basati su chiave / valore  semplicemente perché possono essere considerati l’implementazione più semplice e la colonna portante di NoSQL.

Questi tipi di database funzionano facendo corrispondere le chiavi con i valori, in maniera simile ad un dizionario. Non vi è alcuna struttura né relazione. Dopo la connessione al server del database (ad esempio Redis), un’applicazione può dichiarare una chiave (ad esempio la_risposta_alla_vita ) e fornire un valore corrispondente (ad esempio 42 ), che in seguito può essere recuperato allo stesso modo fornendo la chiave.

I DBMS chiave / valore sono utilizzati di solito per memorizzare rapidamente informazioni elementari, e talvolta quelle “non così elementari” dopo, per esempio, un’elaborazione che ha richiesto molta memoria e potenza di calcolo. Sono estremamente performanti, efficienti e di solito facilmente scalabili.

Nota: un dizionario, nell’ambito dei computer, di solito si riferisce ad un tipo speciale di oggetto costituito da dati. Tali dati sono fatti da array di insiemi con singole chiavi che corrispondono a dei valori.

Basati su colonne

I sistemi di gestione di database NoSQL basati su colonne si realizzano tramite un’evoluzione dei semplici database basati su chiave / valore.

Malgrado su internet abbiano una fama da “complicati da capire”, questi database funzionano in modo molto semplice creando collezioni di una o più coppie chiave / valore che corrispondono ad un record.

A differenza della tradizionale definizione degli schemi dei database relazionali, per operare sui dati le soluzioni NoSQL basate su colonne non richiedono una tabella pre-strutturata. Ogni record è dotato di una o più colonne contenenti le informazioni ed ogni colonna di ogni record può essere differente.

In sostanza, i database NoSQL basati su colonne sono due array bidimensionali in cui ogni chiave (ad esempio riga / record) ha una o più coppie chiave / valore collegate ad essa; questi sistemi di gestione permettono di memorizzare ed usare insiemi di dati molto grandi e poco strutturati (ad esempio un record con tonnellate di informazioni).

Questi database sono comunemente usati quando le semplici coppie chiave / valore non sono sufficienti, e si necessita la memorizzazione di un gran numero di record con un gran numero di informazioni. L’implementazione dei DBMS basati su colonne, con un modello senza schema, è in grado di scalare molto bene.

Basati su documenti

I sistemi di gestione di database NoSQL basati su documenti possono essere considerati l’ultima mania che è riuscita a conquistare un sacco di persone. Questi DBMS funzionano in modo simile a quelli basati su colonne; tuttavia, permettono di realizzare strutture complesse e annidamenti molto più profondi (ad esempio un documento all’interno di un documento all’interno di un ulteriore documento).

I documenti superano i limiti di uno o due livelli della nidificazione chiave / valore dei database basati su colonne. Fondamentalmente, qualsiasi arbitraria struttura complessa può formare un documento, che può essere memorizzato utilizzando tali sistemi.

Nonostante la loro potenza e la possibilità di interrogare i record per singole chiavi, i DBMS basati su documenti hanno i loro problemi e svantaggi rispetto ad altri. Ad esempio, il recupero di un valore di un record fa sì che si ottenga l’intero record, e lo stesso vale per gli update; il tutto influisce sulle prestazioni.

Basati su grafici

Infine, il più entusiasmante dei DBMS NoSQL è quello dei sistemi basati su grafici.

I modelli di DBMS basati su grafici rappresentano i dati in un modo completamente diverso rispetto ai precedenti tre modelli. Usano strutture ad albero (cioè grafici) con i nodi e gli spigoli che collegano gli uni con gli altri attraverso le relazioni.

Analogamente alla matematica, alcune operazioni sono molto più semplici da eseguire utilizzando questo tipo di modelli, grazie alla loro capacità di collegare e raggruppare parti di informazioni correlate (ad esempio le parentele tra persone).

Questi database sono solitamente usati per le applicazioni in cui, per definire le connessioni, sono necessari dei limiti definiti. Ad esempio, quando ci si registra ad un qualunque social network, la connessione dei vostri amici a voi e la connessione a voi degli amici dei vostri amici è molto più facile da gestire con l’utilizzo di DBMS basati su grafici.

Sistemi di gestione di database NoSQL basati su chiave / valore

Gli archivi di dati basati su chiave / valore sono estremamente performanti, vi è facile lavorarci e di solito scalano bene.

Alcuni popolari archivi di dati basati su chiave / valore sono:

      • Redis:

Un archivio con chiave / valore in memoria, la persistenza è opzionale.

      • Riak:

Un archivio chiave / valore altamente distribuito e replicato.

      • Memcached / MemcacheDB:

Un archivio chiave / valore distribuito, basato sulla memoria.

Quando vanno usati

Ecco alcuni popolari casi d’uso di archivi di dati basati su chiave / valore:

      • Caching:

Memorizzazione rapida dei i dati per un loro, talvolta ricorrente, utilizzo futuro.

      • Queue-ing:

Alcuni archivi chiave / valore (ad es. Redis) supportano liste, insiemi, code ed altro ancora.

      • Distribuzione dell’informazione / dei task:

Possono essere usati per implementare il Pub/Sub [Publish/Subscribe, stile di architettura software per la comunicazione asincrona tra processi, oggetti, etc, NdT].

      • Mantenere informazioni in tempo reale:

Le applicazioni che hanno bisogno di mantenere uno stato possono usare agevolmente gli archivi chiave / valore.

Sistemi di gestione di database NoSQL basati su colonne

Gli archivi di dati basati su colonne sono estremamente potenti e possono essere usati in modo affidabile per conservare dati importanti di dimensioni molto grandi. Pur non essendo “flessibili” in termini di ciò che possono rappresentare come dati, sono estremamente funzionali e performanti.

Alcuni popolari archivi di dati basati su colonne sono:

      • Cassandra:

Un archivio di dati basato su colonne che si basa su BigTable e DynamoDB.

      • HBase:

Un archivio di dati per Apache Hadoop che si basa su idee prese da BigTable.

Quando vanno usati

Ecco alcuni popolari casi d’uso di archivi di dati basati su colonne:

      • Conservare informazioni non volatili e non strutturate:

Se si devono conservare grandi raccolte di attributi e di valori per lunghi periodi di tempo, gli archivi di dati basati su colonne si rivelano estremamente pratici.

      • Scalabilità:

Gli archivi di dati basati su colonne scalano molto bene per loro natura. Sono in grado di gestire una quantità impressionante di informazioni.

Sistemi di Gestione di database NoSQL basati su documenti

Gli archivi di dati basati su documenti sono perfetti per conservare tante informazioni complesse non correlate tra loro che possiedono un’estrema variabilità in termini di struttura una rispetto all’altra.

Alcuni popolari archivi di dati basati su documenti sono:

      • Couchbase:

Un archivio di dati basato su documenti che poggia su JSON ed è compatibile con Memcached.

      • CouchDB:

Un innovativo archivio di dati basato su documenti.

      • MongoDB:

Un database estremamente popolare ed altamente efficiente.

Quando vanno usati

Ecco alcuni popolari casi d’uso di archivi di dati basati su documenti:

      • Informazioni nidificate:

Gli archivi di dati basati su documenti consentono di lavorare con strutture dati complesse profondamente nidificate.

      • Facilità d’uso con JavaScript:

Una delle funzionalità più critiche degli archivi di dati basati su documenti è il loro modo di interfacciarsi con le applicazioni: usateli quando vi serve una facilità d’uso con JSON.

Sistemi di gestione di database NoSQL basati su grafici

Gli archivi di dati basati su grafici offrono una funzionalità molto particolare che non trova riscontro in altri DBMS.

Alcuni popolari archivi di dati basati su grafici sono:

      • OrientDB:

Un archivio di dati NoSQL ibrido basato su grafici e documenti, molto veloce e scritto in Java, che viene fornito con diverse modalità operative.

      • Neo4j:

Un archivio dati basato su grafici, senza schemi, molto potente e molto popolare, scritto in Java.

Quando vanno usati

Ecco alcuni popolari casi d’uso di archivi di dati basati su grafici:

      • Trattamento di informazioni relazionali complesse:

Come spiegato nell’introduzione, i database basati su grafici rendono estremamente efficiente e facile da gestire le informazioni complesse ma relazionali, come le connessioni tra due entità e i vari gradi di relazione tra altre entità indirettamente connesse ad esse.

      • Modellazione e gestione delle classificazioni:

I database basati su grafici eccellono in tutte le situazioni in cui sono coinvolte le relazioni. Modellare i dati e classificare le varie informazioni in un modo relazionale può essere gestito molto bene da questo tipo di archivio di dati.

Confrontro tra DBMS NoSQL e DBMS relazionali

Al fine di fare chiarezza su come le soluzioni NoSQL differiscono dai DBMS relazionali, ecco un confronto riassuntivo:

Quando usare i database NoSQL

      • Le dimensioni contano:

Se si lavora con insiemi di dati molto grandi, per molti DBMS della famiglia NoSQL la variazione delle dimensioni è più facile da ottenere.

      • Velocità:

I database NoSQL sono di solito più veloci – e a volte estremamente veloci – quando si tratta di scritture. Anche le letture possono essere molto veloci a seconda del tipo di database NoSQL e dei dati su cui si eseguono le query.

      • Design senza schema:

I DBMS relazionali richiedono una struttura fin dall’inizio. Le soluzioni NoSQL offrono una grande flessibilità.

      • Replicazioni / ridimensionamenti automatici (o semplici):

I database NoSQL sono in rapida crescita e al giorno d’oggi il loro sviluppo è molto attivo; i produttori stanno cercando di affrontare i problemi classici, tra i quali la replicazione ed il ridimensionamento. A differenza degli RDBMS, le soluzioni NoSQL possono facilmente scalare e lavorare con i (in) cluster.

      • Scelte multiple:

Quando si tratta di scegliere un archivio di dati NoSQL per ottenere il massimo dal DBMS si può optare, come detto, tra un assortimenti di modelli a seconda del tipo di dati.

Inserito da: O.S. Tezer
Facebooktwitterredditpinterestlinkedinmail

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

*