Warum sind relationale Datenbanken mit Skalierbarkeit?
Recenctly ich Lesen Sie einige Artikel online, der angibt, relationale Datenbanken skalieren Themen und nicht gut zu verwenden, wenn es um big data. Speziell in cloud-computing, wo die Daten ist groß. Aber konnte ich nicht finden gute Gründe, warum es nicht skalierbar viel, durch googeln. Kannst du bitte erklären Sie mir die Grenzen von relationalen Datenbanken, wenn es um die Skalierbarkeit?
Dank.
- Definieren "nicht skalierbar". Viele Fische und eine Stack-Overflow-verwenden von relationalen Datenbanken und erhalten Sie Millionen von hits pro Tag.
- Mein Punkt oben ist, dass viele Leute, die sagen, dass die relationale Datenbank, die nicht skalierbar sind die gleichen diejenigen, die nicht wissen, wie Sie Sie effektiv nutzen können.
- Ja. Ich sehe, Sie haben einen Punkt haben. Websites wie stack overflow, um Millionen von hits pro Tag und klar zu relationalen Datenbanken verfügen über die Fähigkeit, es zu handhaben. Aber ich bin versucht zu klären, selbst ist, kann das problem hier ist mit der Effizienz oder der Kosten usw... das ist Das, was ich wissen will. Ich bin gerade versucht, einen offenen Geist zu behalten 😉
- Um auf Ihre Frage. Relationale Datenbank-support - ACID - das ist teuer. Viele NoSQL-Lösungen entfernen Sie eine oder mehrere der Einschränkungen SÄURE erlegt (also ein trade-off zwischen SÄURE und Geschwindigkeit).
- Mögliche Duplikate von Warum NoSQL ist besser bei der "Skalierung" als RDBMS?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Relationale Datenbanken bilden eine solide, Reife Leistung laut SÄURE Eigenschaften. Wir bekommen transaction-handling, effiziente Protokollierung zu aktivieren recovery etc. Dies sind die Kern-Dienstleistungen der relationalen Datenbanken, und diejenigen, die Sie gut können. Sie sind schwer zu passen, und könnte betrachtet werden als ein Engpass, vor allem, wenn Sie brauchen Sie nicht in einer bestimmten Anwendung (zB. dienen website-Inhalte mit geringer Bedeutung; in diesem Fall zum Beispiel das weit verbreitete MySQL nicht bietet, Transaktion, Umgang mit der Standard-storage-engine und ist daher nicht befriedigen SÄURE). Viele "big data" - Probleme erfordern nicht diese strengen Auflagen, zum Beispiel web-analytics, web-Suche oder Verarbeitung von beweglichen Objekt-Trajektorien, wie Sie bereits unter anderem die Unsicherheit durch die Natur.
Beim erreichen der Grenzen eines bestimmten Computers (Speicher, CPU, disk: die Daten sind zu groß, oder Weiterverarbeitung der Daten ist zu kompliziert und teuer), die Verteilung der service ist eine gute Idee. Viele von relationalen und NoSQL-Datenbanken bieten distributed storage. In diesem Fall sind jedoch die SÄURE stellt sich heraus, schwierig zu sein, zu befriedigen: die CAP-theorem Staaten etwas ähnlich, die Verfügbarkeit, Konsistenz und partition tolerance kann nicht erreicht werden, zur gleichen Zeit. Wenn wir aufgeben, SÄURE (befriedigend BASE zum Beispiel), Skalierbarkeit verbessert werden kann.
Sehen diese post zB. für die Kategorisierung der Lagerung-Methoden, die nach CAP.
Einen anderen Engpass könnte die flexible und clevere eingegeben relationale Modell selbst mit SQL-Operationen: in vielen Fällen ein einfacheres Modell mit einfacher Operationen ausreichen würde und mehr effizient (wie untypisierter key-value-stores). Die gemeinsame Zeilen-Weise den physischen storage-Modell könnte auch die Einschränkung: zum Beispiel ist es nicht optimal für Daten-Komprimierung.
Gibt es jedoch schnelle und skalierbare, ACID-konforme relationale Datenbanken, einschließlich der neuen, wie VoltDB, wie die Technologie der relationalen Datenbanken ist ausgereift, gut erforscht und weit verbreitet. Wir haben nur zu wählen, eine geeignete Lösung für das gegebene problem.
Stellen Sie sich zwei verschiedene Arten von Kreuzungen.
Hat man Ampeln oder Polizeibeamte Verkehr Regeln, Bewegung auf der Kreuzung ist bei beschränkter Geschwindigkeit, und es ist ein watchdog-Registrierung genau was für ein Auto fuhr auf die Kreuzung zu welchem Zeitpunkt genau und in welche Richtung es ging.
Der andere hat keine, und jeder, der kommt an der Kreuzung an der gewünschten Geschwindigkeit, die er fährt, nur Tauchgänge in und will sich durch so schnell wie möglich.
Erstere ist die traditionelle Datenbank-engine. Die Kreuzung der Daten selbst. Die Autos sind die Transaktionen, die Zugriff auf die Daten. Die Ampeln oder Polizisten ist das DBMS. Der Wachhund hält die Protokolle und Journale.
Letzteres ist ein NOACID Art des Motors.
Beide haben einen Sättigungspunkt, an welcher Stelle parkenden Autos gezwungen sind, starten wir in der Schlange standen an den einspeisepunkten. Beide haben einen maximalen Durchsatz. Diese Schwelle liegt bei einem niedrigeren Wert für die ehemalige Art der Kreuzung und der Grund sollte offensichtlich sein.
Den Vorteil der früheren Art der Kreuzung, sollte aber auch klar sein. Weise weniger Gelegenheit für Unfälle passieren. Auf die zweite Art der Kreuzung, können Sie erwarten, dass Unfälle nicht nur dann stattfindet, wenn die Verkehrsdichte ist auf einem viel viel niedrigeren Punkt als dem theoretischen maximalen Durchsatz von der Kreuzung. Und in der übersetzung zum management von Daten-engines, der es übersetzt, um eine Gewährleistung der einheitlichen und kohärenten Ergebnisse, die nur die ehemalige Art der Kreuzung (die klassischen Datenbank-engine, ob relationale oder Netzwerk-oder hierarchischen) liefern kann.
Die Analogie kann weiter gestreckt werden. Sich vorstellen, was passiert, wenn ein Unfall passiert. Auf die zweite Art der Kreuzung, das Hauptaugenmerk wird wahrscheinlich sein, deaktivieren Sie die Straße so schnell wie möglich, so dass der Verkehr wieder aufnehmen können, und wenn das geschehen ist, info, was noch verfügbar ist, zu untersuchen, wer den Unfall verursacht und wie ? Gar nichts. Es wird nicht bekannt sein. Die Kreuzung ist offen, die nur darauf warten für den nächsten Unfall zu passieren. Bei der geregelten Kreuzung, dort ist der Polizist zur Regelung des Verkehrs, der gesehen hat, was passiert ist und können es bezeugen. Es gibt die Protokolle sagen, welches Auto eingegeben, zu welchem Zeitpunkt genau, an dem Einstiegspunkt genau, bei welcher Geschwindigkeit genau, eine Menge material zur Verfügung für die Inspektion, um zu bestimmen, die Ursache des Unfalls. Aber natürlich keiner, der kommt, for free.
Bunt genug als Erklärung ?
Nehmen das einfachste Beispiel: einfügen einer Zeile mit der generierten ID. Da IDs eindeutig sein müssen, innerhalb der Tabelle, Datenbank muss irgendwie sperren, eine Art von persistenten Zähler, so dass keine andere EINFÜGEN verwendet den gleichen Wert. So haben Sie zwei Möglichkeiten: entweder zulassen, dass nur eine Instanz um Daten zu schreiben oder zu vergeben haben, zu sperren. Beide Lösungen sind in einer großen Flasche-beck - und das einfachste Beispiel!