NoSql vs database relazionale


Risposte:


123

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:

  1. Forti basi matematiche.
  2. Sintassi dichiarativa
  3. Un linguaggio ben noto in Structured Query Language (SQL).

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à.


10
Potresti fornire alcuni esempi di dati non relazionali?
user496949

7
Documenti e immagini possono essere memorizzati anche all'interno di RDBMS come SQL Server e Oracle? Allora perché NoSQL?
user496949

2
I dati semi-strutturati sono una di queste classi. Contiene XML, e-mail, JSON, ecc. Vedi la pagina di Wikipedia su di esso. La regola generale è che la struttura è lì, ma è vagamente definita ed estendibile dinamicamente (quest'ultima tende a classificarsi con il modello relazionale - e sebbene non sia impossibile modellarla, è decisamente ingombrante). Un'altra classe sono i "dati naturali": un romanzo, un'immagine, entrambi senza metadati allegati.
RISPONDO A CRAP il

2
Beh, non puoi farlo 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.
RISPONDO A CRAP il

1
@duffymo: i documenti non sono "non relazionali". I documenti sono spesso archiviati in DBMS SQL e per questo non è necessario un DBMS NOSQL. Infatti, i database NOSQL utilizzano spesso modelli di dati che sono meno generali e più limitati nell'applicazione rispetto al modello relazionale. Ad esempio database grafici. Il tipo di dati archiviati non spiega alcun vantaggio di NOSQL.
nvogel,

98

La storia sembra essere così:

  1. 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.

  2. Tutti gli altri comprendono ciò che Google ha appena fatto.

  3. 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.

  4. 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


10
Che cos'è CAP, CP, AP, K / V?
knownasilya,

3
Cerca il teorema della CAP su Wikipedia. CA e CP derivano da lì. K / V è l'abbreviazione di Key / Value, una mappatura finita (distribuita) dalle chiavi ai valori.
RISPONDO A CRAP il

" Tutti gli altri comprendono ciò che Google ha appena fatto. " Lol. Sembra una risposta scozzese per me (aka NOT CRAP).
Rufin,

38

NoSQL è meglio di RDBMS a causa dei seguenti motivi / proprietà di NoSQL

  1. Supporta dati semi-strutturati e dati volatili
  2. Non ha schema
  3. La velocità di lettura / scrittura è molto alta
  4. La scalabilità orizzontale può essere raggiunta facilmente
  5. Supporterà Bigdata in volumi di Terra Byte e Peta Bytes
  6. Fornisce un buon supporto per gli strumenti analitici su Bigdata
  7. Può essere ospitato in macchine hardware più economiche
  8. L'opzione di memorizzazione nella cache in memoria è disponibile per aumentare le prestazioni delle query
  9. Cicli di vita più rapidi per gli sviluppatori

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

  1. Transazioni con proprietà ACID : atomicità, coerenza, isolamento e durata
  2. Adesione allo schema forte dei dati scritti / letti
  3. Gestione delle query in tempo reale (in caso di dimensioni dei dati <10 Tera byte)
  4. Esecuzione di query complesse che coinvolgono clausole join & group by

Dobbiamo usare RDBMS (SQL) e NoSQL (non solo SQL) a seconda del caso aziendale e dei requisiti


2
Vale la pena notare che alcuni database NoSQL supportano le transazioni ACID.
Dave Cassel,

15

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.


4
Sembra che alla recente conferenza O'Reilly Strata, Mark Madsen abbia coniato una nuova interpretazione di "NoSQL" nella sua storia di database in sostituzione di "Not Only SQL". Ora è: "No, SQL" ;-)
Lukas Eder,

4

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.


4

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.


3

Se è necessario elaborare enormi quantità di dati con prestazioni elevate

O

Se il modello di dati non è predeterminato

poi

Il database NoSQL è una scelta migliore.


2

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.


1

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.