Configuración, reglas y operaciones de tablas y colecciones - AWS Database Migration Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración, reglas y operaciones de tablas y colecciones

Utilice la configuración de la tabla para especificar cualquier configuración que desee aplicar a una tabla o vista seleccionada para una operación específica. Las reglas de configuración de tablas son opcionales, según los requisitos de terminal y migración.

En lugar de utilizar tablas y vistas, las bases de datos MongoDB y Amazon DocumentDB almacenan los registros de datos como documentos que se agrupan en colecciones. Una base de datos única para cualquier terminal de MongoDB o Amazon DocumentDB es un conjunto específico de colecciones identificadas por el nombre de la base de datos.

Al migrar desde una fuente de MongoDB o Amazon DocumentDB, se trabaja con configuraciones de carga en parallel de forma ligeramente diferente. En este caso, considere el tipo de segmentación automática o segmentación por rango de la configuración de carga en parallel para las colecciones seleccionadas, en lugar de las tablas y vistas.

Para las reglas de mapeo de tablas que utilizan el tipo de regla table-settings, puede aplicar los parámetros siguientes.

Parámetro Valores posibles Descripción
rule-type table-settings Valor que aplica la regla a una tabla, vista o colección especificada por la regla de selección.
rule-id Un valor numérico. Un único valor numérico para identificar la regla.
rule-name Un valor alfanumérico. Un nombre exclusivo para identificar la regla.
object-locator Un objeto con los siguientes parámetros:
  • schema-name— El nombre del esquema. Para los endpoints de MongoDB y Amazon DocumentDB, este es el nombre de la base de datos que contiene un conjunto de colecciones.

  • table-name— El nombre de la tabla, vista o colección.

El nombre de un esquema y una tabla o vista específicos o el nombre de una base de datos y una colección específicas (sin caracteres comodín).

parallel-load Un objeto con los siguientes parámetros:
  • type— Especifica si la carga en parallel está activada.

    Si lo está, este parámetro también especifica el mecanismo para identificar las particiones, subparticiones u otros segmentos de tabla o vista que se van a cargar en paralelo. Las particiones son segmentos que ya están definidos e identificados por el nombre en la tabla o vista de origen.

    Para los endpoints de MongoDB y Amazon DocumentDB, las particiones son segmentos. AWS DMSpuede calcular estos parámetros de autosegmentación asociados de forma automática de forma automática. O bien, puede especificarlos manualmente mediante parámetros de segmentación de rango.

    Solo para los puntos de enlace de Oracle, las subparticiones son un nivel de segmentos adicional que ya están definidos e identificados por el nombre en la tabla o vista de origen. Puede identificar otros segmentos en la regla table-settings especificando límites en el intervalo de valores para una o varias columnas de tabla o vista.

  • partitions— Cuandotype espartitions-list, este valor especifica todas las particiones que se cargarán en parallel.

  • subpartitions— Solo para los puntos de enlace de Oracle, cuandotypepartitions-list este valor especifica todas las subparticiones que se cargarán en parallel.

  • columns— Cuandotype lo esranges, este valor especifica los nombres de las columnas que se utilizan para identificar los segmentos basados en rangos que se cargarán en parallel.

  • boundaries— Cuandotype esranges, este valor especifica los valores delcolumns utilizado para identificar los segmentos basados en el rango que se cargarán en parallel.

Un valor que especifica una operación de carga en paralelo (varios subprocesos) en la tabla o vista identificada por la opción object-locator. En este caso, puede cargar en paralelo en cualquiera de las siguientes formas:

  • Por segmentos especificados por todas las particiones o subparticiones disponibles.

  • Por particiones y subparticiones seleccionadas.

  • Mediante segmentación automática o segmentos basados en el rango que especifique.

Para obtener más información acerca de la carga en parallel, consulteUso de la carga parallel para las tablas, vistas y colecciones seleccionadas.

