Frage

Vor kurzem ich arbeite ein wenig mit MongoDB und ich habe mich wirklich wie es zu sagen. Allerdings ist es eine ganz andere Art von Datenbank dann bin ich verwendet. Ich habe bemerkt, dass es auf jeden Fall besser ist, für bestimmte Arten von Daten, jedoch für stark normalisierte Datenbanken es nicht die beste Wahl sein könnte.

Es scheint mir jedoch, dass sie vollständig an die Stelle der fast jede relationale Datenbank nehmen Sie haben können und in den meisten Fällen eine bessere Leistung, was Geist ist verblüffend. Dies führt mich ein paar Fragen zu stellen:

  1. dokumentenorientierte Datenbanken entwickelt die nächste Generation von Datenbanken zu sein und im Grunde relationalen Datenbanken vollständig ersetzen?
  2. Ist es möglich, dass die Projekte besser sowohl eine dokumentenorientierte Datenbank und eine relationale Datenbank Seite für verschiedene Daten an Seite wäre, die für die eine oder andere geeignet ist, besser mit?
  3. Wenn dokumentenorientierte Datenbanken nicht relationale Datenbanken ersetzen soll, dann jemand ein Beispiel einer Datenbankstruktur hat, die absolut besser in einer relationalen Datenbank (oder umgekehrt)?
  4. würde
War es hilfreich?

Lösung

  

Ist dokumentenorientierte Datenbanken entwickelt worden, die nächste Generation von Datenbanken zu sein und im Grunde relationale Datenbanken vollständig ersetzen?

Nein. Dokumentenorientierte Datenbanken (wie MongoDB) sind sehr gut auf die Art der Aufgaben, die wir in der Regel in der modernen Web-Sites (schnell-Lookups einzelner Elemente oder kleine Mengen von Elementen) sehen.

Aber sie machen einige große Kompromisse mit relationalen Systemen. Ohne Dinge wie ACID Compliance wird in der Lage ist sie bestimmt RDBMS nicht zu ersetzen. Und wenn Sie bei Systemen wie MongoDB aussehen, ist der Mangel an ACID Compliance ein großer Grund, warum es so schnell ist.

  

Ist es möglich, dass die Projekte besser sowohl eine dokumentenorientierte Datenbank und eine relationale Datenbank Seite für verschiedene Daten an Seite wäre, die für die eine oder andere geeignet ist, besser mit?

Ja. In der Tat, betreibe ich eine sehr große Produktion Web-Site, die beide verwendet. Das System wurde in MySQL gestartet, aber wir haben einen Teil davon über MongoDB, b migriert / c wir einen Schlüsselwert Speicher benötigen und MySQL ist einfach nicht sehr gut an einen Punkt in einer 150M Aufzeichnungen zu finden.

  

Wenn dokumentenorientierte Datenbanken nicht relationale Datenbanken ersetzen soll, dann jemand ein Beispiel einer Datenbankstruktur hat, die absolut besser in einer relationalen Datenbank (oder umgekehrt)?

wäre

dokumentenorientierte Datenbanken sind große Speicherdaten, die leicht in „Schlüsselwert“ enthalten ist und einfach, linear „Eltern-Kind“ Beziehungen. Einfache Beispiele hier sind Dinge wie Blogs und Wikis.

Doch relationale Datenbanken nach wie vor ein starkes Bein auf Dinge wie Berichterstattung auf, die "Set-based" zu sein scheint.

Ehrlich gesagt, kann ich eine Welt sehen, wo die meisten Daten „behandelt“ von dokumentenorientierte Datenbank, aber wo die Berichterstattung in einer relationalen Datenbank durchgeführt, die von Map-reduce Jobs aktualisiert wird.

Andere Tipps

Das ist wirklich eine Frage der Eignung für einen bestimmten Zweck.

Wenn Sie in der Lage sein, einige Tabellen miteinander zu verbinden und das Rück einen gefilterten Satz von Ergebnissen, können Sie nur das tun mit einer relationalen Datenbank. Wenn Sie ein atemberaubendes Tempo wollen und haben unglaubliche Datenmengen, das ist, wenn Spalte-Familie oder dokumentenorientierte Datenbanken auf ihre Kosten kommen.

Dies ist ein klassischer Trade-off. Relationale Datenbanken bieten Ihnen eine ganze Reihe von Funktionen, die mit einer Leistung Kosten kommt. Wenn Sie nicht teilnehmen können, Index, Scan oder eine ganz andere Liste von Funktionen ausführen, entfernen Sie die Notwendigkeit, jede Sicht auf alle Daten haben, mit dem Sie die Leistung und die Verteilung gibt müssen Sie ernsthaft Daten Knirschen.

Auch empfehle ich Ihnen, die Blogs von Ayende Rahien zu diesem Thema folgen.

http://ayende.com/blog/

@Sohnee ist vor Ort auf. Ich kann, dass relationale Datenbanken

