Recentemente NoSQL ha guadagnato un'enorme popolarità.
Quali sono i vantaggi di NoSQL rispetto ai tradizionali RDBMS ?
Recentemente NoSQL ha guadagnato un'enorme popolarità.
Quali sono i vantaggi di NoSQL rispetto ai tradizionali RDBMS ?
Risposte:
Non tutti i dati sono relazionali. Per queste situazioni, NoSQL può essere utile.
Detto questo, NoSQL significa "Non solo SQL". Non è destinato a battere SQL o soppiantarlo.
SQL presenta numerosi vantaggi:
Quelli non sono andati via.
È un errore pensare a questo come a uno o / o argomento. NoSQL è un'alternativa che le persone devono considerare quando si adatta, tutto qui.
I documenti possono essere archiviati in database non relazionali, come CouchDB.
Forse leggere questo aiuterà.
SELECT blob FROM images WHERE blob CONTAINS('red car')
. Pertanto, sebbene sia possibile archiviare i dati non elaborati nel database, non è possibile cercarli senza collegare metadati. I moduli di ricerca full-text nei sistemi RDBMS colmano parte del gap semi-strutturale.
La storia sembra essere così:
Google ha bisogno di un livello di archiviazione per il loro indice di ricerca invertito. Immaginano che un RDBMS tradizionale non lo taglierà. Quindi implementano un archivio di dati NoSQL, BigTable in cima al loro file system GFS. La parte principale è che migliaia di macchine hardware a basso costo forniscono la velocità e la ridondanza.
Tutti gli altri comprendono ciò che Google ha appena fatto.
Il teorema di Brewers CAP è dimostrato. Tutti i sistemi di utilizzo RDBMS sono sistemi CA. Le persone iniziano a giocare anche con sistemi CP e AP. I negozi K / V sono molto più semplici, quindi sono il veicolo principale per la ricerca.
I sistemi software-as-a-service in generale non forniscono un archivio simile a SQL. Quindi, le persone si interessano di più ai negozi di tipi NoSQL.
Penso che gran parte del decollo possa essere correlato a questa storia. Il ridimensionamento di Google ha preso alcune nuove idee su Google e tutti gli altri seguono l'esempio perché questa è l'unica soluzione che conoscono in questo momento. Quindi, sei disposto a rielaborare tutto intorno all'idea del database distribuito di Google perché è l'unico modo per scalare oltre una certa dimensione.
C - Coerenza
A - Disponibilità
P - Tolleranza sulla partizione
K / V - Chiave / Valore
NoSQL è meglio di RDBMS a causa dei seguenti motivi / proprietà di NoSQL
MODIFICARE:
Per rispondere "perché RDBMS non può ridimensionare", dai un'occhiata al pdf di RDBMS Overheads scritto da Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden e Michael Stonebraker
Gli RDBMS hanno difficoltà a gestire enormi volumi di dati di Terabyte e byte Peta . Anche se si dispone di array ridondanti di dischi indipendenti / economici (RAID) e triturazione dei dati, non si adatta bene per un enorme volume di dati. Hai bisogno di hardware molto costoso.
Registrazione : l' assemblaggio dei record di registro e il rilevamento di tutte le modifiche alle strutture del database rallenta le prestazioni. La registrazione potrebbe non essere necessaria se la recuperabilità non è un requisito o se la recuperabilità è fornita con altri mezzi (ad esempio, altri siti sulla rete).
Blocco : il tradizionale blocco a due fasi comporta un notevole sovraccarico poiché tutti gli accessi alle strutture del database sono regolati da un'entità separata, il Lock Manager.
Bloccaggio : in un database multi-thread, molte strutture di dati devono essere bloccate prima di poter accedere. Rimuovere questa funzione e passare a un approccio a thread singolo ha un notevole impatto sulle prestazioni.
Gestione del buffer : un sistema di database di memoria principale non deve accedere alle pagine tramite un pool di buffer, eliminando un livello di riferimento indiretto ad ogni accesso ai record.
Ciò non significa che dobbiamo usare NoSQL su SQL.
Tuttavia, RDBMS è migliore di NoSQL per i seguenti motivi / proprietà di RDBMS
Dobbiamo usare RDBMS (SQL) e NoSQL (non solo SQL) a seconda del caso aziendale e dei requisiti
NOSQL non ha vantaggi speciali rispetto al modello di database relazionale. NOSQL affronta alcune limitazioni degli attuali DBMS SQL, ma non implica alcuna capacità fondamentalmente nuova rispetto ai precedenti modelli di dati.
NOSQL significa solo nessun SQL (o "non solo SQL") ma ciò non significa lo stesso di nessuna relazione . Un database relazionale in linea di principio costituirebbe un'ottima soluzione NOSQL - è solo che nessuno degli attuali set di prodotti NOSQL utilizza il modello relazionale.
RDBMS si concentra maggiormente sulla relazione e NoSQL concentra maggiormente sullo storage.
Puoi prendere in considerazione l'utilizzo di NoSQL quando il tuo RDBMS raggiunge colli di bottiglia. NoSQL rende RDBMS più flessibile.
Il più grande vantaggio di NoSQL su RDBMS è la scalabilità .
I database NoSQL possono facilmente scalare su molti nodi, ma per RDBMS è molto difficile.
La scalabilità non offre solo più spazio di archiviazione, ma anche prestazioni molto più elevate poiché molti host lavorano contemporaneamente.
Aggiungo solo a tutte le informazioni fornite sopra
Vantaggi NoSql:
1) NoSQL è utile se vuoi essere pronto per la produzione in fretta grazie al suo supporto per l'architettura senza schema e orientata agli oggetti.
2) I db NoSql sono infine coerenti, il che in un linguaggio semplice significa che non forniranno alcun blocco sui dati (documenti) come nel caso di RDBMS e che cosa significa che l'ultima istantanea dei dati è sempre disponibile e quindi aumenta la latenza della tua applicazione .
3) Utilizza la strategia MVCC (controllo di concorrenza multi view) per mantenere e creare un'istantanea dei dati (documenti).
4) Se si desidera disporre di dati indicizzati, è possibile creare una vista che indicizzerà automaticamente i dati in base alla definizione della vista fornita.
Svantaggi NoSql:
1) Non è sicuramente adatto a grandi applicazioni transazionali pesanti poiché è infine coerente e non supporta le proprietà ACID.
2) Inoltre crea più snapshot (revisioni) dei tuoi dati (documenti) in quanto utilizza la metodologia MVCC per il controllo della concorrenza, a seguito della quale lo spazio viene consumato più velocemente di prima, il che rende la compattazione e quindi la reindicizzazione più frequente e rallenterà il tuo risposta dell'applicazione man mano che aumentano i dati e la transazione nella propria applicazione. Per contrastare il fatto che è possibile ridimensionare orizzontalmente i nodi, ma sarà nuovamente un costo più elevato rispetto al confronto del database sql.
Da mongodb.com :
I database NoSQL differiscono dalla tecnologia relazionale precedente in quattro aree principali:
Modelli di dati : un database NoSQL consente di creare un'applicazione senza dover prima definire lo schema, diversamente dai database relazionali che consentono di definire lo schema prima di poter aggiungere qualsiasi dato al sistema. Nessuno schema predefinito rende i database NoSQL molto più facili da aggiornare quando i tuoi dati e requisiti cambiano.
Struttura dei dati : i database relazionali sono stati costruiti in un'era in cui i dati erano abbastanza strutturati e chiaramente definiti dalle loro relazioni. I database NoSQL sono progettati per gestire dati non strutturati (ad es. Testi, post sui social media, video, e-mail) che costituiscono gran parte dei dati esistenti oggi.
Ridimensionamento : è molto più economico ridimensionare un database NoSQL rispetto a un database relazionale perché è possibile aggiungere capacità scalando su server di prodotti economici. I database relazionali, d'altra parte, richiedono un singolo server per ospitare l'intero database. Per ridimensionare, è necessario acquistare un server più grande e più costoso.
Modello di sviluppo : i database NoSQL sono open source, mentre i database relazionali sono generalmente chiusi con costi di licenza integrati nell'uso del loro software. Con NoSQL, puoi iniziare un progetto senza ingenti investimenti in costi di software in anticipo.