Frage

Ich weiß, dass Lösungen wie MySQL, PostgreSQL und MS SQL Server relationale Datenbanksysteme und NoSQL, MongoDB usw. nicht-relationale DBMs sind.

Was sind jedoch die Unterschiede zwischen den beiden Systemtypen?

Laienbegriffe sind vorzuziehen.

Vielen Dank.

War es hilfreich?

Lösung

Relationale Datenbanken haben eine mathematische Grundlage (festgelegte Theorie, relationale Theorie), die in SQL == Structured Query Sprache destilliert werden.

Die vielen Formulare von NOSQL (z. B. dokumentbasierte, grafische, objektbasierte, Schlüsselwertespeicher usw.) können auf einer einzelnen mathematischen Theorie basieren oder nicht. Wie S. lott richtig hervorgehoben hat, Hierarchisch Datenspeicher haben in der Tat eine mathematische Grundlage. Das gleiche kann gesagt werden für Grafikdatenbanken.

Mir ist eine universelle Abfragesprache für NoSQL -Datenbanken nicht bekannt.

Andere Tipps

Hmm, nicht ganz sicher, was Ihre Frage ist.

In dem Titel, den Sie nach Datenbanken (DB) fragen, während Sie im Körper Ihres Textes nach Datenbankverwaltungssystemen (DBMS) fragen. Die beiden sind völlig unterschiedlich und erfordern unterschiedliche Antworten.

Ein DBMS ist ein Tool, mit dem Sie auf ein DB zugreifen können.

Abgesehen von den Daten selbst ist ein DB das Konzept, wie diese Daten strukturiert sind.

Genau wie Sie mit einer orientierten Objektmethode mit einem nicht-oo-betriebenen Compiler oder umgekehrt programmieren können, können Sie also eine relationale Datenbank ohne RDBMS einrichten oder ein RDBMS verwenden, um nicht-relationale Daten zu speichern.

Ich werde mich darauf konzentrieren, was die relationale Datenbank (RDB) bedeutet, und die Diskussion darüber überlassen, was Systeme anderen tun.

Eine relationale Datenbank (das Konzept) ist eine Datenstruktur, mit der Sie Informationen aus verschiedenen „Tabellen“ oder verschiedenen Arten von Datenklappen verknüpfen können. Ein Daten -Bucket muss einen sogenannten Schlüssel oder Index enthalten (mit dem ein einzigartiges Atombeuge von Daten innerhalb des Eimers identifiziert werden kann). Andere Datenbahnen können sich auf diesen Schlüssel beziehen, um einen Zusammenhang zwischen ihren Datenatomen und dem Atom zu erstellen, auf das der Schlüssel hingewiesen wird.

Eine nicht-relationale Datenbank speichert nur Daten ohne explizite und strukturierte Mechanismen, um Daten von verschiedenen Eimern miteinander zu verknüpfen.

Wenn Sie ein solches Schema implementieren, beziehen Sie sich zur Implementierung einer Papierdatei mit einem Index und in einer anderen Papierdatei, um die relevanten Informationen zu erhalten, eine relationale Datenbank implementiert, wenn auch eine ganz einfache. Sie sehen also, dass Sie nicht einmal einen Computer benötigen (natürlich kann er sehr schnell ohne Hilfe mühsam werden), in ähnlicher Weise benötigen Sie kein RDBMS, obwohl wohl ein RDBMS das richtige Werkzeug für den Job ist. Das heißt, es gibt Variationen darüber, was die verschiedenen Tools dort draußen ausführen können, um das richtige Werkzeug für den Job zu wählen, das nicht so unkompliziert ist.

Ich hoffe, dass dies Laienbegriffe genug ist und für Ihr Verständnis hilfreich ist.

Das meiste, was Sie "wissen", ist falsch.

