Datenorganisation
Die Organisation der Daten wird in EXASolution vollautomatisch vom System selbst erledigt, der Benutzer hat nur sehr wenige Möglichkeiten, darauf Einfluss zu nehmen.
Datenverteilung
Das System verteilt automatisch jede Tabelle anhand ihrer Verteilungsattribute über alle aktiven Knoten (shared nothing Architektur). Tabellen, die eine gewisse Größe unterschreiten, werden repliziert, d.h. auf jedem Knoten vollständig gehalten.
Damit ist gewährleistet, dass Joins von Tabellen über deren Verteilungsattribute größtenteils Knotenlokal bearbeitet werden können.
Bezüglich der Datenverteilung gibt es für Tabellen zwei Zustände:
- Eine Tabelle hat kein gesetztes Verteilungsattribut.
In diesem Fall wird die Datenbank die Zeilen der Tabelle (fast) absolut gleichmäßig auf die Knoten verteilen, unabhängig von den Inhalten der Tabelle. - Mindestens eine Spalte der Tabelle ist als Verteilungsattribut festgelegt.
Alle gesetzten Spalten fließen in den Hashwert ein, der als Verteilungskriterium dient.
Definition der Dateverteilungsattribute
Der nachfolgende Befehl setzt die Spalten, nach denen die Tabelle verteilt werden soll und verteilt die Zeilen der Tabelle auch sofort entsprechend.
-
- ALTER TABLE <name> DISTRIBUTE BY <column-list>
Tritt ein erhebliches Ungleichgewicht auf, lehnt die Datenbank diesen Verteilungsschlüssel ab.
Das Löschen der gesetzten Verteilungsattribute wird mit Hilfe von ALTER TABLE <name> DROP DISTRIBUTION KEYS durchgeführt.
Der Verteilungsschlüssel kann auch direkt im DDL-Statement gesetzt werden. Dies führt dazu, dass hinzugefügte Daten automatisch verteilt werden und keine weitere Umverteilung der Daten notwendig ist.
-
- CREATE TABLE test1 (
- c_id INT,
- c_name VARCHAR(40),
- c_birthday DATE,
- DISTRIBUTE BY c_id
- );
Best Practices
- Wählen Sie nur eine Spalte als Verteilungsschlüssel, es sei denn alle Joins auf dieser Tabelle verwenden immer mehrere Spalten (z.B. ein zusammengesetzter primary oder foreign key).
- Als Verteilungsschlüssel eignen sich am besten solche Spalten, die nicht viele identische Werte enthalten, da dies meistens zu besseren (restriktiveren) Join-Bedingungen führt.
- Wählen Sie als Verteilungsschlüssel Spalten, die in den meisten (vielen Joins) verwendet werden, wenn auch die Join-Bedingungen nicht immer identisch sind. Queries werden auch von der Verteilung einer an einem Join beteiligten Tabellen profitieren.
- Wenn möglich, wählen Sie keine char / varchar Spalten als Verteilungsschlüssel.
Übernahme der Attribute
Verteilungsschlüssel wird in vielen Fällen auch bei CREATE TABLE AS SELECT abgeleitet und übernommen.
Reorganisation der Daten
Eine Datenreorganisation ist nur nach einer Erweiterung des Clusters nötig: Um die eigentliche Downtime möglichst gering zu halten, wird bei Hinzunahme von neuen aktiven Knoten die Datenverteilung nicht angepasst. Diese Anpassung kann/muss dann gezielt geschehen, evtl. nach den jeweiligen Prioritäten der Objekte.
Der Befehl REORGANIZE übernimmt genau diese Aufgabe, wobei man sich entscheiden kann, einzelne Tabellen, ganze Schemata oder gleich die komplette Datenbank zu reorganisieren.
-
- REORGANIZE (TABLE <name> | SCHEMA <name> | DATABASE)
Zu beachten ist hierbei, dass die Operation in jedem Fall Tabellenweise arbeitet, in den Fällen SCHEMA und DATABASE allerdings nach jeder Tabelle automatisch ein COMMIT durchführt!
- Reorganize erkennt bereits verteilte Tabellen, so dass verschiedene Reorganize-Operationen (REORGANIZE SCHEMA s1; REORGANIZE TABLE s1.t4;) parallel ausgeführt werden können, ohne Mehraufwand für die Datenbank zu erzeugen.
- Reorganize arbeitet mit write-locks auf Tabellenebene.
Vertikale/Spaltenweise Datenspeicherung

Dank der Spezialisierung von EXASolution auf Data Warehousing kann das System von der spaltenweise Datenspeicherung enorm profitieren indem die Zahl an IO-Zugriffen und auch die zu verarbeitende Datenmenge deutlich reduziert wird: Typischerweise ist der Zugriff in einem Data Warehouse auf nur wenige Spalten (z.B. für Joins, Filter und Aggregate) beschränkt.
EXASolution ist ein relationales DBMS, das mit Hilfe von Standard SQL bedient wird. Die Datenspeicherung ist komplett transparent für den Nutzer.
Zur Optimierung von Festplattenzugriffen werden Spalten in Blöcke aufgeteilt. Dies ermöglicht maximalen Durchsatz und verhindert das Einlesen von nicht benötigten Daten. Durch verschiedene Operationen (z.B. Löschungen oder Updates) können innerhalb der Blöcke Lücken entstehen, das System führt aber automatisch eine Defragmentierung durch, wenn hier gewisse Grenzen überschritten werden. Die Layout der Datenspeicherung spielt kaum bis gar keine Rolle für die Performance, da für Analysen relevanten Daten sich im Hauptspeicher befinden und dort sehr schnell zugegriffen werden können.
Kompression

Die automatische Kompression in EXASolution basiert auf einer Stichprobe der zuerst hinzugefügten 100.000 Zeilen pro Knoten, in den meisten Fällen liefert dies bereits einen sehr guten Kontext für die gesamte Tabelle. Sollte die automatische Kompression nicht die erwartete Kompressionsrate liefern, kann mittels RECOMPRESS ein erneutes Komprimieren erzwungen werden und im Kontext der kompletten Tabelle arbeitet.
Von Interesse ist dies hauptsächlich dann, wenn einzelne Tabellen sehr groß werden oder historisch gewachsen sind, so dass die ersten 100.000 Zeilen inhaltlich vom Rest der Tabelle abweichen.
-
- RECOMPRESS TABLE <name> | SCHEMA <name> | DATABASE
















