Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :Azure SQL Database
Important
La requête élastique en mode gestionnaire de cartes de partitions (partitionnement horizontal), à l’aide EXTERNAL DATA SOURCE du type SHARD_MAP_MANAGER, atteint la fin de la prise en charge le 31 mars 2027. Après cette date, les charges de travail existantes continueront de fonctionner, mais ne recevront plus de prise en charge, et la création de nouvelles sources de données externes de type SHARD_MAP_MANAGER ne sera plus possible. Pour connaître les options de migration, consultez le guide de migration à partir du mode gestionnaire de cartes de partitions de requêtes élastiques.
Gérez facilement vos bases de données partitionnées mises à l’échelle existantes à l’aide d’outils (tels que la création de bases de données cloud évolutives). Convertissez d’abord un ensemble existant de bases de données pour utiliser le Gestionnaire de cartes de partitions.
Vue d’ensemble
Pour migrer une base de données partitionnée existante :
- Préparez la base de données pour le Gestionnaire de cartes de partitions.
- Créer la carte de partitions.
- Préparer les partitions individuelles.
- Ajoutez les mappages à la carte de partitions.
Ces techniques peuvent être implémentées à l’aide de la bibliothèque de client .NET Framework ou des scripts PowerShell (voir Azure SQL Database – Scripts d’outils de base de données élastique). Les exemples fournis ici utilisent les scripts PowerShell.
Pour plus d’informations sur la classe ShardMapManager, consultez la page Gestion des cartes de partitions. Pour obtenir une présentation des outils de base de données élastique, consultez Vue d’ensemble des fonctionnalités de base de données élastique.
Préparer la base de données pour le Gestionnaire de cartes de partitions
Le Gestionnaire de cartes de partitions est une base de données spéciale qui contient les données permettant de gérer les bases de données avec montée en charge. Vous pouvez utiliser une base de données existante ou en créer une. Une base de données agissant en tant que Gestionnaire de cartes de partitions ne peut pas être identique à une partition. Le script PowerShell ne crée pas la base de données à votre place.
Étape 1 : Créer un gestionnaire de cartes de partitions
# 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.
Récupération du gestionnaire de cartes de partitions
Après la création, vous pouvez récupérer le gestionnaire de cartes de partitions avec cette applet de commande. Cette étape est nécessaire chaque fois que vous devez utiliser l’objet ShardMapManager.
# 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>'
Étape 2 : Créer la carte de partitions
Sélectionnez le type de carte de partitions à créer. Votre choix dépend de l’architecture de la base de données :
- Client unique par base de données (Pour rechercher des termes spécifiques, consultez le glossaire.)
- Plusieurs clients par base de données (deux types) :
- Mappage de liste
- Mappage de plage
Pour un modèle de client unique, créez une carte de partitions de mappage de liste . Le modèle à un seul client attribue une base de données par client. Il s’agit d’un modèle efficace pour les développeurs SaaS, car il simplifie la gestion.
Le modèle multilocataire affecte plusieurs locataires à une base de données individuelle (et vous pouvez distribuer des groupes de locataires entre plusieurs bases de données). Utilisez ce modèle lorsque vous pensez que chaque client va avoir de faibles besoins en termes de données. Dans ce modèle, attribuez une plage de clients à une base de données à l’aide du mappage de plage.
Vous pouvez également implémenter un modèle de base de données mutualisé à l’aide d’un mappage de liste pour affecter plusieurs locataires à une base de données individuelle. Par exemple, DB1 est utilisée pour stocker les informations d’ID client 1 et 5 et DB2 stocke les données pour les clients 7 et 10.
Selon votre choix, procédez de l’une des manières suivantes :
Option 1 : Créer une carte de partitions pour un mappage de liste
Créez une carte de partitions à l’aide de l’objet ShardMapManager.
# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager
Option n°2 : Créer une carte de partitions pour un mappage de plage
Pour utiliser ce modèle de mappage, les valeurs d’ID client doivent être des plages continues. De plus, il est raisonnable d’avoir un écart dans les plages en ignorant la plage pendant la création de bases de données.
# $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 : Mappages de liste sur une base de données individuelle
La configuration de ce modèle nécessite également la création d’un mappage de liste comme indiqué à l’étape 2, option 1.
Étape 3 : Préparer les partitions individuelles
Ajoutez chaque partition (base de données) dans le gestionnaire de cartes de partitions. Cela prépare les bases de données individuelles à stocker les informations de mappage. Exécutez cette méthode sur chaque partition. La $ShardMap est la carte de partitions créée à l’étape 2.
Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.
Étape 4 : Ajouter des mappages
L’ajout de mappages varie selon le type de carte de partitions que vous avez créé. Si vous avez créé un mappage de liste, vous ajoutez des mappages de liste. Si vous avez créé un mappage de plage, vous ajoutez des mappages de plage.
Option 1 : Mapper les données pour un mappage de liste
Mappez les données en ajoutant un mappage de liste pour chaque client. Utilisez l’exemple de script PowerShell suivant pour créer les mappages et les associer aux nouvelles partitions.
# 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 n°2 : Mapper les données pour un mappage de plage
Ajoutez les mappages de plage pour la plage d’ID client – associations de bases de données. Utilisez l’exemple de script PowerShell suivant pour créer les mappages et les associer aux nouvelles partitions.
# 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>'
Étape 4, option 3 : Mapper les données de plusieurs locataires sur une base de données individuelle
Pour chaque locataire, exécutez l’applet Add-ListMapping de commande (option 1).
Vérifier les mappages
Vous pouvez interroger des informations sur les partitions existantes et les mappages associés à ces partitions à l’aide de l’exemple de script PowerShell suivant :
# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap
Résumé
Une fois que vous avez terminé l’installation, vous pouvez commencer à utiliser la bibliothèque cliente de base de données élastique. Vous pouvez également utiliser le routage dépendant des données et la requête sur plusieurs partitions.