type Una de las siguientes para parallel-load:
  • partitions-auto— Todas las particiones de la tabla o vista se cargan en parallel. Cada partición se asigna a su propio subproceso.

    Esta es una configuración obligatoria para que los endpoints de origen de MongoDB y Amazon DocumentDB utilicen la opción de segmentación automática de una carga completa en parallel.

  • subpartitions-auto— (Solo puntos de enlace de Oracle) Todas las subparticiones de la tabla o vista se cargan en parallel. Cada subpartición se asigna a su propio subproceso.

  • partitions-list— Todas las particiones especificadas de la tabla o vista se cargan en parallel. Solo para los puntos de enlace de Oracle, todas las subparticiones especificadas de la tabla o vista se cargan en paralelo. Cada partición y subpartición que especifique se asigna a su propio subproceso. Puede especificar las particiones y subparticiones que se cargan en paralelo por los nombres de particiones (partitions) y los nombres de subparticiones (subpartitions).

  • ranges— Todos los segmentos de la tabla, vista o colección especificados por el rango se cargan en parallel. Cada segmento de tabla, vista o colección que identifique se asigna a su propio hilo. Especifique estos segmentos por los nombres de las columnas (columns) y los valores de la columnas (boundaries).

    Los endpoints de PostgreSQL solo admiten este tipo de carga parallel. MongoDB y Amazon DocumentDB, como puntos de enlace de origen, admiten este tipo de segmentación de rango y el tipo de autosegmentación de una carga completa en parallel (partitions-auto).

  • none— La tabla, vista o colección se carga en una tarea de un solo subproceso (la opción predeterminada), independientemente de sus particiones o subparticiones. Para obtener más información, consulte Creación de una tarea.

El mecanismo para identificar las particiones, subparticiones o segmentos de tablas, vistas o colecciones que se van a cargar en parallel.
number-of-partitions (Opcional) Cuandotype se tratapartitions-auto de colecciones especificadas de un endpoint de MongoDB o Amazon DocumentDB, este parámetro especifica el número total de particiones (segmentos) que se utilizan para la migración. El valor predeterminado es 16. Especifica el número exacto de particiones que se cargarán en parallel.
collection-count-from-metadata (Opcional) Cuandotype se tratapartitions-auto de colecciones especificadas de un endpoint de MongoDB o Amazon DocumentDB y este parámetro está establecido entrue,AWS DMS utiliza un recuento de colecciones estimado para determinar el número de particiones. Si este parámetro está establecido enfalse,AWS DMS utiliza el recuento real de colecciones. El valor predeterminado es true. Especifica si se debe utilizar un recuento de colecciones estimado o el recuento de colecciones real para calcular el número de particiones que se cargarán en parallel.
max-records-skip-per-page (Opcional) Cuandotype se tratapartitions-auto de colecciones específicas de un endpoint de MongoDB o Amazon DocumentDB, este es el número de registros que se deben omitir a la vez al determinar los límites de cada partición. AWS DMSutiliza un método de omisión paginado para determinar el límite mínimo de una partición. El valor predeterminado es 10 000. Especifica el número de registros que se van a omitir a la vez al determinar los límites de cada partición. Si se establece un valor relativamente grande con respecto al valor predeterminado, se pueden agotar los tiempos de espera del cursor y provocar errores en las tareas. Si se establece un valor relativamente bajo respecto al predeterminado, se obtienen más operaciones por página y una carga completa más lenta.
batch-size (Opcional) Cuandotype se tratapartitions-auto de colecciones especificadas de un endpoint de MongoDB o Amazon DocumentDB, este valor entero limita la cantidad de documentos devueltos en un lote de ida y vuelta. Si el tamaño del lote es cero (0), el cursor utiliza el tamaño máximo de lote definido por el servidor. El valor predeterminado es 0. Especifica el número máximo de documentos devueltos en un lote. Cada lote requiere un viaje de ida y vuelta al servidor.
partitions Cuando type es partitions-list, se trata de una serie de cadenas que especifican los nombres de las particiones que se cargan en paralelo. Los nombres de las particiones que se van a cargar en paralelo.
subpartitions (Solo puntos de enlace de Oracle) Cuando type es partitions-list, se trata de una matriz de cadenas que especifica los nombres de las subparticiones que se van a cargar en paralelo. Los nombres de las subparticiones que se van a cargar en paralelo.
columns Cuandotype esranges, una matriz de cadenas configurada con los nombres de las columnas que identifican los segmentos de tablas, vistas o colecciones basados en rangos que se cargan en parallel. Los nombres de las columnas que identifican los segmentos de tablas, vistas o colecciones basados en rangos que se cargarán en parallel.
boundaries Cuando type es ranges, una matriz de matrices de valores de columna. Cada matriz de valores de columna contiene valores de columna en la cantidad y el orden especificados por columns. Una matriz de valores de columna especifica el límite superior de un segmento de tabla, vista o colección. Cada matriz de valores de columna adicional agrega el límite superior de un segmento adicional de tabla, vista o colección. Todos estos segmentos de tablas, vistas o colecciones basados en rangos se cargan en parallel. Valores de columna que identifican las particiones de tablas, vistas o colecciones basadas en rangos que se cargan en parallel.
lob-settings Un objeto con los siguientes parámetros:
  • mode— Especifica el modo de gestión de la migración para las LOB.

  • bulk-max-size— Especifica el tamaño máximo de las LOB, según lamode configuración.

