GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Che cos'è il database NoSQL? – Spiegazione di NoSQL

Introduzione

La necessità di acquisire ed elaborare big data è la principale forza trainante alla base della popolarità del database NoSQL. I dati archiviati devono essere accessibili in qualsiasi momento, da qualsiasi luogo e su qualsiasi dispositivo. Un modo per soddisfare la crescente domanda è aumentare e acquistare un server più grande. Tuttavia, è più efficiente scalare in orizzontale e utilizzare un cluster di server su richiesta.

Il modello di database relazionale non è adatto per un sistema distribuito su più macchine. I database NoSQL forniscono una soluzione praticabile concentrandosi su prestazioni e disponibilità, sacrificando anche parte della coerenza solitamente identificata con i database relazionali.

Oltre a rispondere alla domanda "Cos'è NoSQL ", questo tutorial utilizza esempi semplici per evidenziare concetti, funzionalità e tipi di NoSQL di base .

Cos'è NoSQL? (Definizione NoSQL)

NoSQL (Not SQL o Not Only SQL) è un termine generico utilizzato per i database che non dipendono da un modello relazionale. Non è necessario che i dati abbiano uno schema rigoroso né la consueta struttura di tabelle SQL. Nella maggior parte dei casi, i dati vengono aggregati come coppie chiave-valore, documenti JSON, grafici, o tabelle a colonne larghe.

Utilizzando i database NoSQL, puoi archiviare immensi volumi di dati non strutturati man mano che arrivano e strutturarli in un secondo momento. Come previsto, questo porta a un throughput, velocità di lettura/scrittura molto migliori e ti consente di scalare i server orizzontalmente.

I database non relazionali, se applicati nel giusto ambiente di utilizzo, apportano vantaggi significativi in ​​termini di prestazioni e flessibilità. Tuttavia, non applicare uno schema al punto di ingresso dei dati significa anche che è più difficile interrogare i database NoSQL, mantenere la coerenza dei dati e stabilire relazioni tra i set di dati.

Come funziona NoSQL

L'idea di base alla base di NoSQL è ottimizzare le prestazioni del database per il ridimensionamento orizzontale, grandi volumi di dati e bassa latenza rinunciando ad alcune restrizioni di coerenza dei dati presenti negli RDBMS. Invece di modelli di dati rigidi come tabelle, colonne o righe, i database NoSQL offrono modelli flessibili. Nei casi d'uso che non richiedono coerenza relazionale, questi modelli aiutano i NoSQL a funzionare meglio dei database relazionali.

Caratteristiche dei database NoSQL

I database NoSQL sono strutturalmente diversi e offrono vari modelli di archiviazione dei dati. Esistono, tuttavia, diversi attributi comuni che distinguono NoSQL dai database relazionali.

Schema in lettura

Un database NoSQL ti consente di archiviare i dati prima di applicare una struttura o schema .

Lo schema viene applicato dal codice dell'applicazione solo quando accede ai dati. Questo processo viene spesso definito schema in lettura . Non strutturando i dati in anticipo, i database NoSQL possono scrivere e leggere enormi volumi di dati significativamente più velocemente di quanto possa fare un database relazionale.

NoSQL vs database relazionali

Al contrario, un modello relazionale SQL struttura i dati in entrata prima che vengano scritti in un database. La progettazione di schemi predefiniti viene utilizzata per classificare in anticipo tutti i possibili tipi di dati. Lo schema viene applicato su tutta la linea poiché i dati sono strutturati e archiviati all'interno di tabelle, colonne e righe.

La rigida struttura tabellare è un vantaggio quando si stabiliscono relazioni tra tabelle ed elementi di database. La coerenza e l'integrità dei dati sono garantite dal rispetto di questo schema.

Modello di dati non relazionali

I database NoSQL non stabiliscono relazioni tra i singoli record. Un record viene in genere archiviato come un singolo documento JSON e replicato su più nodi in un cluster.

Useremo un semplice esempio che coinvolge i dati sui gruppi musicali. In un modello non relazionale, il BandID , Nome della band , Paese , Genere , Etichetta , ID album , Nome album, e Data di rilascio gli attributi sono memorizzati in una singola Radiohead documento. Se hai bisogno di trovare la data di uscita dell'album dei Radiohead, OK Computer , la risposta è fulminea. La query fornisce risultati molto più rapidamente in quanto non ha bisogno di recuperare informazioni da più tabelle (come nei database relazionali), ma piuttosto da una singola voce.

I dati aggregati in un record non possono essere correlati ai dati aggregati in un altro record. Ogni record rilevante nel database deve essere aggiornato se si desidera aggiungere un attributo come un servizio di streaming. I database NoSQL sono quindi più adatti per grandi volumi di dati che non devono essere strutturati o correlati in un secondo momento.

BASE vs ACIDO

