Was ist der Unterschied zwischen einer relationalen und einer nicht-relationalen Datenbank?
Ich weiß, dass Lösungen wie MySQL, PostgreSQL und MS-SQL-Server sind relationale Datenbanksysteme, NoSQL, MongoDB, etc. sind Nicht-Relationale-DBMS.
Doch was sind die Unterschiede zwischen den beiden Arten von system ?
Laie Bedingungen vorzuziehen sind.
Dank.
InformationsquelleAutor der Frage marcamillion | 2011-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Relationale Datenbanken haben eine mathematische Grundlage (set-Theorie, relationale Theorie), die destilliert werden in SQL - = - = Structured Query Language.
NoSQL vielen Formen (z.B. Dokument-basierte, graph-basierte, Objekt-basiert, Schlüssel-Wert-Speicher, etc.) werden können oder nicht, basierend auf einem einzigen Untermauerung mathematische Theorie. S. Lott hat richtig darauf hingewiesen, hierarchische speichert die Daten in der Tat haben eine mathematische Grundlage. Das gleiche könnte gesagt werden, für graph-Datenbanken.
Ich bin mir nicht bewusst, eine Universelle Abfragesprache für NoSQL-Datenbanken.
InformationsquelleAutor der Antwort duffymo
Hmm, nicht ganz sicher, was deine Frage ist.
In der Titel, den Sie bitten, über Datenbanken (DB), in der Erwägung, dass in den Körper Ihres Textes, die Sie bitten, über Datenbank-Management-Systeme (DBMS). Die zwei sind völlig unterschiedlich und erfordern unterschiedliche Antworten.
Ein DBMS ist ein Werkzeug, das erlaubt Ihnen den Zugriff auf eine DB.
Andere als die Daten selbst, eine DB ist das Konzept, wie diese Daten strukturiert sind.
So genau wie Sie können-Programms mit Objekt-Orientierte Methodik, mit einer nicht-OO-powered-compiler, oder Umgekehrt, so können Sie Aufbau einer relationalen Datenbank, ohne dass ein RDBMS, oder verwenden Sie ein RDBMS zum speichern von nicht-relationalen Daten.
Konzentriere ich mich auf welche Relationale Datenbank (RDB) bedeutet und lassen die Diskussion darüber, welche Systeme für andere zu tun.
Einer relationalen Datenbank (der Begriff) ist eine Datenstruktur, die ermöglicht das verknüpfen von Informationen aus unterschiedlichen "Tafeln", oder verschiedene Arten von Daten-buckets. Eine Daten-bucket enthalten muss, was heißt, ein Schlüssel oder index (die es ermöglicht, Sie eindeutig zu identifizieren, jede Atomare Stück von Daten innerhalb der Eimer). Andere Daten-buckets kann finden, dass key so erstellen Sie eine Verknüpfung zwischen Ihren Daten-Atome und atom zeigte auf, indem Sie die-Taste.
Eine nicht-relationale Datenbank speichert Daten ohne explizite und strukturierte Mechanismen zur Verknüpfung von Daten aus unterschiedlichen Perioden miteinander.
Als die Umsetzung einer solchen Regelung, wenn Sie ein Papier-Datei mit einem index und in einem unterschiedlichen Papier-Datei, die Sie verweisen Sie auf index, um auf die relevanten Informationen, die Sie umgesetzt haben, eine relationale Datenbank, wenn auch ein ganz einfaches. So sehen Sie, dass Sie brauchen noch nicht einmal einen computer (natürlich kann es sehr mühsam werden sehr schnell ohne Hilfe), ebenso brauchen Sie nicht ein RDBMS, wohl aber ein RDBMS ist das richtige Werkzeug für den job. Das sagte, es gibt Variationen, was die verschiedenen tools gibt, tun können, so wählen Sie das richtige tool für den job wahrscheinlich nicht ganz einfach.
Ich hoffe, dass dies auch der Laie Begriffe genug und ist nützlich, um Ihr Verständnis.
InformationsquelleAutor der Antwort asoundmove
Meiste von dem, was Sie "wissen" falsch ist.
Erste von allen, wie ein paar von den relationalen gurus routinemäßig (und manchmal lautstark) darauf hin, SQL passt nicht wirklich annähernd so eng mit relationaler Theorie als viele Leute denken. Zweitens, die meisten Unterschiede in der "NoSQL" - Zeug hat relativ wenig damit zu tun, ob es relational ist oder nicht. Endlich, es ist ziemlich schwer zu sagen, wie "NoSQL" unterscheidet sich von SQL, weil beide repräsentieren ein ziemlich breites Spektrum an Möglichkeiten.
Dem einen großen Unterschied, dass Sie zählen können, ist, dass fast alles, die SQL unterstützt unterstützt Dinge wie Trigger in der Datenbank selbst, D. H. Sie können die design-Regeln in die Datenbank richtigen, die dazu bestimmt sind, um sicherzustellen, dass die Daten immer konsistent. Beispielsweise können Sie Dinge einrichten, damit Ihre Datenbank behauptet, dass eine person muss haben eine Adresse. Wenn Sie dies tun, Wann immer Sie hinzufügen eine person, wird es im Grunde die Kraft zu assoziieren, die person mit einigen-Adresse. Man könnte hinzufügen, eine neue Adresse, oder Sie vielleicht assoziieren Sie mit einigen vorhandenen Adresse, aber die eine oder andere Weise, die person muss eine Adresse. Ebenso, wenn Sie eine Adresse löschen, es wird Sie zwingen, entweder entfernen Sie alle die Menschen, die derzeit unter dieser Adresse, oder ordnen Sie jedem mit einigen anderen Adresse. Sie können das gleiche tun für die anderen Beziehungen, wie zum Beispiel sagen, jeder Mensch hat eine Mutter, jedes Amt muss eine Telefon-Nummer, usw.
Beachten Sie, dass diese Arten von Dinge, die sind garantiert auch passieren atomar, also, wenn jemand schaut auf die Datenbank, wie Sie sind das hinzufügen der person, werden Sie entweder nicht sehen, die person, oder sonst Sie ' ll sehen die person, die mit die Adresse (oder der Mutter, etc.)
Meisten NoSQL-Datenbanken tun nicht versuchen, diese Art der Vollstreckung, die in der Datenbank richtig. Es ist bis zu Sie, in den code, der die Datenbank verwendet, um durchzusetzen, Beziehungen, die für Ihre Daten. In den meisten Fällen ist es auch möglich, die Daten sehen, ist nur teilweise richtig, auch wenn Sie einen Stammbaum, wo jede person soll verbunden sein mit den Eltern, es kann mal sein, dass was auch immer Einschränkungen haben Sie auferlegt, nicht wirklich durchgesetzt werden. Einige lassen das nicht zu. Andere garantieren, dass es nur passiert, vorübergehend, obwohl genau, wie lange es dauern kann/wird der Letzte sein kann, offen in Frage zu stellen.
InformationsquelleAutor der Antwort Jerry Coffin
In der relationalen Datenbank verwendet ein formales system von Prädikaten, um die Adressdaten. Die zugrunde liegenden physikalischen Implementierung ist keine Substanz und können variieren, zu optimieren für bestimmte Operationen, aber es muss immer davon ausgehen das relationales Modell. In juristischer Hinsicht, das ist einfach zu sagen: ich weiß genau, wie viele Werte (Attribute) jede Zeile (Tupel) in meine Tabelle (relation) hat, und jetzt will ich ausnutzen der Tatsache entsprechend, gründlich und zu extrem. Das ist die wahr Natur des Tieres.
Da wir offensichtlich die generation gehabt hat, dass eine relationale Erziehung, wenn Sie einen Blick auf NoSQL-Datenbank-Modelle aus der Perspektive des relationalen Modells, wieder laienhaft ausgedrückt, der erste offensichtliche Unterschied ist, dass keine Annahmen über die Anzahl der Werte eine Zeile enthalten kann, die je gemacht habe. Das ist wirklich zu kurz gedacht die Sache und nicht sauber anwenden, um die Feinheiten der physikalischen Modelle jeder NoSQL-Datenbank, aber es ist der Höhepunkt des relationalen Modells und die erste Annahme, die wir haben, hinter sich zu lassen oder, wenn Sie lieber, den größten Sprung haben wir zu stellen.
Können wir Zustimmen, zwei Dinge, die wahr sind für jedes DBMS: es können jede Art von Daten und hat genug mathematische Grundlagen machen es möglich, Daten zu verwalten, die in jede erdenkliche Weise. Die Realität ist, dass Sie nie wollen, machen den Fehler und setzen jedes der zwei Punkte auf den test, sondern nur stick mit, was das eigentliche DBMS wurde wirklich gemacht. In juristischer Hinsicht: Respekt das Tier innerhalb!
(Bitte beachten Sie, dass ich habe vermieden, den Vergleich der (offensichtlich) gut fundierten standards, die sich rund um das relationale Modell gegen die vielen Geschmacksrichtungen zur Verfügung gestellt von NoSQL-Datenbanken. Wenn Sie möchten, sollten NoSQL-Datenbanken als Oberbegriff für alle DBMS, die nicht komplett übernehmen, das relationale Modell, unter Ausschluss alles anderen. Die Unterschiede sind zu viele, aber das ist der Hauptunterschied und die, die ich denke, wäre von den meisten nutzen für Sie zu verstehen die beiden.)
InformationsquelleAutor der Antwort Filip Dupanović
Versuchen zu erklären, diese Frage in einer Ebene unter Bezugnahme auf ein wenig Technik
Nehmen MongoDB und Traditionellen SQL-zum Vergleich vorstellen, das Szenario, die das posten eines Tweets auf Twitter. Dieser tweet enthält 9 Bilder. Wie Sie speichern diesen tweet und den entsprechenden Bildern?
In Bezug auf die traditionelle Beziehung, SQL, können Sie speichern die tweets und Bilder in separaten Tabellen, und stellen die Verbindung durch den Bau einer neuen Tabelle.
Was mehr ist, können Sie ein Feld, auf dem ein Bild geben, und zip die 9 Bilder in ein binäres Dokument und speichern Sie es in dieses Feld.
Mit MongoDB, Sie bauen konnte einem Dokument wie diesem (ähnlich dem Konzept einer Tabelle in relationalen SQL):
Daher, meiner Meinung nach, der wesentliche Unterschied ist, über wie Speichere ich die Daten und die Speicherung der Ebene der Beziehungen zwischen Ihnen.
In diesem Beispiel werden die Daten der tweet und die Bilder. Der andere Mechanismus, über Lagerung Ebene der Beziehung zwischen Ihnen spielen eine wichtige Rolle in der Unterschied zwischen den beiden.
Ich hoffe dieses kleine Beispiel hilft zu zeigen, den Unterschied zwischen SQL und NoSQL (SÄURE und BASE).
Hier ist ein link der Bild über die Ziele der NoSQL-aus dem Internet:
http://icamchuwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/dbc795f6f262e9d01fa0ab9b323b2dd1_b.png
InformationsquelleAutor der Antwort Cam Chu
Den Unterschied zwischen relationalen und nicht-relationalen, ist genau das. Das relationale Datenbank-Architektur bietet mit Einschränkungen Objekte wie Primärschlüssel, Fremdschlüssel, etc, der einem ermöglicht, zu binden zwei oder mehr Tabellen in einer Beziehung. Das ist gut, so dass wir normalisieren Sie die Tabellen, die sagen, split-Informationen über das, was die Datenbank repräsentiert, in der viele verschiedene Tabellen, einmal kann die Integrität der Daten.
Zum Beispiel, sagen, Sie haben eine Reihe von Tabellen, die Häuser, die Informationen über einen Mitarbeiter. Sie konnte nicht löschen, einen Datensatz aus einer Tabelle löschen, ohne alle Datensätze, die sich auf solchen Datensatz aus der anderen Tabellen. Auf diese Weise implementieren Sie die Integrität der Daten. Die nicht-relationale Datenbank, die keine dieser Einschränkungen konstruiert, die es ermöglichen das implementieren von Datenintegrität.
Sofern Sie nicht implementieren diese Einschränkung in der front-end-Anwendung, die genutzt wird zum Auffüllen von Datenbanken-Tabellen, implementieren Sie ein Durcheinander, das verglichen werden kann mit dem wilden Westen.
InformationsquelleAutor der Antwort Zoty De La Mota
Gut Relationalen Datenbanken Umsetzung = Atomic Bunker
Gute Nicht-Relationalen Datenbanken-Implementierung = Wild Wild West
Im Falle einer tödlichen Katastrophe (bug/Fehler) wo würden Sie sein, sicher?
Wenn mein Leben davon abhängen würde einem in einer Datenbank gespeicherten Daten, würde ich klar wählen Sie die relationale Datenbank.
Finde ich keinen Wert in kinkyness, ich meine, was ist der Punkt, immer wieder neu zu erfinden ein Rad, das ist schon rund und es die Drehung der Kugel-Beweis?
Auch Glückwunsch an @Jerry Sarg für seine Antwort.
InformationsquelleAutor der Antwort Cristian