Un valor que especifica la gestión de LOB para la tabla o vista identificada por la opción object-locator. La gestión de LOB especificada anula cualquier configuración de tarea de LOB solo para esta tabla o vista. Para obtener más información acerca del uso de los parámetros de configuración de LOB, consulteEspecificación de la configuración de LOB para una tabla o vista seleccionada.
mode

Especifica la gestión de migración para LOB en la tabla o vista especificada utilizando los valores siguientes:

  • limited— (Predeterminado) Este valor establece la migración al modo LOB limitado, en el que todas las LOB se migran en línea junto con todos los demás tipos de datos de columna de la tabla o vista. Utilice este valor al replicar LOB principalmente de tamaño pequeño (100 MB o menos). Además, especifique un valor bulk-max-size (cero no es válido). Todos los LOB migrados con un tamaño superior a bulk-max-size se truncan al tamaño que establezca.

  • unlimited— Este valor establece la migración al modo LOB completo. Utilice este valor cuando la totalidad o la mayor parte de los LOB que desea replicar tienen un tamaño superior a 1 GB. Si especifica un valor bulk-max-size de cero, todos los LOB se migran en modo de LOB completo estándar. En esta forma del modo unlimited, todos los LOB se migran aparte de otros tipos de datos de columna mediante una búsqueda desde la tabla o vista de origen. Si especifica un valor bulk-max-size mayor que cero, todos los LOB se migran con el modo de LOB completo de combinación. En esta forma del modo unlimited, los LOB con un tamaño superior a bulk-max-size se migran utilizando una búsqueda de tabla o vista de origen, similar al modo LOB completo estándar. De lo contrario, los LOB hasta este tamaño se migran en línea, similar al modo de LOB limitado. Ningún LOB se trunca en el modo unlimited, independientemente de la forma que utilice.

  • none— Todos los LOB de tablas o vistas se migran de acuerdo con la configuración de los LOB de la tarea.

    Para obtener más información acerca de la configuración de LOB de tareas, consulteConfiguración de las tareas de los metadatos de destino.

    Para obtener más información acerca de cómo migrar LOB y cómo especificar la configuración de LOB de estas tareas, consulteConfiguración de la compatibilidad de LOB con bases de datos de origen en una tarea de AWS DMS.

El mecanismo que se utiliza para migrar LOB.
bulk-max-size El efecto de este valor depende del mode. El tamaño máximo de los LOB en incrementos de kilobytes. Especifique esta opción solo si necesita replicar LOB pequeños o si el punto de enlace de destino no admite el tamaño de LOB ilimitado.

Los comodines en la configuración de tabla están restringidos

No se admite el uso del comodín"%" porcentual () en"table-settings" las reglas en las bases de datos de origen, como se muestra a continuación.

{ "rule-type": "table-settings", "rule-id": "8", "rule-name": "8", "object-locator": { "schema-name": "ipipeline-prod", "table-name": "%" }, "parallel-load": { "type": "partitions-auto", "number-of-partitions": 16, "collection-count-from-metadata": "true", "max-records-skip-per-page": 1000000, "batch-size": 50000 } }

Si utiliza"%" las"table-settings" reglas tal y como se muestra,AWS DMS devuelve la siguiente excepción.

Error in mapping rules. Rule with ruleId = x failed validation. Exact schema and table name required when using table settings rule.

Además,AWS recomienda no cargar una gran cantidad de colecciones grandes con una sola tareaparallel-load. Tenga en cuenta queAWS DMS limita la contención de recursos y el número de segmentos cargados en parallel mediante el valor del parámetro de configuración deMaxFullLoadSubTasks tareas, con un valor máximo de 49.

En su lugar, especifique todas las colecciones de la base de datos de origen para las colecciones más grandes especificando cada una de ellas"schema-name" de"table-name" forma individual. Además, amplíe su migración correctamente. Por ejemplo, ejecute varias tareas en un número suficiente de instancias de replicación para gestionar una gran cantidad de colecciones grandes en la base de datos.

Uso de la carga parallel para las tablas, vistas y colecciones seleccionadas

