(0) exportieren Drucken
Alle erweitern

Verbunde in der Azure SQL-Datenbank

Letzte Aktualisierung: April 2014

In Microsoft Azure SQL-Datenbank (Azure SQL-Datenbank) ermöglichen Verbunde eine höhere Skalierbarkeit und das Verwalten der Kapazitätseinschränkungen auf der Datenbankebene der Anwendung. Mindestens eine Tabelle in einer Datenbank wird über mehrere Datenbanken, die als Verbundmitglieder bezeichnet werden, horizontal partitioniert. Dieser Typ von horizontaler Partitionierung wird häufig als "Sharding" bezeichnet. Dieses Thema bietet einen Überblick über Verbunde.

ImportantWichtig
Die aktuelle Implementierung von Verbünden wird zusammen mit den Web- und Business-Dienstebenen eingestellt. Erwägen Sie die Bereitstellung benutzerdefinierter Shardinglösungen, um Skalierbarkeit, Flexibilität und Leistung zu maximieren. Weitere Informationen zum benutzerdefinierten Sharding finden Sie unter Horizontales Skalieren von Azure SQL-Datenbanken.

Ein Verbund ist eine Auflistung von Datenbankpartitionen, die durch ein als Verbundschema bezeichnetes Verbundverteilungsschema definiert sind. Das Verbundschema definiert einen Verbundverteilungsschlüssel, der die Verteilung von Daten auf Partitionen im Verbund bestimmt. Der Verbundverteilungsschlüssel muss vom Typ INT, BIGINT, UNIQUEIDENTIFIER oder VARBINARY (bis zu 900 Bytes) sein, und er gibt einen Bereichswert an. Für einen Verbund können nur ein Verbundschema und ein Verbundverteilungsschlüssel vorhanden sein.

Die Datenbankpartitionen in einem Verbund werden als Verbundmitglieder bezeichnet, und jedes Mitglied deckt den Bereich der Werte, die dem Datentyp des Verbundverteilungsschlüssels entsprechen, partiell oder vollständig ab. Verbundtabellen sind Tabellen, die sich über Verbundmitglieder erstrecken. Jedes Verbundmitglied verfügt über ein eigenes Schema und enthält die Verbundtabellenzeilen, die dem Bereich des Verbundmitglieds entsprechen. Die Auflistung aller Zeilen in einem Verbundmitglied, die einem bestimmten Verbundschlüsselwert entsprechen, wird als unteilbare Verbundeinheit bezeichnet. Jedes Verbundmitglied enthält ggf. viele unteilbare Verbundeinheiten. Ein Verbundmitglied kann auch Verweistabellen enthalten. Diese sind nicht verbundabhängig. Verweistabellen sind vollständig in einem Mitglied enthalten, und sie enthalten häufig Verweisinformationen, die zusammen mit Verbunddaten abgerufen werden.

Ein Verbundmitglied ermöglicht die physische Trennung zwischen den in ihm enthaltenen Daten und den in anderen Mitgliedern enthaltenen Daten. Jedes Verbundmitglied verfügt über ein eigenes Schema, das aufgrund mitgliederspezifischer Verarbeitung, z. B. der Ausführung eines parallelen Schemaupgrades aller Mitglieder, vorübergehend vom Schema anderer Mitglieder abweichen kann.

Verbundmitglieder sind zwar physisch als Datenbanken implementiert, auf der Anwendungsebene wird jedoch auf sie logisch als Bereich von Verbundschlüsselwerten verwiesen. Beispielsweise erfolgt der logische Zugriff auf eine Verbundmitgliedsdatenbank, die den Verbundschlüsselwerten 50-100 zugeordnete Zeilen enthält, durch Angabe eines Schlüsselwerts in diesem Bereich und nicht durch Angabe des Datenbanknamens.

Der Zugriff auf Verbunde erfolgt über eine Verbundstammdatenbank, die die Anwendungsgrenze des Verbunds darstellt. Sie fungiert als logischer Endpunkt zum Herstellen einer Verbindung von Anwendungen mit einem Verbund. Dabei werden Verbindungen anhand des angegebenen Verbundschlüsselwerts an das entsprechende Verbundmitglied weitergeleitet. Jede Stammdatenbank kann mehrere Verbunde mit jeweils einem eigenen Verbundschema enthalten. Sie kann auch globale Daten, z. B. Benutzer, Kennwörter, Rollen oder andere anwendungsspezifische Daten enthalten.

In den folgenden Diagrammen werden das logische und physische Modell für Verbunde veranschaulicht:

Beim Entwerfen eines Verbunds ist die Auswahl des Werts, anhand dessen der Verbund gebildet werden soll, eine der wichtigsten Entscheidungen. Sie sollten nach Möglichkeit einen Wert auswählen, der es Ihnen ermöglicht, Daten aus mehreren verknüpften Tabellen in einen Verbund aufzunehmen, damit verknüpfte Zeilen gemeinsam gespeichert werden. Beispielsweise empfiehlt sich für eine Anwendung mit mehreren Mandaten die Auswahl der tenant_id. Die Zeilen in den einzelnen Verbundtabellen, die über denselben tenant_id-Wert verfügen, werden in derselben unteilbaren Verbundeinheit gespeichert.

Sie müssen auch überlegen, wie neue Datensätze so eingefügt werden, dass alle Verbundmitglieder in gleichem Umfang genutzt werden, statt alle neuen Datensätze in einem Mitglied zu speichern. Die Verteilung neuer Daten auf Verbundmitglieder muss auf Anwendungsebene festgelegt werden.

Da die Daten in den verschiedenen Verbundmitgliedern physisch getrennt sind und eine SQL-Datenbank keine datenbankübergreifenden Joinvorgänge unterstützt, muss die Anwendung die Logik zum Verknüpfen von Daten aus mehreren Verbundmitgliedern oder Verbunden implementieren. Beispielsweise muss für eine Abfrage, die Daten aus zwei Verbunden verknüpfen muss, für jeden Verbund eine eigene Abfrage ausgeführt werden, und die Daten müssen in der Anwendung verknüpft werden. Das Gleiche gilt für das Aggregieren von Daten aus mehreren Shards in einem einzelnen Verbund, z. B. das Abrufen der Anzahl aller Zeilen im Verbund.

Unter Microsoft Open Specification Promise steht jetzt eine neue Spezifikation zur Verfügung, in der zusätzliche SQL-Funktionen für das Datensharding beschrieben sind. Weitere Informationen finden Sie in der Spezifikation zu Azure SQL-Datenbankverbunden.

Siehe auch

Anzeigen:
© 2014 Microsoft