Un database deve annullare un'operazione e garantire la coerenza dei dati in caso di guasto della rete? Oppure i database dovrebbero rischiare incoerenze dei dati per garantire un'elevata disponibilità?

L'obiettivo principale di NoSQL è mantenere la disponibilità offrendo un'eventuale coerenza. Eventuale coerenza fa parte della semantica BASE. BASE afferma che una volta che i dati sono stati scritti, alla fine verranno visualizzati per la lettura. Senza forti garanzie, hai solo una probabilità limitata di conoscere lo stato attuale, poiché potrebbe non essere ancora convergente. Se il sistema funziona e aspetti abbastanza a lungo dopo un determinato set di input, alla fine conoscerai il vero stato del database.

Lo svantaggio è che i dati potrebbero non persistere dopo la riconciliazione dei conflitti. Una lettura potrebbe non ricevere l'ultima scrittura per un periodo sconosciuto. Un post di Facebook che non viene visualizzato per alcuni minuti è accettabile, ma non essere in grado di vedere subito una transazione finanziaria è un problema significativo.

ACID

  • A tomicità. Solo i dati specificati sono interessati da un'operazione.
  • C onsistenza. Ogni operazione sposta il database da uno stato coerente a un altro stato coerente.
  • Io conforto. Un'operazione non ha effetto su altre operazioni simultanee.
  • D urabilità. I dati non vanno persi a seguito di una transazione andata a buon fine.

BASE

  • B asicamente A disponibile. Le operazioni di scrittura e lettura sono il più possibile disponibili ma senza alcuna garanzia rigorosa.
  • S spesso Stato. Senza garanzie, non sappiamo, ma ci aspettiamo che i dati alla fine diventino coerenti.
  • E eventuale coerenza. Se il sistema è completamente funzionante ed è trascorso un periodo sufficientemente lungo, alla fine conosceremo il vero stato del database.

I database relazionali si concentrano sulla coerenza come la caratteristica più importante da mantenere. La coerenza la proprietà di un database garantisce che se scrivi un record in un database e quindi richiedi immediatamente quel record, sei sicuro di vederlo. Il set di proprietà ACID, applicato dai database relazionali, significa che una volta che i dati sono stati scritti, hai piena coerenza nelle letture.

Scopri di più sui due modelli di transazione di database più popolari e sulle loro differenze nell'articolo ACID e BASE.

Ridimensionamento orizzontale

Le aziende hanno trovato modi efficaci per incassare i dati. La rapida crescita del volume, della velocità e della varietà di tali dati ha portato all'aumento dei database NoSQL.

I principali siti Web e piattaforme online dovevano superare alcuni dei limiti dei database relazionali, come le velocità di lettura/scrittura e la necessità di normalizzare i dati in anticipo. Una limitazione significativa è la rigidità del modello relazionale quando si tratta di ridimensionare. In un modello relazionale, i dati in genere non sono partizionati o segregati. Al contrario, è concentrato su un singolo nodo e i database possono essere ampliati solo aumentando la potenza dell'hardware esistente.

I database NoSQL sono progettati per funzionare in modo efficiente su sistemi distribuiti che si ridimensiona rapidamente orizzontalmente. Un sistema distribuito ha l'ulteriore vantaggio di fornire un'elevata disponibilità costante. Più repliche di un record vengono conservate su server e rack e il guasto dell'hardware non influisce sulla disponibilità dei dati. Puoi utilizzare in sicurezza hardware di base invece di costosi server di fascia alta per gestire carichi di dati vertiginosi.

Tipi di database NoSQL

I modelli di database non relazionali possono essere classificati in linea di massima in quattro categorie.

  • Un negozio chiave-valore consente di archiviare qualsiasi tipo di dato sotto una chiave univoca.
  • Un database di documenti utilizza un approccio simile aggregando diversi tipi di dati all'interno di un singolo documento JSON o XML.
  • Basato su colonne le basi memorizzano i dati in una colonna a tua scelta.
  • I database di grafici stabiliscono bordi e proprietà per i nodi che rappresentano elementi di dati.

Database valori-chiave

I database chiave-valore, a volte indicati come archivi chiave-valore, utilizzano il modello di dati più semplice:l'associazione di una chiave e un valore. Un'applicazione recupera il valore utilizzando la chiave univoca.

Il valore può contenere qualsiasi struttura o tipo di dati. Spetta all'applicazione tentare di accedere ai dati per comprenderne il contenuto.

Esempi di database chiave-valore includono Redis, Riak , Aerospike e Oracle NoSQL .

Database basati su colonne

I database basati su colonne si concentrano sull'efficienza delle operazioni di lettura. Se hai bisogno di leggere rapidamente più colonne di più righe, ha senso organizzare i dati in gruppi di colonne (ad esempio, famiglie di colonne).