Para acelerar la migración y hacerla más eficiente, puede utilizar la carga parallel para las tablas, vistas y colecciones relacionales seleccionadas. En otras palabras, puede migrar una única tabla, vista o colección segmentada utilizando varios subprocesos en parallel. Para ello, AWS DMS divide una tarea de carga completa en subprocesos y a cada segmento de la tabla se le asigna su propio subproceso.

Con este proceso de carga en parallel, primero puede hacer que varios subprocesos descarguen varias tablas, vistas y colecciones en parallel desde el punto final de origen. A continuación, puede hacer que varios subprocesos migren y carguen las mismas tablas, vistas y colecciones en parallel al punto final de destino. Para algunos motores de base de datos, puede segmentar las tablas y vistas por las particiones o subparticiones existentes. Para otros motores de bases de datos, puede hacer que las colecciones se segmentenAWS DMS automáticamente según parámetros específicos (segmentación automática). De lo contrario, puede segmentar cualquier tabla, vista o colección según los rangos de valores de columna que especifique.

La carga en paralelo es compatible para los siguientes puntos de enlace de origen:

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2 10.5

  • SAP Adaptive Server Enterprise (ASE)

  • MongoDB (solo admite las opciones de segmentación automática y segmentación de rango de una carga completa en parallel)

  • Amazon DocumentDB (solo admite las opciones de segmentación automática y segmentación de rango de una carga completa en parallel)

Para los endpoints de MongoDB y Amazon DocumentDB,AWS DMS admite los siguientes tipos de datos para las columnas que son claves de partición para la opción de segmentación de rango de una carga completa en parallel.

  • Doble

  • Cadena

  • ObjectId

  • entero de 32 bits

  • Entero de 64 bits

La carga paralela para su uso con reglas de configuración de tablas se admite para los siguientes puntos de enlace de destino:

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • Simple Storage Service (Amazon S3)

  • SAP Adaptive Server Enterprise (ASE)

  • Amazon Redshift

  • MongoDB (solo admite las opciones de segmentación automática y segmentación de rango de una carga completa en parallel)

  • Amazon DocumentDB (solo admite las opciones de segmentación automática y segmentación de rango de una carga completa en parallel)

Para especificar el número máximo de tablas y vistas que se pueden cargar en paralelo, utilice el ajuste de tarea MaxFullLoadSubTasks.

Para especificar el número máximo de subprocesos por tabla o vista para los objetivos admitidos en una tarea de carga paralela, defina más segmentos mediante los límites de valores de columna.

Para especificar el número máximo de subprocesos por tabla para los destinos de Amazon DynamoDB, Amazon Kinesis Data Streams, Apache Kafka o Amazon Elasticsearch Service, utilice la configuración de tareas de metadatos deParallelLoadThreads destino.

Para especificar el tamaño del búfer para una tarea de carga parallel cuandoParallelLoadThreads se utilice, utilice la configuración de la tarea de metadatos deParallelLoadBufferSize destino.

La disponibilidad y la configuración del terminal de destinoParallelLoadThreads yParallelLoadBufferSize dependen del mismo.

Para obtener más información sobre laParallelLoadBufferSize configuraciónParallelLoadThreads y, consulteConfiguración de las tareas de los metadatos de destino. Para obtener más información acerca de la opción MaxFullLoadSubTasks, consulte Configuración de tareas de carga completa. Para obtener información específica en puntos de enlace de destino, consulte los temas relacionados.

Para utilizar la carga en paralelo, cree una regla de mapeo de tablas de tipo table-settings con la opción parallel-load. Dentro de latable-settings regla, puede especificar los criterios de segmentación para una sola tabla, vista o colección que desee cargar en parallel. Para hacerlo, establezca el parámetro type de la opción parallel-load a una de varias opciones.