Erstens, wie einige der relationalen Gurus routinemäßig (und manchmal streng) hervorheben, passt SQL nicht wirklich so eng mit der relationalen Theorie, wie viele Menschen denken. Zweitens hat die meisten Unterschiede in "NoSQL" -Matern relativ wenig damit zu tun, ob es relational ist oder nicht. Schließlich ist es ziemlich schwierig zu sagen, wie sich "nosql" von SQL unterscheidet, weil beide eine ziemlich breite Palette von Möglichkeiten darstellen.

Der einzige Hauptunterschied, auf den Sie zählen können, ist, dass fast alles, was SQL unterstützt, Dinge wie Auslöser in der Datenbank selbst unterstützt. Zum Beispiel können Sie Dinge einrichten, damit Ihre Datenbank behauptet, dass eine Person muss eine Adresse haben. Wenn Sie dies tun, zwingen Sie jederzeit, wenn Sie eine Person hinzufügen, im Grunde, diese Person mit einer Adresse zu verbinden. Sie können eine neue Adresse hinzufügen, oder Sie können sie mit einer vorhandenen Adresse in Verbindung bringen, aber die Person muss jedoch auf die eine oder andere Weise eine Adresse haben. Wenn Sie eine Adresse löschen, zwingt sie Sie auch, entweder alle Personen an dieser Adresse zu entfernen oder jeweils eine andere Adresse zu verknüpfen. Sie können dasselbe für andere Beziehungen tun, z. B. sagen, dass jede Person eine Mutter haben muss, jedes Büro muss eine Telefonnummer haben usw.

Beachten Sie, dass diese Art von Dingen auch atomisch garantiert passieren. Wenn also jemand anderes die Datenbank ansieht, wenn Sie die Person hinzufügen, werden sie die Person entweder überhaupt nicht sehen, oder sie werden die Person sehen mit die Adresse (oder die Mutter usw.)

Die meisten NoSQL -Datenbanken tun dies nicht Versuchen Sie, diese Art von Durchsetzung in der richtigen Datenbank bereitzustellen. Es liegt an Ihnen, in dem Code, der die Datenbank verwendet, um alle für Ihre Daten erforderlichen Beziehungen durchzusetzen. In den meisten Fällen ist es auch möglich, Daten zu sehen, die nur teilweise korrekt sind. Selbst wenn Sie einen Stammbaum haben, in dem jede Person mit Eltern in Verbindung gebracht werden soll, kann es Zeiten geben durchgesetzt. Einige lassen Sie das nach Belieben tun. Andere garantieren, dass es nur vorübergehend vorkommt, obwohl genau wie lange es dauern kann/wird, kann offen sein.

Die relationale Datenbank verwendet ein formales System von Prädikaten, um Daten zu adressieren. Die zugrunde liegende physikalische Implementierung ist keine Substanz und kann variieren, um für bestimmte Operationen zu optimieren, muss jedoch immer das annehmen Relationales Modell. In den Laien -Worten sagt das nur Ich weiß genau, wie viele Werte (Attribute) jede Zeile (Tupel) in meiner Tabelle (Beziehung) hat, und jetzt möchte ich die Tatsache entsprechend, gründlich und bis zu ihrem extremen. Das ist das Stimmt Natur des Tieres.

Da wir offensichtlich die Generation sind, die eine relationale Erziehung hatte, wenn Sie sich NoSQL -Datenbankmodelle aus der Perspektive des relationalen Modells ansehen, ist der erste offensichtliche Unterschied, dass keine Annahmen über die Anzahl der Werte, die eine Zeile kann enthalten wird jemals hergestellt. Dies ist die Angelegenheit wirklich zu vereinfachen und gilt nicht sauber für die Feinheiten der physischen Modelle jeder NoSQL Sprung müssen wir machen.

Wir können zwei Dinge zustimmen, die für jedes DBMS zutreffen: Sie können alle Art von Daten speichern und verfügt über genügend mathematische Grundlagen, um die Daten auf jede erdenkliche Weise zu verwalten. Die Realität ist, dass Sie niemals den Fehler machen möchten, einen der beiden Punkte auf den Test zu setzen, sondern sich nur an das halten, wofür die tatsächlichen DBMs wirklich gemacht wurden. In Laien: Respektiere das Tier im Inneren!

