NoSQL
NoSQL ( dall'inglese non solo SQL , non solo SQL ) è una designazione per un'ampia classe di sistemi di gestione di database eterogenei apparsi tra la fine degli anni 2000 e l'inizio degli anni 2010 e differiscono in modo significativo dai tradizionali DBMS relazionali con accesso ai dati tramite il linguaggio SQL . Si applica ai sistemi che tentano di risolvere problemi di scalabilità e disponibilità dovuti al rifiuto totale o parziale dei requisiti di atomicità e consistenza dei dati [1] .
Origine
Storia del nome
Inizialmente, la parola NoSQL era l'acronimo di due parole inglesi: No ("Not") e SQL (abbreviazione di English Structured Query Language - "structured query language"), che conferisce al termine il significato di "negare SQL" . È possibile che il primo che ha iniziato a usare questo termine volesse dire "No RDBMS" ("non un DBMS relazionale ") o "no relazionale" ("non relazionale"), ma NoSQL suonava meglio e alla fine ha messo radici (come un alternativa, è stato proposto anche NonRel). Successivamente, NoSQL è stato coniato la spiegazione "Not Only SQL" ("non solo SQL"). NoSQL è diventato un termine generico per vari database e archivi, ma non si riferisce a nessuna tecnologia o prodotto particolare [2] .
Sviluppo dell'idea
Di per sé l'idea dei database non relazionali non è nuova, e l'uso dello storage non relazionale risale ai tempi dei primi computer. I database non relazionali fiorirono durante i giorni del mainframe e in seguito, durante i giorni del dominio dei DBMS relazionali, trovarono impiego in negozi specializzati, come i servizi di directory gerarchiche . L'emergere di una nuova generazione di DBMS non relazionali era dovuto alla necessità di creare sistemi distribuiti paralleli per applicazioni Internet altamente scalabili come i motori di ricerca [2] .
All'inizio degli anni 2000, Google ha costruito il suo motore di ricerca altamente scalabile e le sue applicazioni: GMail , Google Maps , Google Earth , ecc., risolvendo i problemi di scalabilità ed elaborazione parallela di grandi quantità di dati. Il risultato è stato un file system distribuito e un sistema di coordinamento distribuito, un archivio della famiglia di colonne , un ambiente di runtime basato sull'algoritmo MapReduce . La pubblicazione da parte di Google delle descrizioni di queste tecnologie ha suscitato un'ondata di interesse tra gli sviluppatori open source , con la conseguente creazione di Hadoop e il lancio di progetti correlati progettati per creare tecnologie simili a Google. Un anno dopo, nel 2007, Amazon.com ha seguito l'esempio di Google pubblicando articoli sul database ad alta disponibilità Amazon DynamoDB [3] .
Il supporto di colossi del settore in meno di cinque anni ha portato all'adozione diffusa di tecnologie NoSQL (e simili) per la gestione dei "big data", e altre aziende grandi e piccole si sono unite alla causa, come: IBM , Facebook , Netflix , eBay , Hulu , Yahoo! , con le sue soluzioni proprietarie e open source [3] .
Caratteristiche principali
I DBMS tradizionali sono guidati dai requisiti ACID per un sistema transazionale: atomicità ( atomicità ), consistenza ( coerenza inglese ), isolamento ( isolamento inglese ), durabilità ( durabilità inglese ), mentre in NoSQL, al posto di ACID, può essere un insieme di proprietà BASE considerato [ 1] :
- disponibilità di base : è garantito il completamento di ogni richiesta (con o senza successo) .
- stato morbido : lo stato del sistema può cambiare nel tempo, anche senza l'introduzione di nuovi dati, per ottenere la coerenza dei dati.
- l' eventuale coerenza - i dati possono essere incoerenti per un po' di tempo, ma dopo un po' arrivano a un accordo .
Il termine "BASE" è stato proposto da Eric Brewer, autore del teorema CAP , secondo il quale, nel calcolo distribuito, possono essere garantite solo due delle tre proprietà: consistenza dei dati, disponibilità o tolleranza della partizione [1] .
Naturalmente, i sistemi basati su BASE non possono essere utilizzati in tutte le applicazioni: per il funzionamento dei sistemi di cambio e bancari, l'uso delle transazioni è una necessità. Allo stesso tempo, le funzionalità ACID, per quanto desiderabili, sono quasi impossibili da ottenere in sistemi con un pubblico web multimilionario come amazon.com [1] . Pertanto, i progettisti di sistemi NoSQL sacrificano la consistenza dei dati per ottenere le altre due proprietà del teorema CAP [4] . Alcuni DBMS, come Riak , consentono di ottimizzare le caratteristiche di disponibilità-coerenza richieste anche per singole richieste specificando il numero di nodi necessari per confermare il successo di una transazione. [5]
Le soluzioni NoSQL differiscono non solo per la progettazione per il ridimensionamento. Altre caratteristiche salienti delle soluzioni NoSQL sono [6] [7] :
- L'uso di vari tipi di archiviazione [6] .
- Possibilità di progettare un database senza specificare uno schema [6] [7] .
- Scalabilità lineare (l'aggiunta di processori aumenta le prestazioni) [6] .
Tipi di sistema
La descrizione dello schema dati nel caso di utilizzo di soluzioni NoSQL può essere effettuata attraverso l'utilizzo di varie strutture dati: tabelle hash , alberi e altre.
A seconda del modello di dati e degli approcci alla distribuzione e alla replica , ci sono quattro tipi principali di sistemi nel movimento NoSQL: "valore-chiave" ( archivio valori-chiave inglese ), "famiglia di colonne" ( archivio famiglie di colonne ), documento -orientato ( archivio documenti ), grafico.
Chiave - valore
Il modello valore-chiave è l'opzione più semplice, utilizzando una chiave per accedere a un valore. Tali sistemi vengono utilizzati per l'archiviazione di immagini, file system specializzati, cache di oggetti e sistemi progettati per la scalabilità . Esempi di tali storage sono Berkeley DB , MemcacheDB , Redis , Riak , Amazon DynamoDB [6] .
Famiglia di colonne
Un altro tipo di sistema è la "famiglia di colonne", il capostipite di questo tipo è il sistema Google BigTable . In tali sistemi, i dati vengono archiviati come una matrice sparsa le cui righe e colonne vengono utilizzate come chiavi. Un'applicazione tipica per questo tipo di DBMS è l'indicizzazione web , così come le attività di big data , con requisiti di coerenza ridotti . Esempi di questo tipo di DBMS sono: Apache HBase , Apache Cassandra , ScyllaDB , Apache Accumulo , Hypertable [6] [8] .
I sistemi per famiglie di colonne e i sistemi orientati ai documenti hanno casi d'uso simili: sistemi di gestione dei contenuti, blog, registrazione degli eventi. L'uso dei timestamp consente di utilizzare questo tipo di sistema per l'organizzazione dei contatori, nonché per la registrazione e l'elaborazione di vari dati temporali [8] .
A differenza dell'archiviazione colonnare utilizzata in alcuni DBMS relazionali , che archiviano i dati per colonna in una forma compressa per l'efficienza negli scenari OLAP , il modello "famiglia di colonne" archivia i dati riga per riga e fornisce prestazioni elevate principalmente negli scenari operativi , mentre per le query che richiedono la scansione di una grande quantità di dati con l'aggregazione dei risultati, di norma, è inefficiente [8] [9] .
DBMS orientato ai documenti
I DBMS orientati ai documenti vengono utilizzati per archiviare strutture di dati gerarchiche. Trovano la loro applicazione nei sistemi di gestione dei contenuti , nell'editoria, nella ricerca documentaria . Esempi di questo tipo di DBMS sono CouchDB , Couchbase , MongoDB , eXist , Berkeley DB XML [6] .
Grafico DBMS
I DBMS grafici vengono utilizzati per attività in cui i dati hanno un numero elevato di collegamenti, ad esempio social network , rilevamento di frodi. Esempi: Neo4j , OrientDB , AllegroGraph , Blazegraph [10] , InfiniteGraph , FlockDB , Titan [6] [8] .
Poiché i bordi del grafico sono materializzati , ovvero memorizzati, l'attraversamento del grafico non richiede calcoli aggiuntivi (come un join in SQL ), ma sono necessari indici per trovare il vertice iniziale dell'attraversamento. I DBMS Graph generalmente supportano ACID e supportano anche linguaggi di query specializzati come Gremlin , Cypher , SPARQL , GraphQL .
UnQL
Nel luglio 2011, Couchbase, lo sviluppatore di CouchDB , Memcached e Membase , ha annunciato la creazione di un nuovo linguaggio di query simile a SQL - UnQL (Unstructured Data Query Language). La creazione del nuovo linguaggio è stata eseguita dal creatore di SQLite Richard Hipp e dal fondatore del progetto CouchDB Damien Katz . Lo sviluppo è stato trasferito alla comunità come dominio pubblico [11] [12] [13] . L'ultima volta che UnQL è stato aggiornato nell'agosto 2011 [14] , infatti, il progetto non ha ricevuto alcun supporto.
Note
- ↑ 1 2 3 4 Vaish, 2013 , Cos'è NoSQL e cosa non è.
- ↑ 1 2 Tiwari, 2011 , Capitolo 1: NoSQL: cos'è e perché ne hai bisogno > Definizione e introduzione.
- ^ 12 Tiwari , 2011 , pp. 4-6.
- ^ Brewer, Eric A. A Certain Freedom: Thoughts on the CAP Theorem // Atti del simposio IXXX ACM SIGACT-SIGOPS sui principi del calcolo distribuito. — N. Y .: ACM , 2010 . — Iss. 29 , n. 1 . - P. 335-336 . - ISBN 978-1-60558-888-9 . -doi : 10.1145/ 1835698.1835701 .
- ^ Zachary Kessin. Creazione di applicazioni Web con Erlang . - O'Reilly Media, Inc., 2012. - P. 13 . — 156p. - ISBN 978-1-4493-0996-1 .
- ^ 1 2 3 4 5 6 7 8 McCreary, Kelly, 2013 , 1.1. Cos'è NoSQL?
- ^ 1 2 Vaish, 2013 , Perché NoSQL?.
- ^ 1 2 3 4 Curato, Blin, 2014 .
- ^ McCreary, Kelly, 2013 , 4.3. Negozi della famiglia di colonne (Bigtable).
- ^ Blazegraph (precedentemente Bigdata) Archiviato il 13 giugno 2015 in Internet Archive . , w3c
- ↑ Linguaggio di query UnQL svelato da Couchbase e SQLite . Estratto 7 agosto 2011 . Archiviato dall'originale il 25 settembre 2011.
- ↑ Benvenuti nella home page di UnQL Specification . Estratto 7 agosto 2011 . Archiviato dall'originale il 25 settembre 2011.
- ^ I creatori di CouchDB e SQLite hanno introdotto UnQL, un analogo SQL per i sistemi NoSQL Archiviato il 14 settembre 2011 su Wayback Machine , notizie su OpenNet
- ↑ UnQL: sequenza temporale . unql.sqlite.org . Estratto il 18 ottobre 2021 . Archiviato dall'originale il 18 ottobre 2021.
Letteratura
- Martin Fowler, Pramodkumar J. Sadalaj. NoSQL: una nuova metodologia per lo sviluppo di database non relazionali = NoSQL Distilled. - M .: "Williams" , 2013. - 192 p. - ISBN 978-5-8459-1829-1 .
- Leonid Chernyak. Time of Troubles DBMS // Sistemi aperti. - 2012. - N. 2 .
- Dan McCreary, Ann Kelly. Dare un senso a NoSQL: una guida per i manager e il resto di noi. - Pubblicazioni Manning, 2013. - 312 p. - ISBN 978-1-61729-107-4 .
- Olivier Cure, Guillaume Blin. Capitolo 2. Sistemi di gestione dei database // Sistemi di database RDF: triplica l'archiviazione e l'elaborazione delle query SPARQL. - Elsevier Science, 2014. - 256 p. - ISBN 978-0-12-800470-8 .
- Shashank Tiwari. NoSQL professionale . - John Wiley & Sons Inc , 2011. - 384 pag. — ISBN 9780470942246 .
Collegamenti
- Matthew Aslett, Grafico del panorama del database aggiornato Archiviato il 1 giugno 2013 in Internet Archive . , 2 novembre 2012 (grafico)