VERTRIEB: 1-800-867-1380

Überlegungen zur Entwicklung für Datenbankverbunde (Azure SQL-Datenbank)

Letzte Aktualisierung: April 2014

Das Entwickeln von Lösungen mit Verbunden erfordert zusätzlich zu den in Überlegungen bei der Azure SQL-Datenbankentwicklung beschriebenen Überlegungen weitere Überlegungen. Nachfolgend werden spezifische Informationen zum Entwickeln mit Verbunden erörtert.

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 typischer Verbund umfasst zahlreiche individuelle Verbundmitgliedsdatenbanken, die in der SQL-Datenbank als physische Datenbanken implementiert werden. Obwohl es möglich ist, eine direkte Verbindung mit einer dieser physischen Datenbanken herzustellen, empfiehlt sich diese Verbindungsmethode in erster Linie für Tools, die nicht verbundfähig sind. Bei den meisten Anwendungen ist es wesentlich bequemer, mithilfe von USE FEDERATION (SQL Database) eine Verbindung mit einem Verbund herzustellen. Die USE FEDERATION-Anweisung erfordert keine Kenntnisse der zugrunde liegenden physischen Datenbanken und leitet die Verbindung automatisch an das Verbundmitglied weiter, das die angeforderten Daten enthält.

Die USE FEDERATION-Anweisung akzeptiert einen Verbundschlüsselwert, anhand dessen die SQL-Datenbank die Verbindung zu dem Verbundmitglied weiterleitet, das die diesem Wert zugeordneten Daten enthält. Wenn z. B. der Verbund der Daten auf Grundlage von customer_id erfolgt und Sie den Verbundschlüssel 100 angeben, werden Sie mit dem Verbundmitglied verbunden, das die Verbundtabellenzeilen für customer_id=100 enthält.

Mit der USE FEDERATION-Anweisung lassen sich nicht nur einfach Verbindungen mit dem richtigen Verbundmitglied herstellen, sondern Sie können mit ihr auch die Verbindung nach den Datensätzen filtern, die genau mit dem von Ihnen angegebenen Verbundschlüsselwert übereinstimmen. Wenn im obigen Beispiel die FILTER=ON-Klausel angegeben wird, werden von der Verbindung nur Zeilen zurückgegeben, die customer_id=100 zugeordnet sind. Dies geschieht, indem der Abfrageprozessor für die Verbundspalte jeder Abfrage, die auf eine Verbundtabelle verweist, ein Prädikat (federated_column=value) hinzufügt.

Wenn die FILTER=OFF-Klausel angegeben wird, wird weiterhin die Verbindung mit dem Verbundmitglied hergestellt, das den angegebenen Wert enthält, jedoch können Abfragevorgänge auf den gesamten Bereich der im Verbundmitglied gespeicherten Werte zugreifen. Wenn z. B. das Verbundmitglied den Bereich 0-200 für customer_id abdeckt, können Sie auf alle Datensätze in diesem Bereich zugreifen, obwohl Sie in der USE FEDERATION-Anweisung customer_id 100 angegeben haben.

Verbindungen ohne Filterung sind hilfreich, wenn Vorgänge für alle in einem Mitglied gespeicherten Zeilen ausgeführt werden, beispielsweise Schemaänderungen oder Massenvorgänge wie Masseneinfügungen.

Die Verteilung von Daten auf mehrere physische Datenbanken in einem Verbund hat zusätzliche Anforderungen auf Anwendungsebene zur Folge. Da Microsoft Azure SQL-Datenbank über mehrere Datenbanken verteilte Abfragen nicht unterstützt, müssen Sie stattdessen die Logik zum Ausführen dieser Vorgänge in der Anwendung implementieren. Um beispielsweise eine SELECT *-Anweisung aus einer Verbundtabelle auszuführen, können Sie wie folgt vorgehen:

  1. Stellen Sie mit dem range_low-Wert des vom Verbundschlüssel abgedeckten Bereichs eine Verbindung mit dem Verbund her. Beispiel: USE FEDERATION customerfederation (customer_id=1) WITH RESET, FILTERING=OFF.

  2. Führen Sie die SELECT *-Anweisung aus, um die in diesem Verbundmitglied enthaltenen Verbundtabellenzeilen zurückzugeben, und speichern Sie die Ergebnisse.

  3. Fragen Sie sys.federation_member_distributions (SQL Database) ab, um den range_low-Wert des nächsten Verbundmitglieds zu bestimmen.

  4. Stellen Sie mit dem range_low-Wert eine Verbindung mit dem Verbund her. Beispiel: USE FEDERATION customerfederation (customer_id=100) WITH RESET, FILTERING=OFF.

  5. Führen Sie die SELECT *-Anweisung aus, um die in diesem Verbundmitglied enthaltenen Zeilen zurückzugeben, und speichern Sie diese mit den Ergebnissen der vorherigen Abfrage.

  6. Wiederholen Sie Schritt 3-5, bis sys.federation_member_distributions keine Einträge enthält, deren range_low-Wert höher als der aktuelle Wert ist, der als Verbundschlüsselwert verwendet wird.

Das Abfragen der einzelnen Mitglieder kann parallel erfolgen, um die zum Aggregieren und Zurückgeben der Daten an den Anwendungsbenutzer erforderliche Zeit zu verringern.

Siehe auch

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.
Anzeigen:
© 2014 Microsoft