La forma de hacerlo depende de cómo desee segmentar la tabla, la vista o la colección para una carga parallel:

  • Por particiones (o segmentos): cargue todas las particiones (o segmentos) de tabla o visualización existentes utilizando elpartitions-auto tipo. O cargue solo las particiones seleccionadas utilizando elpartitions-list tipo con una matriz de particiones especificada.

    Solo para los endpoints de MongoDB y Amazon DocumentDB, cargue todas las colecciones o las recopilaciones especificadas por segmentos queAWS DMS se calculen automáticamente también utilizando elpartitions-auto tipo ytable-settings los parámetros opcionales adicionales.

  • (Solo puntos de enlace de Oracle) Por subparticiones: cargue todas las subparticiones de tablas o visualice las subparticiones existentes utilizando elsubpartitions-auto tipo. También puede cargar solamente las subparticiones seleccionadas con el tipo partitions-list y una matriz subpartitions especificada.

  • Por segmentos que defina: cargue los segmentos de tablas, vistas o colecciones que defina mediante límites de valores de columna. Para ello, utilice el tipo ranges con las matrices columns y boundaries especificadas.

    nota

    Los endpoints de PostgreSQL solo admiten este tipo de carga parallel. MongoDB y Amazon DocumentDB, como puntos de enlace de origen, admiten este tipo de segmentación de rango y el tipo de autosegmentación de una carga completa en parallel (partitions-auto).

Para identificar tablas, vistas o colecciones adicionales para cargarlas en parallel, especifiquetable-settings objetos adicionales conparallel-load opciones.

En los siguientes procedimientos, puede ver cómo programar el JSON para cada tipo de carga en paralelo, desde el más simple al más complejo.

Para especificar todas las particiones de tablas, vistas o colecciones, o todas las subparticiones de tablas o vistas
  • Especifique parallel-load con el tipo partitions-auto o con el tipo subpartitions-auto (pero no ambos).

    Cada partición (o segmento) o subpartición de una tabla, vista o colección se asigna automáticamente a su propio hilo.

    Para algunos extremos, la carga en parallel incluye particiones o subparticiones solo si ya están definidas para la tabla o la vista. Para los puntos de enlace de origen de MongoDB y Amazon DocumentDB, puede calcularAWS DMS automáticamente las particiones (o segmentos) en función de parámetros adicionales opcionales. Incluyen number-of-partitions, collection-count-from-metadata, max-records-skip-per-page y batch-size.

Para especificar particiones de tabla o vista, subparticiones o ambas
  1. Especifique parallel-load con el tipo partitions-list.

  2. (Opcional) Para incluir particiones, especifique una matriz de nombres de partición como valor de partitions.

    Cada partición especificada se asigna a continuación a su propio subproceso.

    importante

    Para los endpoints de Oracle, asegúrese de que las particiones y subparticiones no se superpongan al elegirlas para la carga en parallel. Si utiliza particiones y subparticiones superpuestas para cargar datos en parallel, se duplican las entradas o se produce un error debido a una infracción de duplicación de la clave principal.

  3. (Opcional), solo para los puntos de enlace de Oracle, incluya las subparticiones especificando una matriz de nombres de subparticiones como valor desubpartitions.

    Cada subpartición especificada se asigna a continuación a su propio subproceso.

    nota

    La carga en paralelo incluye particiones o subparticiones solo si ya están definidas para la tabla o vista.

Puede especificar segmentos de tabla o vista como rangos de valores de columna Al hacerlo, tenga en cuenta estas características de las columnas:

  • La especificación de columnas indexadas mejora de manera significativa el rendimiento.

  • Puede especificar hasta 10 columnas.

  • No puede utilizar columnas para definir límites de segmentos con los siguientes tipos de datos de AWS DMS: DOUBLE, FLOAT, BLOB, CLOB y NCLOB.

  • Los registros con valores nulos no se replican.

