Tutorial NoSQL: cos'è, tipi di database NoSQL ed esempi
Cos'è NoSQL?
NoSQL Il database è un sistema di gestione dei dati non relazionale, che non richiede uno schema fisso. Evita i join ed è facile da scalare. Lo scopo principale dell'utilizzo di un database NoSQL è quello di archiviare dati distribuiti con enormi esigenze di archiviazione dei dati. NoSQL viene utilizzato per Big Data e app Web in tempo reale. Ad esempio, aziende come Twitter, Facebook e Google raccolgono terabyte di dati degli utenti ogni giorno.
Database NoSQL sta per "Non solo SQL" o "Non SQL". Anche se un termine migliore sarebbe “NoREL”, NoSQL ha preso piede. Carl Strozz ha introdotto il concetto NoSQL nel 1998.
L'RDBMS tradizionale utilizza la sintassi SQL per archiviare e recuperare i dati per ulteriori approfondimenti. Invece, un sistema di database NoSQL comprende un'ampia gamma di tecnologie di database in grado di archiviare dati strutturati, semi-strutturati, non strutturati e polimorfici. Comprendiamo NoSQL con un diagramma in questo tutorial sul database NoSQL:
Perché NoSQL?
Il concetto di database NoSQL è diventato popolare tra i giganti di Internet come Google, Facebook, Amazon, ecc. che trattano enormi volumi di dati. Il tempo di risposta del sistema diventa lento quando si utilizza RDBMS per enormi volumi di dati.
Per risolvere questo problema, potremmo “scalare” i nostri sistemi aggiornando l’hardware esistente. Questo processo è costoso.
L'alternativa a questo problema è distribuire il carico del database su più host ogni volta che il carico aumenta. Questo metodo è noto come “scalabilità orizzontale”.
Il database NoSQL non è relazionale, quindi è scalabile meglio dei database relazionali poiché sono progettati pensando alle applicazioni web.
Breve storia dei database NoSQL
- 1998- Carlo Strozzi usa il termine NoSQL per il suo database relazionale leggero e open source
- 2000- Banca dati grafica Neo4j viene lanciato
- 2004: viene lanciato Google BigTable
- 2005- CouchDB è lanciato
- 2007- Il documento di ricerca su Amazon La Dinamo viene rilasciata
- 2008- Facebook rende open source il Cassandra progetto
- 2009: viene reintrodotto il termine NoSQL
Funzionalità di NoSQL
Non relazionale
- I database NoSQL non seguono mai il modello relazionale
- Non fornire mai tabelle con record semplici a colonne fisse
- Utilizzare aggregati o BLOB autonomi
- Non richiede la mappatura relazionale degli oggetti e la normalizzazione dei dati
- Nessuna funzionalità complessa come linguaggi di query, pianificatori di query, join di integrità referenziale, ACID
Senza schemi
- I database NoSQL sono privi di schema o hanno schemi rilassati
- Non richiedono alcun tipo di definizione dello schema dei dati
- Offre strutture eterogenee di dati nello stesso dominio
API semplice
- Offre interfacce facili da usare per l'archiviazione e l'interrogazione dei dati forniti
- Le API consentono metodi di manipolazione e selezione dei dati di basso livello
- Protocolli basati su testo utilizzati principalmente con HTTP REST con JSON
- Per lo più non utilizzava un linguaggio di query NoSQL basato su standard
- Database abilitati per il Web eseguiti come servizi connessi a Internet
distribuito
- È possibile eseguire più database NoSQL in modo distribuito
- Offre funzionalità di scalabilità automatica e failover
- Spesso il concetto ACID può essere sacrificato a favore della scalabilità e della produttività
- Per lo più nessuna replica sincrona tra nodi distribuiti Replica multi-master asincrona, peer-to-peer, replica HDFS
- Fornendo solo la coerenza finale
- Niente condiviso Architectura. Ciò consente un minore coordinamento e una maggiore distribuzione.
Tipi di database NoSQL
Database NoSQL sono principalmente classificati in quattro tipi: coppia chiave-valore, orientato alle colonne, basato su grafici e orientato ai documenti. Ogni categoria ha le sue caratteristiche e limitazioni uniche. Nessuno dei database sopra specificati è migliore per risolvere tutti i problemi. Gli utenti devono selezionare il database in base alle esigenze del prodotto.
Tipi di database NoSQL:
- Basato su coppie di valori-chiave
- Grafico orientato alle colonne
- Basato su grafici
- Orientato ai documenti
Basato su coppia chiave-valore
I dati vengono archiviati in coppie chiave/valore. È progettato in modo tale da gestire molti dati e carichi pesanti.
I database di archiviazione di coppie chiave-valore archiviano i dati come una tabella hash in cui ogni chiave è univoca e il valore può essere un JSON, BLOB (Binary Large Objects), una stringa, ecc.
Ad esempio, una coppia chiave-valore può contenere una chiave come "Sito Web" associata a un valore come "Guru99".
È uno degli esempi di database NoSQL più basilari. Questo tipo di database NoSQL viene utilizzato come raccolta, dizionari, array associativi, ecc. Gli archivi di valori chiave aiutano lo sviluppatore a archiviare dati senza schema. Funzionano meglio per il contenuto del carrello.
Redis, Dynamo, Riak sono alcuni esempi NoSQL di database di archivi di valori-chiave. Sono tutti basati su Amazonil documento Dynamo.
Basato su colonne
I database orientati alle colonne funzionano su colonne e si basano sul documento BigTable di Google. Ogni colonna viene trattata separatamente. I valori dei database a colonna singola vengono archiviati in modo contiguo.
Forniscono prestazioni elevate su query di aggregazione come SUM, COUNT, AVG, MIN ecc. poiché i dati sono facilmente disponibili in una colonna.
I database NoSQL basati su colonne sono ampiamente utilizzati per gestire data warehouse, business intelligence, CRM, cataloghi a schede di biblioteca,
HBase, Cassandra, HBase e Hypertable sono esempi di query NoSQL di database basati su colonne.
Orientato ai documenti
Il DB NoSQL orientato ai documenti archivia e recupera i dati come coppia chiave-valore, ma la parte valore viene archiviata come documento. Il documento è archiviato nei formati JSON o XML. Il valore è compreso dal DB e può essere interrogato.
In questo diagramma alla tua sinistra puoi vedere che abbiamo righe e colonne e, a destra, abbiamo un database di documenti che ha una struttura simile a JSON. Ora per il database relazionale, devi sapere quali colonne hai e così via. Tuttavia, per un database di documenti, hai un archivio dati come un oggetto JSON. Non è necessario definire cosa lo rende flessibile.
Il tipo di documento è utilizzato principalmente per sistemi CMS, piattaforme di blogging, analisi in tempo reale e applicazioni di e-commerce. Non dovrebbe essere utilizzato per transazioni complesse che richiedono più operazioni o query su strutture aggregate variabili.
Amazon DB semplice, CouchDB, MongoDB, Riak, Note di loto, MongoDB, sono popolari documenti originati Sistemi DBMS.
Basato su grafici
Un database di tipo grafico memorizza le entità e le relazioni tra tali entità. L'entità viene archiviata come nodo con la relazione come bordi. Un bordo fornisce una relazione tra i nodi. Ogni nodo e bordo ha un identificatore univoco.
Rispetto a un database relazionale in cui le tabelle sono vagamente connesse, un database a grafo è di natura multirelazionale. L'attraversamento delle relazioni è rapido poiché sono già acquisiti nel DB e non è necessario calcolarli.
Database a base grafica utilizzato principalmente per social network, logistica, dati spaziali.
Neo4J, Grafico infinito, OrientDB, FlockDB sono alcuni popolari database basati su grafici.
Strumenti del meccanismo di query per NoSQL
Il meccanismo di recupero dei dati più comune è il recupero basato su REST di un valore in base alla sua chiave/ID con la risorsa GET
Il database dell'archivio documenti offre query più difficili poiché comprende il valore in una coppia chiave-valore. Per esempio, CouchDB consente di definire viste con MapReduce
Cos'è il teorema della PAC?
Il teorema CAP è anche chiamato teorema di Brewer. Si afferma che è impossibile per un archivio dati distribuito offrire più di due garanzie su tre
- Consistenza
- Disponibilità
- Tolleranza partizione
Consistenza:
I dati dovrebbero rimanere coerenti anche dopo l'esecuzione di un'operazione. Ciò significa che una volta scritti i dati, qualsiasi futura richiesta di lettura dovrebbe contenere tali dati. Ad esempio, dopo aver aggiornato lo stato dell'ordine, tutti i clienti dovrebbero essere in grado di vedere gli stessi dati.
Disponibilità:
Il database dovrebbe essere sempre disponibile e reattivo. Non dovrebbe avere tempi di inattività.
Tolleranza della partizione:
Tolleranza alla partizione significa che il sistema deve continuare a funzionare anche se la comunicazione tra i server non è stabile. Ad esempio, i server possono essere suddivisi in più gruppi che potrebbero non comunicare tra loro. In questo caso, se una parte del database non è disponibile, le altre parti rimangono sempre inalterate.
Eventuale coerenza
Il termine “consistenza finale” significa avere copie dei dati su più macchine per ottenere elevata disponibilità e scalabilità. Pertanto, le modifiche apportate a qualsiasi elemento di dati su una macchina devono essere propagate ad altre repliche.
La replica dei dati potrebbe non essere istantanea, poiché alcune copie saranno aggiornate immediatamente, mentre altre nel corso del tempo. Queste copie potrebbero essere reciprocamente, ma nel corso del tempo, diventeranno coerenti. Da qui il nome coerenza finale.
BASE: Basiatiche Adisponibile, Sspesso stato, Eeventuale consistenza
- Fondamentalmente, disponibile significa che DB è sempre disponibile secondo il teorema CAP
- Stato soft significa anche senza input; lo stato del sistema potrebbe cambiare
- L’eventuale coerenza significa che il sistema diventerà coerente nel tempo
Vantaggi di NoSQL
- Può essere utilizzato come origine dati primaria o analitica
- Capacità dei Big Data
- Nessun singolo punto di guasto
- Replica facile
- Non è necessario un livello di cache separato
- Fornisce prestazioni veloci e scalabilità orizzontale.
- Può gestire dati strutturati, semistrutturati e non strutturati con lo stesso effetto
- Programmazione orientata agli oggetti facile da usare e flessibile
- I database NoSQL non necessitano di un server dedicato ad alte prestazioni
- Supporta linguaggi e piattaforme chiave per gli sviluppatori
- Semplice da implementare rispetto all'utilizzo di RDBMS
- Può fungere da fonte di dati primaria per le applicazioni online.
- Gestisce i big data, ovvero gestisce la velocità, la varietà, il volume e la complessità dei dati
- Eccelle nelle operazioni di database distribuiti e multi-data center
- Elimina la necessità di uno specifico livello di memorizzazione nella cache per archiviare i dati
- Offre un design dello schema flessibile che può essere facilmente modificato senza tempi di inattività o interruzione del servizio
Svantaggi di NoSQL
- Nessuna regola di standardizzazione
- Funzionalità di query limitate
- RDBMS i database e gli strumenti sono relativamente maturi
- Non offre alcuna funzionalità di database tradizionale, come la coerenza quando vengono eseguite più transazioni contemporaneamente.
- Quando il volume dei dati aumenta è difficile mantenere valori univoci poiché le chiavi diventano difficili
- Non funziona altrettanto bene con i dati relazionali
- La curva di apprendimento è rigida per i nuovi sviluppatori
- Opzioni open source quindi non così popolari per le aziende.
Sommario
- NoSQL è un DMS non relazionale, che non richiede uno schema fisso, evita i join ed è facile da scalare
- Il concetto di database NoSQL è diventato popolare tra i giganti di Internet come Google, Facebook, Amazon, ecc. che trattano enormi volumi di dati
- Nell'anno 1998 Carlo Strozzi usa il termine NoSQL per il suo database relazionale leggero e open source
- I database NoSQL non seguono mai il modello relazionale: sono privi di schemi o hanno schemi rilassati
- Quattro tipi di database NoSQL sono 1). Basato su coppie di valori-chiave 2). Grafico orientato alle colonne 3). Grafici basati 4). Orientato ai documenti
- NOSQL può gestire dati strutturati, semistrutturati e non strutturati con lo stesso effetto
- Il teorema CAP è composto da tre parole: coerenza, disponibilità e tolleranza di partizione
- BASE sta per Basiatiche Adisponibile, Sspesso stato, Eeventuale consistenza
- Il termine “consistenza finale” significa avere copie dei dati su più macchine per ottenere elevata disponibilità e scalabilità
- NoSQL offrono funzionalità di query limitate