Planungsrichtlinien für vereinte Datenbankserver
Zum Erstellen eines Verbunds von Datenbankservern gehört es, eine Reihe von verteilten partitionierten Sichten zu entwerfen, die Daten auf mehrere Server verteilen. Eine Partitionierung funktioniert gut, wenn sich die Tabellen einer Datenbank von Natur aus in ähnliche Partitionen aufteilen lassen, wobei der größte Teil der Zeilen, auf die eine SQL-Anweisung zugreift, jeweils auf demselben Mitgliedsserver angeordnet werden können. Tabellen werden in verknüpften Einheiten gruppiert. Stellen Sie sich als Beispiel den Eintrag eines Auftrags vor, der sowohl auf die Tabellen Orders, Customers und Parts als auch auf alle Tabellen verweist, in denen die Beziehungen zwischen den Kunden, Aufträgen und Bauteilen festgehalten sind. Partitionen funktionieren dann am besten, wenn alle zu einer logischen Gruppe gehörenden Zeilen auf demselben Mitgliedsserver abgelegt werden können.
Symmetrische Partitionen
Eine Partitionierung ist am effektivsten, wenn alle Tabellen einer Datenbank folgendermaßen symmetrisch partitioniert werden können:
Verknüpfte Daten werden auf demselben Mitgliedsserver abgelegt, sodass die meisten SQL-Anweisungen, die an den richtigen Mitgliedsserver gesendet wurden, wenn überhaupt nur ganz wenige Daten anfordern müssen, die sich auf anderen Mitgliedsservern befinden. Ein Entwurfsziel für eine verteilte partitionierte Sicht kann als 80/20-Regel formuliert werden: Entwerfen Sie Partitionen so, dass der größte Teil der SQL-Anweisungen an einen Mitgliedsserver gesendet werden kann, auf dem sich mindestens 80 Prozent der Daten befinden, und verteilte Abfragen für höchstens 20 Prozent der Daten erforderlich sind.Ob dies erreicht werden kann, lässt sich gut feststellen, indem geprüft wird, ob die Partition es zulässt, dass alle Zeilen auf demselben Mitgliedsserver abgelegt werden wie sämtliche ihrer verweisenden Fremdschlüsselzeilen. Datenbankentwürfe, die dieses Ziel unterstützen, sind gute Kandidaten für eine Partitionierung.
Die Daten werden gleichmäßig über die Mitgliedsserver partitioniert.
Stellen Sie sich z. B. vor, eine Firma hat Nordamerika in Verkaufsregionen aufgeteilt. Jeder Mitarbeiter arbeitet in einer Region, und die Kunden tätigen die meisten Käufe in dem Bundesstaat, in dem sie leben. Die Tabellen für die Regionen und die Mitarbeiter sind entlang den Regionen aufgeteilt. Die Kunden sind in Regionen gemäß ihres Bundesstaates oder ihrer Provinz aufgeteilt. Obwohl einige Abfragen Daten aus mehreren Regionen erfordern, befinden sich die für die meisten Abfragen benötigten Daten auf dem Server für eine Region. Anwendungen senden SQL-Anweisungen an den Mitgliedsserver, der die Daten für die Region enthält, die aus dem Kontext der Benutzereingabe abgeleitet wurde.
Asymmetrische Partitionen
Symmetrische Partitionen sind das Idealziel. Die meisten Anwendungen weisen jedoch komplexe Datenzugriffsmuster auf, die ein symmetrisches Partitionieren verhindern. Asymmetrische Partitionen führen dazu, dass einige Mitgliedsserver größere Rollen annehmen als andere. Beispielsweise kann es sein, dass nur einige der Tabellen einer Datenbank partitioniert sind und die Tabellen, die nicht partitioniert sind, auf dem ursprünglichen Server bleiben. Asymmetrische Partitionen können einen großen Teil des Leistungsgewinns von symmetrischen Partitionen bereitstellen und folgende bedeutende Vorteile bieten:
Erhebliche Steigerung der Leistung einer Datenbank, die nicht symmetrisch partitioniert werden kann, indem einige Tabellen der Datenbank asymmetrisch partitioniert werden.
Erfolgreiches Partitionieren eines großen vorhandenen Systems, indem eine Reihe iterativer asymmetrischer Verbesserungen vorgenommen wird. Die in jedem Schritt für die Partitionierung gewählten Tabellen sind in der Regel diejenigen, die zum jeweiligen Zeitpunkt den größten Leistungszuwachs bringen.
In einer asymmetrischen Lösung behält der ursprüngliche Server einige Tabellen bei, die nicht in das Partitionierungsschema passen. Die Leistung für diese verbleibenden Tabellen ist in der Regel höher als im ursprünglichen System, da die Mitgliedstabellen auf die Mitgliedsserver verschoben wurden, wodurch sich die Last des ursprünglichen Servers reduziert.
Viele Datenbanken können auf mehrere Arten partitioniert werden. Die für die Implementierung gewählten speziellen Partitionen müssen diejenigen sein, die am besten den Anforderungen des üblichen Bereichs von SQL-Anweisungen entsprechen, die von der Unternehmensdienstebene ausgeführt werden.