relational-database - tra - rdbms




Qual è la differenza tra un database relazionale e non relazionale? (5)

Buona implementazione di database relazionali = bunker atomici
Buona implementazione di database non relazionali = Wild Wild West

In caso di un disastro fatale (bug / bug) dove saresti più sicuro? Se la mia vita dipenderebbe da un dato memorizzato in un database, sceglierei chiaramente il database relazionale.

Non trovo alcun valore nella perversione, intendo qual è il punto di reinventare una ruota che è già rotonda e la sua rotazione è a prova di proiettile? Anche congratulazioni a @Jerry Coffin per la sua risposta.

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

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

I termini di Layman sono preferibili.

Grazie.


Hmm, non sono sicuro di quale sia la tua domanda.

Nel titolo chiedi informazioni su Database (DB), mentre nel corpo del tuo testo chiedi informazioni su Database Management Systems (DBMS). I due sono completamente diversi e richiedono risposte diverse.

Un DBMS è uno strumento che consente di accedere a un DB.

Oltre ai dati stessi, un DB è il concetto di come questi dati sono strutturati.

Quindi, proprio come è possibile programmare con la metodologia Oriented Object con un compilatore non OO o viceversa, così è possibile impostare un database relazionale senza un RDBMS o utilizzare un RDBMS per archiviare dati non relazionali.

Mi concentrerò su ciò che significa Database relazionale (RDB) e lascerò la discussione su quali sistemi fanno agli altri.

Un database relazionale (il concetto) è una struttura dati che consente di collegare informazioni da diverse 'tabelle' o diversi tipi di data bucket. Un bucket di dati deve contenere ciò che viene chiamato chiave o indice (che consente di identificare in modo univoco qualsiasi blocco atomico di dati all'interno del bucket). Altri bucket di dati possono fare riferimento a quella chiave in modo da creare un collegamento tra i loro atomi di dati e l'atomo puntato dalla chiave.

Un database non relazionale memorizza i dati senza meccanismi espliciti e strutturati per collegare i dati di diversi bucket tra loro.

Per quanto riguarda l'implementazione di tale schema, se si dispone di un file cartaceo con un indice e in un diverso file cartaceo si fa riferimento all'indice per ottenere le informazioni rilevanti, allora si è implementato un database relazionale, anche se piuttosto semplice. Così vedi che non hai nemmeno bisogno di un computer (ovviamente può diventare noioso molto velocemente senza uno per aiutare), allo stesso modo non hai bisogno di un RDBMS, anche se probabilmente un RDBMS è lo strumento giusto per il lavoro. Detto questo, ci sono variazioni su cosa possono fare i diversi strumenti là fuori, quindi scegliere lo strumento giusto per il lavoro potrebbe non essere così semplice.

Spero che questo sia un termine sufficiente per i profani ed è utile per la vostra comprensione.


Il database relazionale utilizza un sistema formale di predicati per indirizzare i dati. L'implementazione fisica sottostante non ha sostanza e può variare per ottimizzare alcune operazioni, ma deve sempre assumere il modello relazionale . In parole povere, sto solo dicendo che so esattamente quanti valori (attributi) ogni riga (tupla) ha nella mia tabella (relazione) e ora voglio sfruttare il fatto di conseguenza, a fondo e al suo estremo. Questa è la vera natura della bestia.

Poiché siamo ovviamente la generazione che ha avuto un'educazione relazionale, se si guardano i modelli di database NoSQL dal punto di vista del modello relazionale, sempre in parole povere, la prima ovvia differenza è che nessuna ipotesi sul numero di valori di una riga può contenere è mai stato fatto. Questo semplifica eccessivamente la questione e non si applica in modo pulito alle complessità dei modelli fisici di ogni database NoSQL, ma è l'apice del modello relazionale e il primo assunto che dobbiamo lasciarci alle spalle o, se preferisci, il più grande salto che dobbiamo fare.

Siamo in grado di accettare due cose che sono vere per ogni DBMS: può memorizzare qualsiasi tipo di dati e ha sufficienti basi matematiche per rendere possibile la gestione dei dati in qualsiasi modo immaginabile. La realtà è che non vorrai mai commettere l'errore di mettere uno dei due punti alla prova, ma piuttosto limitarti a ciò che il vero DBMS è stato realmente realizzato. In parole povere: rispetta la bestia dentro!

(Si noti che ho evitato di confrontare gli standard (ovviamente) ben fondati che ruotano attorno al modello relazionale rispetto ai molti sapori forniti dai database NoSQL. Se si desidera, considerare i database NoSQL come un termine generico per qualsiasi DBMS che non completamente assumere il modello relazionale, in esclusione di tutto il resto, le differenze sono troppe, ma questa è la differenza principale e quella che penso sarebbe di maggior utilità per capire i due.)


La differenza tra relazionale e non relazionale è esattamente quella. L'architettura del database relazionale fornisce oggetti vincoli come chiavi primarie, chiavi esterne, ecc. Che consentono di legare due o più tabelle in una relazione. Ciò è utile per normalizzare le nostre tabelle, ovvero dividere le informazioni su ciò che il database rappresenta in molte tabelle diverse, una volta può mantenere l'integrità dei dati.

Ad esempio, supponiamo di avere una serie di tabelle che contengono informazioni su un dipendente. Non è possibile eliminare un record da una tabella senza eliminare tutti i record relativi a tale record dalle altre tabelle. In questo modo si implementa l'integrità dei dati. Il database non relazionale non fornisce questi costrutti di vincoli che consentiranno di implementare l'integrità dei dati.

A meno che non si implementi questo vincolo nell'applicazione front-end utilizzata per popolare le tabelle dei database, si sta implementando un pasticcio che può essere confrontato con il selvaggio west.


Prova a spiegare questa domanda in un livello che si riferisce a un po 'di tecnologia

Prendi MongoDB e SQL tradizionale per il confronto, immagina lo scenario di pubblicare un Tweet su Twitter. Questo tweet contiene 9 immagini. Come conservi questo tweet e le sue immagini corrispondenti?

In termini di relazione tradizionale SQL, è possibile memorizzare i tweet e le immagini in tabelle separate e rappresentare la connessione attraverso la creazione di una nuova tabella.

Inoltre, puoi impostare un campo che è un tipo di immagine e comprimere le 9 immagini in un documento binario e memorizzarle in questo campo.

Usando MongoDB, potresti creare 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"]

}

Pertanto, a mio parere, la differenza principale riguarda il modo in cui memorizzi i dati e il livello di archiviazione delle relazioni tra di essi.

In questo esempio, i dati sono il tweet e le immagini. Anche il diverso meccanismo sul livello di archiviazione della relazione tra loro gioca un ruolo importante nella differenza tra entrambi.

Spero che questo piccolo esempio aiuti a mostrare la differenza tra SQL e NoSQL (ACID e BASE).

Ecco un link di immagini sugli obiettivi di NoSQL da Internet:

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