Warum können relationale Datenbanken nicht die Skalen von Big Data erfüllen?


17

Es wird häufig wiederholt, dass das Big-Data-Problem darin besteht, dass relationale Datenbanken nicht skaliert werden können, um die enormen Datenmengen zu verarbeiten, die derzeit erstellt werden.

Aber an welche Skalierbarkeitsbeschränkungen sind Big Data-Lösungen wie Hadoop nicht gebunden? Warum können Oracle RAC- oder MySQL-Sharding oder MPP-RDBMS wie Teradata (usw.) diese Leistungen nicht erbringen?

Ich bin an den technischen Einschränkungen interessiert - mir ist bewusst, dass die finanziellen Kosten für das Clustering von RDBMS unerschwinglich sein können.

Antworten:


15

MS hatte gerade ein Technikgespräch in den Niederlanden, in dem sie einige dieser Dinge besprachen. Es fängt langsam an, geht aber nach etwa 20 Minuten in das Fleisch von Hadoop über.

Der Kern davon ist, dass "es abhängt". Wenn Sie eine vernünftig angeordnete, (zumindest etwas) einfach zu partitionierende Datenmenge haben, die (zumindest etwas) homogen ist, sollte es mit einem RDBMS relativ einfach sein, sie auf diese hohen Datenmengen zu skalieren, je nachdem, was Sie tun .

Hadoop und MR scheinen eher auf Situationen ausgerichtet zu sein, in denen Sie zu umfangreichen verteilten Scans von Daten gezwungen sind, insbesondere wenn diese Daten nicht unbedingt so homogen oder strukturiert sind wie in der RDBMS-Welt.

An welche Einschränkungen sind Big Data-Lösungen nicht gebunden? Für mich ist die größte Einschränkung, an die sie nicht gebunden sind, ein starres Schema im Voraus zu erstellen. Mit Big Data-Lösungen verschieben Sie jetzt große Datenmengen in die "Box" und fügen Ihren Abfragen später Logik hinzu, um die mangelnde Homogenität der Daten zu beheben. Aus der Sicht eines Entwicklers besteht der Kompromiss in der einfachen Implementierung und Flexibilität des Frontends des Projekts, im Gegensatz zur Komplexität bei der Abfrage und in einer weniger unmittelbaren Datenkonsistenz.


Danke Dave, Sie bringen mich näher an das heran, was ich herausfinden möchte. Sie sagen, Hadoop ist auf Situationen mit großen verteilten Scans ausgerichtet - wenn einige / viele RDBMS über Cluster-Lösungen (RAC, Shards, MPP usw.) verfügen, warum können sie das nicht auch? Was macht es für ein RDBMS unmöglich, 10 Billionen Datensätze in 16 Stunden zu sortieren, wie es ein sehr großer Hadoop-Cluster kann? siehe hier
Jeremy Beard

2
Nichts macht es einem RDBMS-Cluster unmöglich, diese Art von Arbeit auszuführen, und Sie können ein RDBMS so konfigurieren, dass es für diese Art von Aufgaben skaliert wird. Das Problem mit einem RDBMS ist, dass Sie dafür sehr vorsichtig sein müssen, wie Sie Ihr Schema und Ihre Partitionen strukturieren, damit es funktioniert. Big Data-Architekturen gewinnen, wenn Ihre Daten nicht so strukturiert sind, dass sie in einem RDBMS einfach oder effektiv partitioniert und optimiert werden können.
Dave Markle

1
Inkompetente Datenbankentwickler machen es schwierig, relationale Datenbanken zu skalieren. Zu viele Unternehmen glauben, dass Anwendungsentwickler Datenbanken entwerfen können (oder, schlimmer noch, ORMS verwenden, um das Design durchzuführen), wenn sie von Anfang an kompetente Datenbankentwickler einstellen müssen. Die zweite Person, die Sie für ein Projekt mit Daten einstellen, sollte der Datenbankentwickler sein.
HLGEM

