it-swarm.it

Quali sono le differenze tra NoSQL e un RDBMS tradizionale?

Quali sono le differenze tra NoSQL e un RDBMS tradizionale?

Negli ultimi mesi, NoSQL è stato spesso menzionato nelle notizie tecniche. Quali sono le sue caratteristiche più significative rispetto a un RDBMS tradizionale? A quale livello (fisico, logico) si verificano le differenze?

Dove sono i posti migliori per usare NoSQL? Perché?

71
Spredzy

NoSQL significa "Non solo SQL" e di solito significa che il database non è un database relazionale, che è stato molto popolare negli ultimi decenni.

Il motivo per cui NoSQL è stato così popolare negli ultimi anni è principalmente perché, quando un database relazionale cresce da un server, non è più così facile da usare. In altre parole, non si adattano molto bene in un sistema distribuito. Tutti i grandi siti di cui hai parlato Google, Yahoo, Facebook e Amazon (non so molto su Digg) hanno molti dati e li archiviano in sistemi distribuiti per diversi motivi. È possibile che i dati non si adattino a un server o che esistano requisiti per l'alta disponibilità .

Teorema della PAC

Le proprietà di un sistema distribuito possono essere descritte dal CAP Teorema . Delle tre proprietà puoi avere solo un massimo di due:

  • [~ ~ #] c [~ ~ #] OERENZA
  • [~ ~ #] un [~ ~ #] vailability
  • tolleranza alla rete [~ # ~] p [~ # ~]

Amazon Dynamo utilizza Eventual Coistency per avvicinarsi per ottenere tutte e tre le proprietà. L'articolo Dynamo: l'archivio valori-chiave altamente disponibile di Amazon vale la pena leggere quando si impara a conoscere i database NoSQL e i sistemi distribuiti. Amazon Dynamo ha le proprietà A e P.

Google ha un approccio diverso con BigTable , che ha le proprietà C e A.

Altri database NoSQL

Come ho scritto all'inizio, ci sono molti altri tipi di database NoSQL, progettati per requisiti diversi. Per esempio. database grafici come Neo4j , database di documenti come CouchDB e database multimodel/oggetti come OrientDB .

Infine, vorrei dire che i database relazionali rimarranno popolari. Sono molto flessibili e mantenibili. Ma non sono sempre la scelta migliore.

61
Jonas

NoSQL è un termine molto ampio e in genere viene indicato come "Non solo SQL". Il termine sta perdendo favore nella comunità non RDBMS.

Scoprirai che il database NoSQL ha poche caratteristiche comuni. Possono essere approssimativamente divisi in alcune categorie:

  • negozi chiave/valore
  • Database ispirati a Bigtable (basato sul documento Google Bigtable)
  • Database ispirati alla dinamo
  • database distribuiti
  • database di documenti

Questa è una domanda enorme, ma ha una risposta abbastanza buona in questo Survey of Distributed Database .

Per una breve risposta:

I database NoSQL possono rinunciare a varie parti di ACID al fine di ottenere alcuni altri vantaggi: tolleranza della partizione, prestazioni, distribuzione del carico o ridimensionamento lineare con l'aggiunta di nuovo hardware.

Per quanto riguarda quando usarli, questo dipende interamente dalle esigenze della tua applicazione.

22

NoSQL è un tipo di database che non ha uno schema fisso come un RDBMS tradizionale. Con i database NoSQL lo schema è definito dallo sviluppatore in fase di esecuzione. Non scrivono le normali istruzioni SQL sul database, ma usano invece un'API per ottenere i dati di cui hanno bisogno. I database NoSQL possono di solito scalare facilmente tra server fisici diversi senza bisogno di sapere su quale server si trovano i dati che stai cercando.

Tuttavia, ci sono alcuni compromessi per tutta questa flessibilità: i database NoSQL sono carenti di funzionalità rispetto ai sistemi RDBMS come SQL Server, Oracle, DB2, MySQL, ecc. Non c'è Service Broker, registrazione delle transazioni, pacchetti ETL, ecc.

NoSQL non è qualcosa di nuovo. In realtà esiste da 50-60 anni. All'epoca si chiamava COBOL. Stessa idea esatta, solo un gruppo diverso ne è uscito.

12
mrdenny

Fondamentalmente rinunciare alla configurazione relazionale, con chiavi primarie ed esterne e con l'overhead aggiuntivo coinvolto nel mantenimento della sicurezza transazionale, spesso ti dà estremi aumenti nelle prestazioni. Tuttavia, ciò non è univoco per i nuovi database/archivi di dati, ad esempio MySQL è stato ottimizzato per funzionare a "livelli NoSQL" bypassando i livelli.

In breve, spesso puoi ottenere prestazioni impressionanti se sei d'accordo con il rischio di perdere i dati. La maggior parte dei sistemi NoSQL fa questo. Ad esempio MongoDB mette in scena le modifiche ai dati da scrivere quando è conveniente. I dati stessi sono sicuri e transazionali, ma conservati in una memoria volatile (memoria). Se perdi energia non puoi essere sicuro al 100% di non aver perso dati o di non avere dati danneggiati.

È un compromesso tra sicurezza e prestazioni.

6
Johanna Larsson

Un buon punto di partenza è voce di Wikipedia . Sostanzialmente, invece, relazionando i dati in una tabella con un'altra si memorizzano le cose come coppie chiave-valore e non esiste uno schema di database, ma viene gestito invece nel codice.

Alcuni siti utilizzano contemporaneamente NoSQL e i tipici server RDBMS, ma per archiviare dati diversi. Quindi non devi scegliere l'uno o l'altro.

5
steve.lippert

Ho lavorato molto sul database NoSQL e Oracle di MongoDB.

Schema

Il database SQL ha uno schema predefinito per l'archiviazione di dati strutturati.

Nel database NoSQL non esiste uno schema predefinito, qui lo schema è l'elemento più dinamico basato sugli elementi di dati.

Scalabilità

I database SQL sono scalabili verticalmente, il che significa che se vogliamo ridimensionare il database di base SQL, dobbiamo dare un impulso hardware su cui è installato il sistema DBMS. Questo è dove a volte va per la limitazione della scalabilità.

I database NoSQL sono scalabili orizzontalmente, il che significa che se vogliamo ridimensionarlo, dobbiamo aggiungere più nodi e creare una rete di distribuzione in base alle nostre esigenze e alla potenza richiesta. Ecco come riducono il carico sul database

Recupero dati

Nei database basati su SQL, per definire e manipolare i dati possiamo usare SQL (Structured Query Language), che è molto potente al giorno d'oggi.

In termini di database NoSQL, le query si concentrano sulla raccolta e sui documenti. A volte si chiama UnQL (Unstructured Query Language). Questo è ancora in fase di evoluzione, quindi varia da fornitore a fornitore del database NoSQL.

Per ulteriori informazioni sulle differenze chiave, il mio blog: Differenza tra database SQL e NoSQL

0