(Bitte beachten Sie, dass ich es vermieden habe, die (offensichtlich) gut gegründeten Standards zu vergleichen, die sich um das relationale Modell mit den vielen von NOSQL -Datenbanken bereitgestellten Geschmacksrichtungen drehen Nehmen wir das relationale Modell im Ausschluss auf alles andere an.

Versuchen Sie, diese Frage in einer Ebene zu erklären, die sich auf eine kleine Technologie bezieht

Nehmen Sie Mongodb und traditionelles SQL zum Vergleich vor. Stellen Sie sich das Szenario vor, einen Tweet auf Twitter zu veröffentlichen. Dieser Tweet enthält 9 Bilder. Wie speichern Sie diesen Tweet und seine entsprechenden Bilder?

In Bezug auf die traditionelle Beziehung SQL können Sie die Tweets und Bilder in separaten Tabellen speichern und die Verbindung durch Erstellen einer neuen Tabelle darstellen.

Darüber hinaus können Sie ein Feld einstellen, das sich um einen Bildtyp handelt, und die 9 Bilder in ein binäres Dokument einziehen und in diesem Bereich speichern.

Mit MongoDB können Sie ein solches Dokument erstellen (ähnlich dem Konzept einer Tabelle in relationaler SQL):

{

"id":"XXX",

"user":"XXX",

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

"content":{

"text":"XXXX",

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

}

Meiner Meinung nach besteht der Hauptunterschied darin, wie Sie die Daten und die Speicherebene der Beziehungen zwischen ihnen speichern.

In diesem Beispiel sind die Daten der Tweet und die Bilder. Der unterschiedliche Mechanismus zum Speichern der Beziehung zwischen ihnen spielt auch eine wichtige Rolle in der Unterschiede zwischen beiden.

Ich hoffe, dieses kleine Beispiel zeigt den Unterschied zwischen SQL und NoSQL (Säure und Base).

Hier ist ein Link des Bildes über die Ziele von NoSQL aus dem Internet:

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

Der Unterschied zwischen relationaler und nicht-relationaler Bedeutung ist genau das. Die relationale Datenbankarchitektur bietet Einschränkungen von Objekten wie Primärschlüssel, Fremdschlüssel usw., mit denen man zwei oder mehr Tabellen in einer Beziehung binden kann. Dies ist gut, damit wir unsere Tabellen normalisieren, dh geteilte Informationen darüber, was die Datenbank in vielen verschiedenen Tabellen darstellt, einmal die Integrität der Daten beibehalten kann.

Angenommen, Sie haben eine Reihe von Tabellen, in denen Informationen über einen Mitarbeiter untergebracht sind. Sie konnten einen Datensatz nicht aus einer Tabelle löschen, ohne alle Datensätze zu löschen, die sich auf einen solchen Datensatz aus den anderen Tabellen beziehen. Auf diese Weise implementieren Sie die Datenintegrität. Die nicht-relationale Datenbank enthält diese Einschränkungen Konstrukte nicht, mit denen Sie die Datenintegrität implementieren können.

Wenn Sie diese Einschränkung nicht in der Front -End -Anwendung implementieren, die verwendet wird, um die Tabellen der Datenbanken zu füllen, implementieren Sie ein Chaos, das mit dem Wildwesten verglichen werden kann.

In Laienbegriffen ist es stark strukturiert gegenüber unstrukturiert, was bedeutet, dass Sie unterschiedliche Anpassungsgrade für Ihre DB haben. Unterschiede in der Indexierung, insbesondere wenn Sie sicherstellen müssen, dass ein bestimmter Referenzindex mit einem anderen Element verknüpft ist -> diese Beziehung. Die strengere Struktur der relationalen DB kommt aus dieser Anforderung.

Zu beachten, dass NOSDB apaprent sowohl relationale als auch nicht relationale DBs und einen Weg zur Abfrage bietet http://www.alachisoft.com/nosdb/sql--teeet.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top