Para especificar segmentos de tablas, vistas o colecciones como rangos de valores de columna
  1. Especifique parallel-load con el tipo ranges.

  2. Defina un límite entre los segmentos de tabla o vista; para ello, especifique una matriz de nombres de columnas como valor de columns. Repita esta operación con cada columna para la que desea definir un límite entre segmentos de tabla o vista.

    El orden de las columnas es importante. La primera columna es la más importante y la última es la menos importante para definir cada límite, tal como se describe a continuación.

  3. Para definir los rangos de datos de todos los segmentos de la tabla o vista, especifique una matriz de límites como valor de boundaries. Una matriz de límite es una matriz de matrices columna-valor. Para ello, siga estos pasos:

    1. Especifique cada elemento de una matriz de valores de columna como un valor que corresponde a cada columna. Una matriz columna-valor representa el límite superior de cada segmento de tabla o vista que desea definir. Especifique cada columna en el mismo orden en el que la especificó en la matriz columns.

      Introduzca valores para las columnas DATE en el formato admitido por el origen.

    2. Especifique cada matriz de valores de columna como el límite superior, en orden, de cada segmento desde la parte inferior hasta el next-to-top segmento de la tabla o vista. Si existe alguna fila sobre el límite superior que especifique, estas filas completan el segmento superior de la tabla o vista. De este modo, el número de segmentos basados en rango es potencialmente uno más que el número de límites de segmentos en la matriz de límites. Cada uno de estos segmentos basados en rango se asigna a su propio subproceso.

      Todos los datos no nulos se replican, incluso si no define rangos de datos para todas las columnas de la tabla o vista.

    Por ejemplo, supongamos que define tres matrices de valores de columna para las columnas COL1, COL2 y COL3 de la siguiente manera.

    COL1 COL2 COL3
    10 30 105
    20 20 120
    100 12 99

    Ha definido tres límites de segmentos para un total posible de cuatro segmentos.

    Para identificar los rangos de filas que se van a replicar para cada segmento, la instancia de replicación aplica una búsqueda a estas tres columnas para cada uno de los cuatro segmentos. La búsqueda es similar a la siguiente:

    Segmento 1

    Replique todas las filas en las que se cumpla lo siguiente: los primeros valores de dos columnas son inferiores o iguales a sus valores de límite superior de Segmento 1 correspondientes. Además, los valores de la tercera columna son inferiores a su valor de límite superior de Segmento 1.

    Segmento 2

    Replique todas las filas (salvo el Segmento 1) en las que se cumpla lo siguiente: los primeros valores de dos columnas son inferiores o iguales a sus valores de límite superior de Segmento 2 correspondientes. Además, los valores de la tercera columna son inferiores a su valor de límite superior de Segmento 2.

    Segmento 3

    Replique todas las filas (salvo el Segmento 3) en las que se cumpla lo siguiente: los primeros valores de dos columnas son inferiores o iguales a sus valores de límite superior de Segmento 3 correspondientes. Además, los valores de la tercera columna son inferiores a su valor de límite superior de Segmento 3.

    Segmento 4

    Replique todas las filas restantes (excepto las filas Segment 1, 2 y 3).

    En este caso, la instancia de replicación crea una cláusula WHERE para cargar cada segmento tal y como se indica a continuación:

    Segmento 1

    ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))

    Segmento 2

    NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))

    Segmento 3

    NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

    Segmento 4

    NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

Especificación de la configuración de LOB para una tabla o vista seleccionada

Puede establecer la configuración de LOB de tareas para una o más tablas creando una regla de mapeo de tablas de tipo table-settings con la opción lob-settings para uno o más objetos table-settings.

La especificación de la configuración de LOB para tablas o vistas seleccionadas se admite para los siguientes puntos de enlace de origen:

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • IBM Db2, en función de los ajustes mode y bulk-max-size, que se describen a continuación

  • SAP Adaptive Server Enterprise (ASE), en función de los ajustes mode y bulk-max-size, que se describen a continuación

La especificación de la configuración de LOB para tablas o vistas seleccionadas se admite para los siguientes puntos de enlace de destino:

  • Oracle

  • Microsoft SQL Server

  • MySQL

  • PostgreSQL

  • SAP ASE, en función de los ajustes mode y bulk-max-size, que se describen a continuación

nota

Solo puede utilizar tipos de datos BLOB en tablas y vistas que incluyan una clave principal.

