Domanda

So che soluzioni come MySQL, PostgreSQL e MS SQL Server sono sistemi di database relazionali e NoSQL, MongoDB, ecc non sono DBMS relazionale.

Tuttavia, quali sono le differenze tra i due tipi di sistema?

termini profani sono preferibili.

Grazie.

È stato utile?

Soluzione

I database relazionali hanno una base matematica (teoria degli insiemi, teoria relazionale), che sono distillata in SQL == Structured Query Language.

molte forme di noSQL (basati documento esempio,, magazzini valore-chiave basata sull'oggetto grafico-based, ecc) possono o non possono essere basate su una teoria matematica singola base di quest'ultima. Come S. Lott ha giustamente osservato, gerarchica archivi di dati, infatti, hanno una base matematica. Lo stesso si potrebbe dire per grafico database .

io non sono a conoscenza di un linguaggio di query universale per i database NoSQL.

Altri suggerimenti

Hmm, non del tutto sicuro di quello che la tua domanda è.

Nel titolo si chiede sui database (DB), mentre nel corpo del testo si chiede su Database Management Systems (DBMS). I due sono completamente diversi e richiedono risposte diverse.

Un DBMS è uno strumento che permette di accedere ad un database.

A parte i dati stessi, un DB è il concetto di come tali dati è strutturata.

Quindi, proprio come è possibile programmare con metodologia Object Oriented con un non-OO compilatore alimentato, o viceversa, in modo da poter configurare una database relazionale senza un RDBMS o utilizzare un RDBMS per memorizzare i dati non relazionali.

mi concentrerò su cosa significa (RDB) Relational database e lasciare la discussione su quali sistemi fanno agli altri.

Un database relazionale (il concetto) è una struttura dati che consente di informazioni di collegamento da diversi 'tavoli', o diversi tipi di benne di dati. Una benna dati deve contenere quello che viene chiamato una chiave o un indice (che permette di identificare univocamente ogni pezzo atomico dati all'interno del secchio). Altri secchi di dati possono riferirsi a quella chiave in modo da creare un collegamento tra loro atomi di dati e l'atomo a cui punta il tasto.

Un database non relazionale solo memorizza i dati senza meccanismi espliciti e strutturate per collegare dati provenienti da diversi secchi tra loro.

Per quanto riguarda l'attuazione di un tale sistema, se si dispone di un file di carta con un indice e in un file di carta diverso si riferiscono all'indice per ottenere le informazioni rilevanti, quindi è stato implementato un database relazionale, anche se un semplice abbastanza . Così si vede che non hai nemmeno bisogno di un computer (naturalmente può diventare noioso molto rapidamente senza uno a aiuto), allo stesso modo non è necessario un RDBMS, anche se forse un RDBMS è lo strumento giusto per il lavoro. Detto questo ci sono variazioni per quanto riguarda ciò che i diversi strumenti là fuori può fare in modo da scegliere lo strumento giusto per il lavoro non può essere tutto così semplice.

Spero che questo sia abbastanza parole povere ed è utile per la vostra comprensione.

La maggior parte di ciò che si "sa" è sbagliato.

Prima di tutto, come alcuni dei guru relazionali routine (e talvolta stridente) sottolineare, SQL non si adatta in realtà quasi a stretto contatto con la teoria relazionale come molti pensano. In secondo luogo, la maggior parte delle differenze di roba "NoSQL" ha relativamente poco a che fare con se è relazionale o meno. Infine, è piuttosto difficile dire quanto è diverso "NoSQL" da SQL perché sia rappresentano una gamma piuttosto ampia di possibilità.

L'unica grande differenza che si può contare su è che quasi tutto ciò che supporta SQL supporta cose come trigger del database stesso - per esempio, si può progettare le regole nel database corretto che sono volte a garantire che i dati siano sempre coerenti . Ad esempio, è possibile impostare le cose in modo il database afferma che una persona deve avere un indirizzo. Se non è così, ogni volta che si aggiunge una persona, sarà essenzialmente ti costringono a associare quella persona con un certo indirizzo. Si potrebbe aggiungere un nuovo indirizzo o si potrebbe associarli con qualche indirizzo esistente, ma un modo o nell'altro, la persona deve avere un indirizzo. Allo stesso modo, se si elimina un indirizzo, che sarà costringerà a cancellare o tutte le persone attualmente a quell'indirizzo, o associare ogni con qualche altro indirizzo. Si può fare lo stesso per le altre relazioni, come dire ogni persona deve avere una madre, ogni ufficio deve avere un numero di telefono, ecc.

Si noti che questo tipo di cose sono garantiti anche per accadere atomicamente, quindi se qualcuno guarda il database come si sta aggiungendo la persona, faranno o non vedere la persona a tutti, altrimenti vedranno il persona con l'indirizzo (o della madre, ecc.)

La maggior parte dei database NoSQL fare non tentare di fornire questo tipo di applicazione nel database corretto. E 'a voi, nel codice che utilizza il database, per dare attuazione alle relazioni necessarie per i dati. Nella maggior parte dei casi, è anche possibile vedere i dati del solo parzialmente corretto, quindi, anche se si dispone di un albero genealogico dove si suppone che ogni persona di essere associato con i genitori, non ci possono essere momenti che tutto ciò che i vincoli che avete imposto, non sarà davvero forzata. Alcuni ti consente di fare che a volontà. Altri assicurano che succede solo temporaneamente, anche se esattamente quanto tempo può / durerà può essere una questione aperta.

Il database relazionale utilizza un sistema formale di predicati ai dati indirizzo. La realizzazione fisica sottostante è di alcuna sostanza e può variare da ottimizzare per talune operazioni, ma deve sempre assumere modello relazionale . In parole povere, questo è solo dicendo so esattamente quanti valori (attributi) ogni riga (tupla) in mia tabella (relazione) ha e ora voglio sfruttare il fatto di conseguenza, a fondo e ad esso è estrema. Questo è il true la natura della bestia.

Dal momento che siamo, ovviamente, la generazione che ha avuto un'educazione relazionale, se si guarda a modelli di database NoSQL dal punto di vista del modello relazionale, di nuovo in parole povere, la prima differenza evidente è che nessuno ipotesi circa il numero di valori una riga può contenere viene mai fatto. Questo è davvero Semplificando la questione e non in modo pulito applica alla complessità dei modelli fisici di tutti i database NoSQL, ma è l'apice del modello relazionale e la prima ipotesi che dobbiamo lasciare alle spalle o, se si preferisce, il più grande salto dobbiamo fare.

Si può essere d'accordo a due cose che sono vere per ogni DBMS: può memorizzare qualsiasi tipo di dati e ha abbastanza basi matematiche per rendere possibile la gestione dei dati in qualsiasi immaginabile modo. La realtà è che non vorrete mai fare l'errore di mettere uno qualsiasi dei due punti per il test, ma solo bastone con quello che il DBMS effettivo è stato davvero fatto per. In parole povere: rispettare la bestia dentro

(Si prega di notare che ho evitato confrontando le norme (ovviamente) ben fondate che ruotano intorno al modello relazionale contro i tanti sapori forniti da database NoSQL. Se vuoi, considerano i database NoSQL come un termine generico per qualsiasi DBMS che non si assume completamente il modello relazionale, l'esclusione di tutto il resto. le differenze sono troppi, ma questo è la principale differenza e quello che penso sarebbe di maggiore utilità per voi per capire i due.)

Prova a spiegare questa domanda in un livello di riferimento a una tecnologia po '

Prendere MongoDB e SQL tradizionale per il confronto, immaginate lo scenario di pubblicazione di un Tweet su Twitter. Questo tweet contiene 9 immagini. Come si conserva questo tweet e le sue immagini corrispondenti?

In termini di tradizione SQL rapporto, è possibile memorizzare i tweet e foto in tabelle separate, e rappresentano il collegamento attraverso la costruzione di una nuova tabella.

Cosa c'è di più, è possibile impostare un campo che è un tipo di immagine, e zip le 9 immagini in un documento binario e memorizzarlo in questo campo.

Utilizzando MongoDB, si potrebbe costruire un documento come questo (simile al concetto di una tabella in SQL relazionale):

{

"id":"XXX",

"user":"XXX",

"date":"xxxx-xx-xx",

"content":{

"text":"XXXX",

"picture":["p1.png","p2.png","p3.png"]

}

Quindi, a mio parere, la differenza principale è su come si fa a memorizzare il livello delle relazioni tra loro memorizzazione dei dati e.

In questo esempio, i dati sono il tweet e le foto. Il diverso meccanismo circa il livello di rapporto tra di loro svolgono anche un ruolo importante nella differenza tra i due stoccaggio.

Spero che questo piccolo esempio aiuta a mostrare la differenza tra SQL e NoSQL (acido e base).

Ecco un link di immagine relativa a obiettivi di NoSQL da Internet:

http: //icamchuwordpress-wordpress.stor.sinaapp. com / uploads / 2015/01 / dbc795f6f262e9d01fa0ab9b323b2dd1_b.png

La differenza tra relazionale e non-relazionale è esattamente questo. L'architettura database relazionale fornisce vincoli oggetti come chiavi primarie, chiavi esterne, ecc che permette di legare due o più tabelle in una relazione. Questo è un bene in modo da normalizzare nostre tavole vale a dire le informazioni diviso su ciò che il database rappresenta in molte tabelle diverse, una volta in grado di mantenere l'integrità dei dati.

Per esempio, supponiamo di avere una serie di tavolo che ospita informazioni su un dipendente. Non si poteva eliminare un record da una tabella senza eliminare tutti i record che riguardano tale record dalle altre tabelle. In questo modo si implementa l'integrità dei dati. Il database non relazionale non fornisce questo vincoli costrutti che vi permetteranno di implementare l'integrità dei dati.

A meno che non implementano questo vincolo nell'applicazione front-end che viene utilizzato per popolare le tabelle dei database, si implementa un pasticcio che può essere confrontato con il selvaggio west.

In parole povere è fortemente strutturata vs non strutturati, il che implica che si hanno diversi gradi di capacità di adattamento per il vostro DB. Le differenze emergono in indicizzazione in particolare per quanto è necessario per garantire che un determinato indice di riferimento può collegare a un altro elemento -> questo una relazione. La struttura più rigida della relazionale DB viene da questo requisito.

Da notare che NosDB fornisce apaprently entrambi i DB relazionali e non relazionali e un modo per interrogare sia http://www.alachisoft.com/nosdb/sql-cheat-sheet.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top