Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:Azure SQL Database
Administre fácilmente las bases de datos particionadas escaladas existentes mediante herramientas (como la creación de bases de datos en la nube escalables). Primero convierta un conjunto existente de bases de datos para utilizar Shard Map Manager.
Información general
Para migrar una base de datos particionada existente:
- Prepare la base de datos de Shard Map Manager.
- Crear el mapa de particiones.
- Preparar las particiones individuales.
- Agregue asignaciones al mapa de particiones.
Estas técnicas pueden implementarse mediante la biblioteca cliente de .NET Framework o los scripts de PowerShell que se encuentran en Azure SQL Database: scripts de herramientas para bases de datos elásticas. Los ejemplos siguientes usan los scripts de PowerShell.
Para más información sobre ShardMapManager, consulte Administración de mapas de particiones. Si desea más información general de las herramientas para bases de datos elásticas, consulte Información general de las características de las bases de datos elásticas.
Prepare la base de datos de Shard Map Manager.
Shard Map Manager es una base de datos especial que contiene los datos para administrar bases de datos con escalado horizontal. Puede utilizar una base de datos existente o crear una nueva. Tenga en cuenta que una base de datos que actúa como Shard Map Manager no debe ser la misma base de datos que la de una partición. El script de PowerShell no crea la base de datos por usted.
Paso 1: crear un administrador de mapas de particiones
# 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.
Recuperación del administrador de mapas de particiones
Después de la creación, puede recuperar el administrador de mapas de particiones con este cmdlet. Este paso es necesario cada vez que tiene que usar el objeto 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>'
Paso 2: crear el mapa de particiones.
Seleccione el tipo de mapa de particiones que desea crear. La elección depende de la arquitectura de base de datos:
- Un solo inquilino por base de datos (para ver los términos, consulte el glosario).
- Varios inquilinos por base de datos (dos tipos):
- Asignación de lista
- Asignación de intervalo
Para un modelo de un solo inquilino, cree un mapa de particiones de asignación de lista . El modelo de inquilino único asigna una base de datos por inquilino. Se trata de un modelo eficaz para desarrolladores de SaaS, pues simplifica la administración.
El modelo multiinquilino asigna varios inquilinos a una base de datos individual (y puede distribuir grupos de inquilinos entre varias bases de datos). Use este modelo si espera que cada inquilino tenga pequeñas necesidades de datos. En este modelo, asigne un intervalo de inquilinos a una base de datos mediante asignación de intervalo.
O bien puede implementar un modelo de base de datos de varios inquilinos (multiinquilino) mediante una asignación de lista para asignar varios inquilinos a una base de datos concreta. Por ejemplo, DB1 se usa para almacenar información sobre el identificador de inquilino 1 y 5, mientras que DB2 almacena datos sobre el inquilino 7 y 10.
En función de su elección, elija una de estas opciones:
Opción 1: crear un mapa de particiones para una asignación de lista
Cree un mapa de particiones con el objeto ShardMapManager.
# $ShardMapManager is the shard map manager object
$ShardMap = New-ListShardMap -KeyType $([int]) -ListShardMapName 'ListShardMap' -ShardMapManager $ShardMapManager
Opción 2: crear un mapa de particiones para una asignación de intervalo
Para usar este patrón de asignación, los valores del ID de inquilino deben consistir en intervalos continuos y es posible que haya una brecha en los intervalos al omitir el intervalo al crear las bases de datos.
# $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
Opción 3: Asignaciones de lista en una base de datos individual
La configuración de este patrón también requiere la creación de un mapa de lista, tal como se muestra en el paso 2, opción 1.
Paso 3: preparar particiones individuales
Agregue cada partición (base de datos) al administrador de mapas de particiones. Esto prepara a las bases de datos individuales para almacenar información de asignación. Ejecute este método en cada partición.
$ShardMap
es el mapa de particiones creado en el paso 2.
Add-Shard -ShardMap $ShardMap -SqlServerName '<shard_server_name>' -SqlDatabaseName '<shard_database_name>'
# The $ShardMap is the shard map created in step 2.
Paso 4: agregar asignaciones
La adición de asignaciones depende del tipo de mapa de particiones creado. Si ha creado un mapa de lista, agregue asignaciones de lista. Si ha creado un mapa de intervalo, agregue asignaciones de intervalo.
Opción 1: asignar los datos de una asignación de lista
Asigne los datos agregando una asignación de lista para cada inquilino. Utilice el siguiente script de PowerShell de ejemplo para crear las asignaciones y asociarlas a las nuevas particiones.
# 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>'
Opción 2: asignar los datos de una asignación de intervalo
Agregue las asignaciones de intervalo en todas las asociaciones de base de datos del intervalo de ID de inquilino: Utilice el siguiente script de PowerShell de ejemplo para crear las asignaciones y asociarlas a las nuevas particiones.
# 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>'
Paso 4, opción 3: asignar los datos para varios inquilinos en una base de datos individual
Para cada inquilino, ejecute el Add-ListMapping
cmdlet (opción 1).
Comprobar las asignaciones
Se puede consultar información sobre las particiones existentes y las asignaciones asociadas a ellas mediante el siguiente script de ejemplo de PowerShell:
# List the shards and mappings
Get-Shards -ShardMap $ShardMap
Get-Mappings -ShardMap $ShardMap
Resumen
Una vez haya completado la configuración, puede empezar a usar la biblioteca de cliente de Elastic Database. También puede usar las características de enrutamiento dependiente de los datos y consulta a través de particiones múltiples.