hinzufügen
  • sind hervorragend für die Informationen, die in unerwarteten Kombinationen abrufen - auch wenn das gelegentlich führt zum Bad Idea umfangreichen Berichten über zeitkritische Produktionssysteme läuft zu werden, anstatt auf einem separaten Data Warehouse
  • .
  • sind eine ausgereifte Technologie, wo man leicht Personal und gut erprobte Lösungen auf eine beliebige Anzahl von Problemen (einschließlich der Grenzen des relationalen Modells sowie der unvollkommenen Implementierung, die SQL ist) finden kann.

Fragen Sie sich, was Sie tun wollen, und was Eigenschaften für Sie wichtig sind. Sie können in Shell-Skripten im Zusammenhang alles Programmierung tun. Möchten Sie?

halte ich die gleiche Frage, das ist, was mich hier gelandet. Ich benutze beide MySQL und MongoDB (nicht im Tandem zur Zeit, obwohl seine Idee). Ich muss ehrlich sagen, ich bin sehr glücklich, nie wieder MySQL zu berühren. Sicher gibt es die „ACID“ Compliance, aber haben Sie jemals in die Notwendigkeit, führen Sie Ihre Tabellen mit MySQL zu reparieren? Haben Sie schon einmal eine beschädigte Datenbank haben? Es passiert. Haben Sie jemals irgendwelche anderen Probleme mit MySQL haben? Jegliche Sperre Streitigkeiten oder Riegelschlösser? Probleme mit Clustering? Wie einfach war es einzurichten und zu konfigurieren?

MongoDB ... Sie schalten Sie ihn ein und fertig .... Dann autosharding es. Es ist unglaublich einfach und es ist auch unglaublich schnell. Also denken Sie darüber. Ihre Zeit.

Nein, sie haben keine JOINs aber es ist eine völlig falsche Aussage zu sagen, dass es mehr als 99% der Daten-Management-Anforderungen diskontiert wird. Ich bekomme oft Opposition, wenn MongoDB zu erklären versuchen, die Menschen selbst kichernd. Lassen Sie uns einfach ehrlich. Die Menschen wollen nicht, neue Dinge zu lernen und sie denken, dass alles, was sie brauchen, was sie wissen ist. Sicher, können Sie MySQL den Rest Ihres Lebens weg und geben Sie Ihre Web-Sites aufzubauen. Es funktioniert, wir wissen, dass es funktioniert. Wir wissen auch, es funktioniert nicht. Falls es nicht klappt, dann würden Sie nie die Frage stellen, und wir würden wahrscheinlich nicht so viele Dokument orientierten Datenbanken sehen. Wir wissen, dass ja, es tut Maßstab, aber es ist ein Schmerz im hinteren es zu skalieren.

Auch sie beseitigt Verkehr und die Skalierung von dem Bild. Nehmen Sie Setup. Nun wollen wir den Schwerpunkt auf die Verwendung. Was ist Ihre Erfahrung bei der Verwendung von MySQL? Wie gut sind Sie mit MySQL Architektur und effiziente Abfragen zu machen? Wie viel Zeit verbringen Sie mit Blick auf Abfragen mit EXPLAIN? Wie viel Zeit verbringen Sie Schemapläne zu machen? ... Ich sage nehmen, dass die Zeit zurück. Es ist besser ausgegeben anderswo.

Das ist meine zwei Cent. Ich weiß wirklich Liebe MongoDB und Hoffnung nie MySQL verwenden wieder und für die Art von Web-Seiten, die ich bauen, es ist sehr gut möglich, dass ich nicht brauchen. Obwohl ich immer noch, um herauszufinden, ich versuche, WENN ich MySQL über MongoDB verwenden möchte, nicht, wenn ich kann (lasst sie ehrlich, es speichert Daten, Glückwünsche, auch ich eine Tonne von XML-Dateien schreiben könnte, aber es ist keine gute Idee) , aber wenn es würden davon profitieren das eine oder andere zu verwenden. In der Zwischenzeit werde ich mit MongoDB meinen Job machen gehen und weniger Kopfschmerzen haben.

Solange Sie tun müssen, nicht Multi-Objekt-Transaktionen, MongoDB kann ein günstiger Ersatz für eine RDMBS sein, vor allem in einem Web-Anwendungskontext. Geschwindigkeit, schemalessness und Dokumentenmodellierung sind alle nützlich diese Domain.

Meiner Meinung nach dokumentenorientierte Datenbanken sind nur gut für die

  1. Datenbanken, die Daten besser ein hierarchisches Verwendung (Baum) Modells dargestellt wird. Dies ist für Website-Datenbanken nicht üblich.
  2. Datenbanken mit großer Menge an Daten, wie die Facebook und Amazon-Datenbanken. In diesem Fall ist es erforderlich, um die Vorteile des relationalen Modells zu opfern.

AFAIK, Dokumentendatenbanken sind keine JOIN. Das ist so ziemlich ein Show-Stopper für> 99% der Daten-Management-Anforderungen.

Wie Matthew Flaschen Punkte in den Kommentaren, selbst auf dem Desktop, Datenbanken wie SQLite ist SQL-Semantik Bereiche einzuführen, die traditionell Anstands Dateiformate oder XML verwendet hat.

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