Para utilizar la configuración de LOB para una tabla o vista seleccionada, debe crear una regla de mapeo de tablas de tipo table-settings con la opción lob-settings. Esto especifica la gestión de LOB para la tabla o vista identificada por la opción object-locator. En la regla table-settings, puede especificar un objeto lob-settings con los parámetros siguientes:

  • mode— Especifica el mecanismo para gestionar la migración de LOB para la tabla o vista seleccionada de la siguiente manera:

    • limited— El modo LOB limitado predeterminado es el modo más rápido y eficiente. Utilice este modo solo si todos los LOB son pequeños (hasta 100 MB de tamaño) o el punto de enlace de destino no es compatible con un tamaño de LOB ilimitado. Asimismo, si utiliza limited todos los LOB deben respetar el tamaño que establezca para bulk-max-size.

      En este modo para una tarea de carga completa, la instancia de replicación migra todos los LOB en línea junto con otros tipos de datos de columna como parte del almacenamiento de tabla o vista principal. Sin embargo, la instancia trunca al tamaño especificado cualquier LOB migrado con un tamaño superior al valor bulk-max-size. Para una tarea de carga de captura de datos de cambios (CDC), la instancia migra todos los LOB utilizando una búsqueda de tabla de origen, como en modo LOB completo estándar (consulte a continuación). Lo hace con independencia del tamaño de LOB.

      nota

      Solo puede migrar vistas para tareas de carga completa.

    • unlimited— El mecanismo de migración para el modo LOB completo depende del valor que establezca de labulk-max-size siguiente manera:

      • Modo LOB completo estándar: cuando se establecebulk-max-size en cero, la instancia de replicación migra todos los LOB mediante el modo LOB completo estándar. Este modo requiere una búsqueda en la tabla o vista de origen para migrar cada LOB, con independencia del tamaño. Este enfoque suele dar como resultado una migración mucho más lenta que para el modo de LOB limitado. Utilice este modo solo si todos o la mayor parte de los LOB son grandes (1 GB o más).

      • Modo LOB completo combinado: cuando se establecebulk-max-size un valor distinto de cero, este modo LOB completo utiliza una combinación del modo LOB limitado y el modo LOB completo estándar. Es decir, para una tarea de carga completa, si el tamaño de LOB está dentro del valor bulk-max-size, la instancia migra el LOB en línea como en el modo de LOB limitado. Si el tamaño de LOB es superior a ese valor, la instancia migra el LOB mediante una búsqueda de tabla o vista de origen como en el modo de LOB completo estándar. Para una tarea de carga de captura de datos de cambios (CDC), la instancia migra todos los LOB utilizando una búsqueda de tabla de origen, como en modo LOB completo estándar (consulte a continuación). Lo hace con independencia del tamaño de LOB.

        nota

        Solo puede migrar vistas para tareas de carga completa.

        Este modo da lugar a una velocidad de migración que es un compromiso entre el modo de LOB limitado, más rápido y el modo de LOB completo estándar, más lento. Utilice este modo solo cuando tenga una combinación de LOB pequeños y grandes y la mayoría de los LOB sean pequeños.

        Este modo LOB completo de combinación solo está disponible para los siguientes puntos de enlace:

        • IBM Db2 como origen

        • SAP ASE como origen o destino

      Independientemente del mecanismo que especifique para el modo unlimited, la instancia migra todos los LOB por completo, sin truncado.

    • none— La instancia de replicación migra las LOB de la tabla o vista seleccionada mediante la configuración de LOB de la tarea. Utilice esta opción para ayudar a comparar los resultados de migración con y sin la configuración de LOB para la tabla o vista seleccionada.

    Si la tabla o vista especificada tiene LOB incluidos en la replicación, puede establecer la opción de tarea BatchApplyEnabled en true solo al utilizar el modo de LOB limited.

    En algunos casos, puede establecer BatchApplyEnabled en true y BatchApplyPreserveTransaction en false. En estos casos, la instancia establece BatchApplyPreserveTransaction en true si la tabla o vista tiene LOB y los puntos de enlace de origen y destino son Oracle.

  • bulk-max-size— Establezca este valor en un valor cero o distinto de cero en kilobytes, segúnmode lo descrito para los elementos anteriores. En modo limited, debe establecer un valor distinto de cero para este parámetro.

    La instancia convierte los LOB a formato binario. Por lo tanto, para especificar el LOB mayor que tiene que replicar, multiplique su tamaño por tres. Por ejemplo, si el LOB más grande tiene 2 MB, defina bulk-max-size en 6000 (6 MB).

Ejemplos de configuración de tablas

A continuación, encontrará algunos ejemplos que muestran el uso de la configuración de tabla.

ejemplo Cargar una tabla segmentada por particiones

En el siguiente ejemplo se carga una tabla SALES en el origen de manera más eficiente cargándola en paralelo en función de todas sus particiones.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-auto" } } ] }
ejemplo Cargar una tabla segmentada por subparticiones

El ejemplo siguiente carga una tabla SALES en el origen de Oracle de forma más eficiente cargándola en paralelo en función de todas sus subparticiones.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "subpartitions-auto" } } ] }
ejemplo Cargar una tabla segmentada por una lista de particiones

En el siguiente ejemplo se carga una tabla SALES en su origen cargándola en paralelo por medio de una lista de particiones particular. Aquí, las particiones especificadas se nombran según valores que empiezan por partes del alfabeto, por ejemplo, ABCD, EFGH, etc.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ] } } ] }
ejemplo Cargar una tabla de Oracle segmentada por una lista de particiones y subparticiones seleccionada