3
@HLGEM: Meine Antwort darauf lautet "meh". Die effektivsten Entwickler werden diejenigen sein, die beide Seiten des Stacks verstehen - die Idee, dass es so etwas wie einen guten "Anwendungsentwickler" gibt, der die ganze Zeit mit einem RDBMS arbeitet, ohne zu wissen, wie es funktioniert, ist ein Trugschluss . Ebenso ist die Idee, dass es so etwas wie einen guten "Datenbankentwickler" gibt, der ORMs oder die Anwendungsseite davon nicht versteht, IMO, ein Irrtum.
Dave Markle

6

Datenbank - Pionier und Forscher Michael Stonebraker als Co-Autor ein Papier , das die Grenzen der traditionellen Datenbank - Architekturen diskutiert. Im Allgemeinen skalieren sie mit teurerer Hardware, haben jedoch Schwierigkeiten, parallel mit mehr Standardhardware zu skalieren, und sind durch die für eine ältere Ära entwickelte alte Softwarearchitektur eingeschränkt. Er behauptet, dass die BigData-Ära mehrere neue Datenbankarchitekturen erfordert, die die moderne Infrastruktur nutzen und für eine bestimmte Arbeitslast optimieren. Beispiele hierfür sind das C-Store-Projekt, das zur kommerziellen Datenbank Vertica Systems führte, und das H-Store-Projekt, das zur VoltDB führte, einer speicherinternen OLTP-SQL-Datenbank, die für Hochgeschwindigkeits-BigData-Workloads ausgelegt ist. (Vollständige Offenlegung, ich arbeite für VoltDB).

Dieses Webinar könnte Sie zu diesem Thema interessieren. Es reagiert auf einige der Mythen, die mit dem Erfolg von NoSQL-Datenbanken aufgetaucht sind. Grundsätzlich ist er der Ansicht, dass SQL nicht das Problem war. Es sollte nicht notwendig sein, herkömmliche Datenbankfunktionen wie die Konsistenz aufzugeben, um die Leistung zu verbessern.


6
Um als vollständige Offenlegung zu gelten, sollten Sie wahrscheinlich auch erwähnen, dass Ihr Mitbegründer und CTO Michael Stonebraker auch Mitarchitekt all Ihrer Beispiele war. Und die SQL-Unterstützung von VoltDB ist eine peinlich kleine Untermenge .
Daniel Lyons

5

Es ist nicht ganz richtig, dass RDBMS nicht skalieren kann. Die teilweise Wahrheit in der Aussage hängt jedoch von der Architektur ab. In der Liste, die Sie angegeben haben, unterscheidet sich Oracle RAC von den anderen (Sharded MySQL und Teradata). Der Hauptunterschied ist Shared Disk vs. Shared Nothing-Architekturen.

Shared Disk-Architekturen wie Oracle RAC leiden unter der Skalierung, da zu einem bestimmten Zeitpunkt alle ausgeführten Maschinen auf einem Teil der Daten synchronisiert werden sollten. Zum Beispiel ist Global Lock Manager ein Killer. Sie können die Feinabstimmung bis zu einem gewissen Grad fortsetzen, aber Sie werden letztendlich gegen eine Wand stoßen. Wenn Sie nicht einfach Maschinen hinzufügen können, sollten Sie weniger, aber sehr leistungsfähige Maschinen haben, die Ihre Tasche verbrennen können. Im Fall von Shared-Nothing-Architekturen (oder Sharded-Daten) übernimmt jeder Computer das Eigentum an einigen Daten. Es muss nicht mit anderen Maschinen synchronisiert werden, wenn Daten aktualisiert werden sollen.

Dann kommt die Generation der NoSQL-Datenbanken. Ich würde ihnen eine Untergruppe traditioneller RDBMS-Datenbanken zuordnen. Nicht alle Anwendungen auf dieser Welt benötigen alle von RDBMS angebotenen Funktionen. Wenn ich die Datenbank als Cache verwenden möchte, ist mir die Haltbarkeit egal. In manchen Fällen würde mich auch die Konsistenz nicht interessieren. Wenn alle meine Daten auf einem Schlüssel basieren, benötige ich keine Unterstützung für Bereichsabfragen. Ich benötige möglicherweise keine Sekundärindizes. Ich brauche nicht die gesamte Ebene für die Abfrageverarbeitung / Abfrageoptimierung, über die alle traditionellen Datenbanken verfügen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.