Video: Next-Generation Access Control for Hadoop, HBase and other NoSQL Databases 2024
I data store NoSQL originariamente sottoscrivevano la nozione "Just Say No to SQL" (per parafrasare da un campagna pubblicitaria anti-droga negli anni '80), ed erano una reazione ai limiti percepiti dei database relazionali (basati su SQL). Non è che queste persone odiassero SQL, ma erano stanchi di forzare i pioli quadrati in fori rotondi risolvendo problemi per i quali non erano stati progettati database relazionali.
Un database relazionale è uno strumento potente, ma per alcuni tipi di dati (come coppie di valori-chiave o grafici) e alcuni schemi di utilizzo (come l'archiviazione su larga scala) un database relazionale non è t pratico. E quando si tratta di archiviazione ad alto volume, il database relazionale può essere costoso, sia in termini di costi di licenza del database che di costi hardware. (I database relazionali sono progettati per funzionare con hardware di livello enterprise.)
Quindi, con il movimento NoSQL, i programmatori creativi hanno sviluppato dozzine di soluzioni per diversi tipi di problemi spinosi di archiviazione e elaborazione dei dati. Questi database NoSQL in genere forniscono una scalabilità enorme tramite clustering e sono spesso progettati per consentire un throughput elevato e bassa latenza.
Il nome NoSQL è in qualche modo fuorviante perché molti database che si adattano alla categoria fanno hanno supporto SQL (piuttosto che supporto "NoSQL"). Pensa al suo nome come "Non solo SQL". “
Le offerte NoSQL disponibili oggi possono essere suddivise in quattro categorie distinte, in base al loro design e scopo:
-
Punti vendita chiave: Questa offerta offre un modo per memorizzare qualsiasi tipo di dati senza dover utilizzare uno schema. Ciò è in contrasto con i database relazionali, in cui è necessario definire lo schema (la struttura della tabella) prima di inserire qualsiasi dato. Poiché gli archivi di valori-chiave non richiedono uno schema, si ha una grande flessibilità per archiviare i dati in molti formati.
In un archivio di valori-chiave, una riga consiste semplicemente in una chiave (un identificatore) e un valore, che può essere qualsiasi cosa, da un valore intero a una grande stringa di dati binari. Molte implementazioni di negozi con valore chiave si basano sulla carta Dynamo di Amazon.
-
Depositi famigliari di colonne: Qui si hanno database in cui le colonne sono raggruppate in famiglie di colonne e memorizzate insieme su disco.
Strettamente parlando, molti di questi database non sono orientati alle colonne, perché sono basati sulla carta BigTable di Google, che memorizza i dati come una mappa ordinata multidimensionale.
-
Archivio documenti: Questa offerta si basa su raccolte di documenti con codifica e formattazione simile per migliorare l'efficienza.Gli archivi di documenti consentono ai singoli documenti di una raccolta di includere solo un sottoinsieme di campi, quindi vengono memorizzati solo i dati necessari. Per i set di dati sparsi, dove molti campi spesso non sono popolati, questo può tradursi in significativi risparmi di spazio.
Al contrario, le colonne vuote nelle tabelle del database relazionale occupano spazio. Gli archivi di documenti consentono anche la flessibilità dello schema, poiché vengono memorizzati solo i campi necessari e possono essere aggiunti nuovi campi. Ancora una volta, a differenza dei database relazionali, le strutture delle tabelle sono definite in anticipo prima che i dati vengano archiviati e la modifica delle colonne è un compito noioso che influisce sull'intero set di dati.
-
Database di grafici: Qui sono presenti database che memorizzano strutture di grafici - rappresentazioni che mostrano raccolte di entità (vertici o nodi) e le loro relazioni (bordi) tra loro. Queste strutture consentono ai database di grafi di essere estremamente adatti per l'archiviazione di strutture complesse, come le relazioni di collegamento tra tutte le pagine Web conosciute. (Ad esempio, le singole pagine Web sono nodi, e gli spigoli che li collegano sono collegamenti da una pagina all'altra.)
Google, ovviamente, utilizza tutta la tecnologia grafica e ha inventato un motore di elaborazione grafico chiamato Pregel per alimentare il suo PageRank algoritmo. (E sì, c'è un white paper su Pregel.) Nella comunità Hadoop, c'è un progetto Apache chiamato Giraph (basato sulla carta Pregel), che è un motore di elaborazione grafica progettato per elaborare grafici memorizzati in HDFS.
Le opzioni di archiviazione e elaborazione dei dati disponibili in Hadoop sono in molti casi implementazioni delle categorie NoSQL elencate qui. Questo ti aiuterà a valutare meglio le soluzioni a tua disposizione e vedere come Hadoop può integrare i tradizionali data warehouse.