ScholarGate
Assistent

Verteilte Abfrageverarbeitung

Die verteilte Abfrageverarbeitung wertet Abfragen über Daten aus, die auf viele Knoten verteilt sind, nutzt Parallelität zur Beschleunigung und minimiert die Netzwerkkommunikation, die in einer verteilten Umgebung die Kosten dominiert.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

Verteilte Abfrageverarbeitung ist die Zerlegung, Optimierung und Ausführung einer Abfrage über Daten, die sich an mehreren Standorten oder Partitionen befinden, wobei der Plan die Arbeit über Knoten hinweg koordinieren und sowohl die Berechnung als auch die Datenübertragung zwischen den Knoten minimieren muss.

Scope

Dieses Thema behandelt, wie Abfragen über partitionierte und replizierte Daten ausgeführt werden: Formen der Parallelität (partitioniert, pipelined und unabhängig); parallele und verteilte Join-Strategien wie Repartition- und Broadcast-Joins; kommunikationsreduzierende Techniken wie der Semijoin; und die Erweiterung der kostenbasierten Optimierung zur Berücksichtigung von Netzwerkübertragung und Datenplatzierung. Es behandelt, wie eine logische Abfrage zerlegt und über Knoten geplant wird. Es schließt Entscheidungen zur Datenplatzierung und die Commit-Protokolle für verteilte Transaktionen aus.

Core questions

  • Welche Formen der Parallelität (partitioniert, pipelined, unabhängig) kann ein verteilter Plan nutzen?
  • Wie werden Joins ausgeführt, wenn die Eingaben über Knoten partitioniert sind?
  • Wie reduziert der Semijoin die Menge der zwischen Standorten versendeten Daten?
  • Wie ändert sich die Optimierung, wenn die Netzwerkkosten dominieren?
  • Wie beeinflusst die Datenplatzierung, welcher Plan am günstigsten ist?

Key concepts

  • partitionierte Parallelität
  • Pipelined-Parallelität
  • unabhängige Parallelität
  • Repartition (Shuffle) Join
  • Broadcast Join
  • Semijoin-Reduktion
  • Kommunikationskosten
  • Datenlokalisierung

Key theories

Parallelität in der Abfrageausführung
Verteilte Pläne nutzen partitionierte Parallelität (derselbe Operator läuft auf disjunkten Datenpartitionen), Pipelined-Parallelität (Operatoren in einer Kette laufen gleichzeitig) und unabhängige Parallelität (unabhängige Teilpläne laufen gleichzeitig), um die Antwortzeit zu reduzieren.
Verteilte und parallele Joins
Joins über partitionierte Daten verwenden Repartitionierung (Shuffling beider Eingaben nach dem Join-Schlüssel) oder das Broadcasting einer kleinen Eingabe an alle Knoten; die Wahl zwischen ihnen hängt von den Relationsgrößen und der bestehenden Partitionierung ab.
Semijoin und Kommunikationsminimierung
Der Semijoin reduziert eine Relation auf nur die Tupel, die übereinstimmen können, bevor sie über das Netzwerk versendet wird, wodurch die Kommunikationskosten gesenkt werden; diese Technik war zentral für frühe verteilte Abfrageprozessoren wie SDD-1.

Clinical relevance

Die verteilte Abfrageverarbeitung ermöglicht es Analysesystemen, Abfragen über Daten zu beantworten, die weit größer sind, als eine einzelne Maschine aufnehmen könnte, und die Techniken zur Minimierung des Netzwerkverkehrs und zur Maximierung der Parallelität bestimmen direkt die Geschwindigkeit großer Data Warehouses und Abfrage-Engines.

History

Die frühe verteilte Abfrageverarbeitung wurde um 1980 im SDD-1-System entwickelt, das die Semijoin-basierte Kommunikationsreduktion einführte. Shared-nothing parallele Datenbanken der 1980er und 1990er Jahre, die von DeWitt und Gray untersucht wurden, etablierten Repartition- und Broadcast-Joins sowie die Parallelitäts-Taxonomie, die moderne verteilte Abfrage-Engines immer noch verwenden.

Key figures

  • Philip Bernstein
  • David DeWitt
  • M. Tamer Özsu
  • Patrick Valduriez

Related topics

Seminal works

  • bernstein1981
  • dewitt1992
  • ozsu2011

Frequently asked questions

Warum sind Netzwerkkosten bei der verteilten Abfrageverarbeitung so wichtig?
In einer verteilten Datenbank ist die langsamste und am stärksten umkämpfte Ressource in der Regel das Netzwerk zwischen den Knoten. Das Versenden großer Zwischenergebnisse über Knoten hinweg kann die gesamte Abfragezeit dominieren, daher konzentrieren sich Optimierer und Techniken wie der Semijoin darauf, so wenig Daten wie möglich zu übertragen, selbst auf Kosten zusätzlicher lokaler Berechnungen.
Wann wird ein Broadcast Join anstelle eines Repartition Joins verwendet?
Ein Broadcast Join sendet eine Kopie einer Eingabe an jeden Knoten und ist effizient, wenn diese Eingabe klein ist. Ein Repartition (Shuffle) Join verteilt beide Eingaben nach dem Join-Schlüssel über die Knoten neu und wird verwendet, wenn beide Relationen groß sind. Der Optimierer vergleicht die Kommunikationskosten des Broadcastings mit denen des Shufflings, um eine Wahl zu treffen.

Methods for this concept

Related concepts