En el siguiente ejemplo se carga una table SALES en su origen de Oracle cargándola en paralelo por una lista de particiones y subparticiones seleccionada. Aquí, las particiones especificadas se nombran según valores que empiezan por partes del alfabeto, por ejemplo, ABCD, EFGH, etc. Las subparticiones especificadas se nombran según valores que empiezan por numerales, por ejemplo, 01234 y 56789.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "partitions-list", "partitions": [ "ABCD", "EFGH", "IJKL", "MNOP", "QRST", "UVWXYZ" ], "subpartitions": [ "01234", "56789" ] } } ] }
ejemplo Cargar una tabla segmentada por intervalos de valores de columna

En el siguiente ejemplo se carga una tabla SALES en el origen cargándola en paralelo por segmentos especificados por los rangos de los valores de columna REGION y SALES_NO.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } } ] }

Aquí, se especifican dos columnas por rangos de segmento con los nombres SALES_NO y REGION. Se especifican dos límites con dos conjuntos de valores de columna (["1000","NORTH"] y ["3000","WEST"]).

Estos dos límites, por lo tanto, identifican los tres segmentos de tabla siguientes para cargarlos en paralelo:

Segmento 1

Las filas con SALES_NO menor o igual que 1000 y REGION menor que "NORTH". En otras palabras, cifras de ventas de hasta 1000 en la región EAST.

Segmento 2

Las filas distintas de Segmento 1 con SALES_NO menor o igual que 3000 y REGION menor que "WEST". En otras palabras, las cifras de ventas de 1000 a 3000 en las regiones NORTH y SOUTH.

Segmento 3

Todas las filas restantes que no sean Segment 1 y Segment 2. En otras palabras, los números de ventas superiores a 3000 en la región “WEST”.

ejemplo Cargar dos tablas: una segmentada por intervalos y otra segmentada por particiones

En el siguiente ejemplo se carga una tabla SALES en paralelo por los límites de segmento que identifique. También se carga una tabla ORDERS en paralelo por todas sus particiones, como en ejemplos anteriores.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "HR", "table-name": "SALES" }, "parallel-load": { "type": "ranges", "columns": [ "SALES_NO", "REGION" ], "boundaries": [ [ "1000", "NORTH" ], [ "3000", "WEST" ] ] } }, { "rule-type": "table-settings", "rule-id": "3", "rule-name": "3", "object-locator": { "schema-name": "HR", "table-name": "ORDERS" }, "parallel-load": { "type": "partitions-auto" } } ] }
ejemplo Cargar una tabla con LOB utilizando el modo de LOB limitado

En el siguiente ejemplo se carga una tabla ITEMS que incluye LOB en el origen utilizando el modo de LOB limitado (el predeterminado) con un tamaño máximo no truncado de 100 MB. Cualquier LOB que tenga un tamaño superior a este se trunca a 100 MB. Todos los LOB se cargan en línea con todos los demás tipos de datos de columna

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "bulk-max-size": "100000" } } ] }
ejemplo Cargar una tabla con LOB utilizando el modo de LOB completo estándar

En el siguiente ejemplo se carga una tabla ITEMS en su origen, incluidos todos sus LOB sin truncar, utilizando el modo de LOB completo estándar. Todos LOB, con independencia de su tamaño, se cargan por separado de otros tipos de datos mediante una búsqueda para cada LOB en la tabla de origen.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "0" } } ] }
ejemplo Cargar una tabla con LOB utilizando el modo de LOB completo de combinación

En el siguiente ejemplo se carga una tabla ITEMS en su origen, incluidos todos los LOB sin truncado, utilizando el modo de LOB completo de combinación. Todos los LOB de hasta 100 MB de tamaño se cargan en línea junto con otros tipos de datos, como en el modo LOB limitado. Todos los LOB de más de 100 MB de tamaño se cargan por separado de otros tipos de datos. Esta carga independiente utiliza una búsqueda para cada uno de estos LOB en la tabla de origen, como en el modo LOB completo estándar.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "unlimited", "bulk-max-size": "100000" } } ] }
ejemplo Cargar una tabla con LOB utilizando la configuración de LOB de tareas

En el ejemplo siguiente se carga una tabla ITEMS en el origen, incluidos todos los LOB, utilizando su configuración de LOB de tarea. La configuración de bulk-max-size de 100 MB se omite y se deja solo para un restablecimiento rápido al modo limited o unlimited.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "table-settings", "rule-id": "2", "rule-name": "2", "object-locator": { "schema-name": "INV", "table-name": "ITEMS" }, "lob-settings": { "mode": "none", "bulk-max-size": "100000" } } ] }