La struttura del modello è costituita da un identificatore di riga che definisce i dati aggregati e l'aggregato di righe composto da valori di livello secondario più dettagliati (ad esempio, colonne ).

Cassandra , HBase , Amazon DynamoDB e Clickhouse , sono alcune delle soluzioni basate su colonne ampiamente utilizzate.

Banca dati dei documenti

I database dei documenti archiviano dati parzialmente strutturati nei documenti, utilizzando JSON, BSON, XML o altri formati. I dati all'interno del documento sono semi-strutturati per fornire maggiore flessibilità durante l'esecuzione di query. A differenza degli archivi chiave-valore di base, l'utente non ha bisogno di recuperare l'intero record, ma solo la parte rilevante del documento.

I documenti rivolti al Web, i commenti degli utenti e le app di pubblicazione sul Web beneficiano tutti di questo modello di dati. NoSQL basati su documenti famosi sono MongoDB , OrientDB , Apache CouchDB e MarkLogic .

Database di grafici

I database Graph organizzano i dati in nodi, con Edge che stabiliscono relazioni tra questi nodi di dati.

Questo modello di archiviazione dei dati si è rivelato utile in applicazioni che enfatizzano le relazioni, come piattaforme di social media, software per le relazioni con i clienti e sistemi di viaggio e prenotazione.

OrientDB e MarkLogic basati su documenti possono funzionare come database di grafici. Grafico Janus , RedisGraph e Neo4j sono soluzioni popolari basate su grafici.

Vantaggi NoSQL

  • Prestazioni – I database NoSQL offrono prestazioni migliori nei casi d'uso che trattano dati non altamente relazionali. Un NoSQL si aspetta uno schema denormalizzato e ottimizza le letture di conseguenza.
  • Flessibilità – Lo schema dinamico di NoSQL facilita l'archiviazione di dati non strutturati in modi ottimali per un caso specifico. Consente la creazione di documenti senza definirne la struttura.
  • Scalabilità – Sebbene sia possibile ridimensionare verticalmente gli RDBMS aggiornando la memoria, l'archiviazione o la potenza di elaborazione della macchina, NoSQL offre il vantaggio aggiuntivo del ridimensionamento orizzontale. Ciò significa che è possibile gestire un aumento del traffico aggiornando il database con server aggiuntivi.

Quando usare NoSQL?

Cercare di applicare un'unica soluzione di database per ogni possibile scenario non è una buona idea. I diversi tipi di database trattati in questo articolo sono progettati per gestire problemi di dati specifici. Questo non è limitato ai database NoSQL. Anche i database relazionali faticano a standardizzare vari tipi di dati in uno schema rigoroso.

Il funzionamento interno dei database relazionali è ben documentato e prevedibile. Il linguaggio SQL e l'insieme di strumenti creati utilizzando la tecnologia relazionale sono onnipresenti, con personale esperto prontamente disponibile. Il modello di database relazionale ti consente di accedere ai dati in molti modi diversi e creativi e non essere limitato dal modo in cui i dati vengono archiviati.

Big Data

I big data e il valore nel catturarne quanto più tecnicamente possibile non sono un carico di lavoro adatto per il modello relazionale. Un database NoSQL che non utilizza uno schema rigoroso è una scelta eccellente per archiviare grandi quantità di dati assortiti e non strutturati.

Sviluppo software

Lo sviluppo di applicazioni ha beneficiato notevolmente dei database NoSQL. Molte preziose ore di sviluppo sono state sprecate per mappare i dati tra le strutture di dati in memoria e un database relazionale. Un database NoSQL significa che crei il tuo modello, uno su misura per soddisfare le esigenze dell'applicazione che vi accede e possibilmente ridurre la quantità richiesta di codifica.

Se un database non dispone di uno schema, significa che l'applicazione che accede ai dati deve averne uno. Questo può diventare rapidamente un problema se più di un'applicazione, sviluppata indipendentemente l'una dall'altra, deve accedere allo stesso database.

Le incoerenze nelle letture vengono infine risolte, ma la mancanza di coerenza nelle scritture è un problema serio. Questo problema viene spesso risolto limitando tutte le interazioni del database all'interno di una singola applicazione e integrandola con altre applicazioni utilizzando i servizi Web. Questa soluzione si sposa bene con la tendenza generale a utilizzare i servizi web a fini di integrazione.


Ubuntu
  1. Tipi di database NoSQL

  2. SQL vs NoSQL:qual è la differenza?

  3. Spiegazione dell'architettura del data warehouse

  4. Che cos'è un database relazionale?

  5. Database NoSQL distribuito Elasticsearch:cos'è e dovresti usarlo?

Che cos'è un database OLTP?

Che cos'è la denormalizzazione del database?

Che cos'è la normalizzazione del database?

Che cos'è un database?

Spiegazione dei server Big Data

Che cos'è un database distribuito e a cosa servono i sistemi di dati distribuiti?