Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für::Azure SQL-Datenbank
Von Bedeutung
Die flexible Abfrage im Shard-Karten-Manager-Modus (horizontale Partitionierung) mit EXTERNAL DATA SOURCE Typ SHARD_MAP_MANAGERerreicht das Ende des Supports am 31. März 2027. Nach diesem Datum funktionieren vorhandene Workloads weiterhin, erhalten aber keine Unterstützung mehr, und die Erstellung neuer externer Datenquellen vom Typ SHARD_MAP_MANAGER ist nicht mehr möglich. Informationen zu Migrationsoptionen finden Sie im Migrationshandbuch aus dem flexiblen Abfrage-Shard-Karten-Manager-Modus.
Verwalten Sie Ihre vorhandenen skalierten, shardierten Datenbanken ganz einfach mithilfe von Tools (wie zum Beispiel Building scalable cloud databases). Konvertieren Sie zunächst eine vorhandene Gruppe von Datenbanken für die Verwendung des Shardzuordnungs-Managers.
Übersicht
So migrieren Sie eine vorhandene Sharddatenbank:
- Bereiten Sie die Shardzuordnungs-Manager-Datenbankvor.
- Erstellen Sie die Shard-Map.
- Bereiten Sie die einzelnen Fragmente vor.
- Fügen Sie Zuordnungen zur Shard-Map hinzu.
Diese Schritte können entweder unter Verwendung der .NET Framework-Clientbibliothek oder der PowerShell-Skripts ausgeführt werden, die unter Azure SQL Database – Elastic Database tools scripts (Azure SQL-Datenbank – Skripts für Tools für elastische Datenbanken) verfügbar sind. Für die hier beschriebenen Beispiele werden die PowerShell-Skripts verwendet.
Weitere Informationen zum ShardMapManager finden Sie unter Shard-Zuordnungsverwaltung. Eine Übersicht der Tools für elastische Datenbanken finden Sie unter Übersicht über Features für elastische Datenbanken.
Vorbereiten der Shardzuordnungs-Manager-Datenbank
Der Shardzuordnungsmanager ist eine spezielle Datenbank, die Daten zur Verwaltung von horizontal skalierten Datenbanken enthält. Sie können eine vorhandene Datenbank verwenden oder eine neue Datenbank erstellen. Eine als Shard-Manager verwendete Datenbank sollte nicht dieselbe wie eine Shard-Datenbank sein. Das PowerShell-Skript erstellt die Datenbank nicht für Sie.
Schritt 1: Erstellen eines Shardzuordnungs-Managers
# Create a shard map manager
New-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
#<server_name> and <smm_db_name> are the server name and database name
# for the new or existing database that should be used for storing
# tenant-database mapping information.
Abrufen des Shard Map Managers
Nach dem Erstellen können Sie den Shard Map Manager mit diesem Cmdlet abrufen. Dieser Schritt muss jedes Mal ausgeführt werden, wenn Sie das ShardMapManager-Objekt verwenden müssen.
# Try to get a reference to the Shard Map Manager
$ShardMapManager = Get-ShardMapManager -UserName '<user_name>' -Password '<password>' -SqlServerName '<server_name>' -SqlDatabaseName '<smm_db_name>'
Schritt 2: Erstellen der Shardzuordnung
Wählen Sie den Typ der zu erstellenden Shardzuordnung aus. Die Auswahl hängt von der Architektur der Datenbank ab:
- Ein Mandant pro Datenbank (Informationen finden Sie im Glossar).
- Mehrere Mandanten pro Datenbank (zwei Typen):
- Listenzuordnung
- Bereichszuordnung
Erstellen Sie für ein Modell mit einem einzelnen Mandanten eine Listenzuordnungs -Shardzuordnung. Beim Modell mit einem Mandanten wird eine Datenbank pro Mandant zugewiesen. Dies ist ein effektives Modell für SaaS-Entwickler, da es die Verwaltung vereinfacht.
Das Mehrinstanzenmodell weist mehreren Mandanten eine einzelne Datenbank zu (und Sie können Mandantengruppen über mehrere Datenbanken verteilen). Verwenden Sie dieses Modell, wenn Sie erwarten, dass die einzelnen Mandanten geringe Datenanforderungen haben. In diesem Modell wird einer Datenbank mithilfe der Bereichszuordnung ein Bereich von Mandanten zugewiesen.
Sie können auch ein mandantenfähiges Datenbankmodell mit einer Listenzuordnung implementieren, um mehrere Mandanten einer einzelnen Datenbank zuzuordnen. Beispiel: DB1 wird zum Speichern von Informationen zu den Mandanten-IDs 1 und 5, DB2 zum Speichern von Daten für die Mandanten 7 und 10 verwendet.
Basierend auf Ihrer Entscheidung wählen Sie eine der folgenden Optionen aus:
Option 1: Erstellen einer Shard-Map für eine Listenabbildung
Erstellen Sie eine Shardzuordnung mithilfe des ShardMapManager-Objekts.
# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager
Option 2: Erstellen einer Shardzuordnung für eine Bereichszuordnung
Um diese Zuordnung strukturieren zu können, müssen die Werte der Mandanten-IDs kontinuierliche Bereiche sein. Es ist akzeptabel, wenn bei der Erstellung der Datenbanken Lücken in den Bereichen entstehen, indem der Bereich übersprungen wird.
# $ShardMapManager is the shard map manager object
# 'RangeShardMap' is the unique identifier for the range shard map.
$ShardMap = New-RangeShardMap -KeyType $([int]) -RangeShardMapName 'RangeShardMap' -ShardMapManager $ShardMapManager
Option 3: Zuordnungen für eine einzelne Datenbank auflisten
Für die Einrichtung dieses Musters muss eine Listenabbildung erstellt werden, wie in Schritt 2, Option 1 gezeigt.
Schritt 3: Vorbereiten der einzelnen Shards
Fügen Sie die einzelnen Shards (Datenbanken) dem Shardzuordnungs-Manager hinzu. Dadurch werden die einzelnen Datenbanken für das Speichern von Zuordnungsinformationen vorbereitet. Führen Sie diese Schritte für jeden Shard aus. Dies $ShardMap ist die in Schritt 2 erstellte Shard-Karte.
Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.
Schritt 4: Hinzufügen von Zuordnungen
Das Hinzufügen von Zuordnungen hängt von der Art der Shardkarte ab, die Sie erstellt haben. Wenn Sie eine Listenzuordnung erstellt haben, fügen Sie Listenzuordnungen hinzu. Wenn Sie eine Reichweitenkarte erstellt haben, fügen Sie Reichweitenzuordnungen hinzu.
Option 1: Daten für eine Listenabbildung zuordnen
Ordnen Sie die Daten zu, indem Sie eine Listenzuordnung für jeden Mandanten hinzufügen. Verwenden Sie das folgende PowerShell-Beispielskript, um die Zuordnungen zu erstellen und sie den neuen Shards zuzuordnen.
# Create the mapping and associate it with the new shards
Add-ListMapping -KeyType $([int]) -ListPoint '<tenant_id>' -ListShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Option 2: Zuordnen der Daten für eine Bereichszuordnung
Fügen Sie die Bereichszuordnungen für alle Zuordnungen von Mandanten-IDs zu Datenbanken hinzu. Verwenden Sie das folgende PowerShell-Beispielskript, um die Zuordnungen zu erstellen und sie den neuen Shards zuzuordnen.
# Create the mapping and associate it with the new shards
Add-RangeMapping -KeyType $([int]) -RangeHigh '5' -RangeLow '1' -RangeShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
Schritt 4, Option 3: Zuordnen der Daten für mehrere Mandanten zu einer einzelnen Datenbank
Führen Sie für jeden Mandanten das Add-ListMapping Cmdlet (Option 1) aus.
Prüfen der Zuordnungen
Informationen zu den vorhandenen Shards und den ihnen zugeordneten Zuordnungen können mithilfe des folgenden PowerShell-Beispielskripts abgefragt werden:
# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap
Zusammenfassung
Nach der Einrichtung können Sie die Clientbibliothek für elastische Datenbanken verwenden. Außerdem können Sie das datenabhängige Routing und das Abfragen mehrerer Shards nutzen.