Shared Nothing
Die leistungsstärkste MPP-Architektur, ohne typische Engpässe!
Massiv parallele Datenverarbeitung
EXASolution wurde als paralleles System entwickelt und ist nach dem "Shared Nothing"-Prinzip aufgebaut. Die Daten werden dabei über alle Knoten eines Clusters verteilt. Bei Abfragen arbeiten alle Knoten zusammen, wobei spezielle parallele Algorithmen dafür sorgen, dass die Berechnung der Daten lokal im Arbeitsspeicher der einzelnen Knoten erfolgt.
Wird eine Anfrage an das System gestellt, nimmt sie zunächst der Knoten an, der die Verbindung zum Client hält.

Anschließend wird die Anfrage auf alle Knoten verteilt. Intelligente Algorithmen optimieren die Abfrage, bestimmen den bestmöglichen Ausführungsplan und erzeugen Indices on the fly. Dabei entscheidet der EXASOL-Optimizer selbständig, ob die Daten für das konkrete Nutzungsprofil im Cluster reorganisiert werden sollen.

Das System berechnet im Anschluss daran die Teilergebnisse auf den lokalen Daten. Dieses Verarbeitungsparadigma wird auch SPMD (Single Program Multiple Data) genannt. Auf allen Knoten läuft das gleiche Programm, sie sind gleichberechtigt. Es gibt keinen Masterknoten.

Die Abfrage-Ergebnisse werden durch entsprechende Verbindungsknoten an den Anwender geliefert.

Beispiel der Join-Berechnung im parallelen Umfeld
-
- SELECT
- customer.last_name, city.name FROM customer, city
- WHERE
- customer.city_id = city.id AND city.name LIKE 'New%';
Die 2 Tabellen im Beispiel sind über die Knoten gleichmäßig verteilt:

Schritt 1: Filtering
Zunächst wird die kleinere Tabelle CITIES gefiltert. Nur die Städte, die mit 'New' anfangen, werden durchgelassen:

Schritt 2: Matches suchen
Im zweiten Schritt werden für jede verblieben Stadt die Kunden herausgesucht, die in der Stadt wohnen. Dies erfolgt Knotenübergreifend, wenn die Tabellen so verteilt sind, dass die Matches nicht nur lokal zu finden sind:

Schritt 3: Das Ergebnis zusammenstellen
Das Ergebnis der Queryberechnung bleibt lokal auf den jeweiligen Knoten. Wenn die Query z.B. ein Teil von einem Multipath SQL ist, ist damit der Teil der Berechnung abgeschlossen. Soll das Ergebnis an den Nutzer verschickt werden, geschiet dies in Portionen, die das Front-End anfordert. Das Ergebnis wird somit nie auf einem Knoten gesammelt:
















