Reglas y operaciones de configuración de tablas y recopilaciones - 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.

Reglas y operaciones de configuración de tablas y recopilaciones

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 en función del punto de conexión y de los requisitos de migración.

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

Al migrar desde un origen de MongoDB o Amazon DocumentDB, se trabaja con la configuración de carga paralela 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 paralela para recopilaciones seleccionadas en lugar de 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 Un valor que aplica la regla a una tabla, vista o recopilación especificada mediante 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 puntos de conexión de MongoDB y Amazon DocumentDB, este es el nombre de la base de datos que contiene un conjunto de recopilaciones.

  • table-name: el nombre de la tabla, vista o recopilación.

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

parallel-load Un objeto con los siguientes parámetros:
  • type: especifica si la carga en paralelo 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.

    En el caso de los puntos de enlace de MongoDB y Amazon DocumentDB, las particiones son segmentos. AWS DMS puede calcularlos automáticamente con los parámetros de autosegmentación asociados. O bien, puede especificarlos manualmente mediante los parámetros de segmentación por 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: cuando type es partitions-list, este valor especifica todas las particiones que se van a cargar en paralelo.

  • subpartitions: solo para los puntos de conexión de Oracle, cuando type es partitions-list, este valor especifica todas las subparticiones que se van a cargar en paralelo.

  • columns: cuando type es ranges, este valor especifica los nombres de columnas utilizadas para identificar segmentos basados en rango que se van a cargar en paralelo.

  • boundaries: cuando type es ranges, este valor especifica los valores de las columns utilizadas para identificar segmentos basados en rango que se van a cargar en paralelo.

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.

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

Para obtener más información acerca de la carga paralela, consulte Uso de carga paralela para tablas, vistas y recopilaciones seleccionadas.

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

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

  • subpartitions-auto: (solo puntos de conexión de Oracle) todas las subparticiones de la tabla o vista se cargan en paralelo. Cada subpartición se asigna a su propio subproceso.

  • partitions-list: todas las particiones especificadas de la tabla o vista se cargan en paralelo. 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 especificados por rango de la tabla, vista o recopilación se cargan en paralelo. Cada segmento de tabla, vista o recopilación que identifique se asigna a su propio subproceso. Especifique estos segmentos por los nombres de las columnas (columns) y los valores de la columnas (boundaries).

    Los puntos de conexión de PostgreSQL admiten solo este tipo de carga paralela. MongoDB y Amazon DocumentDB como puntos de conexión de origen admiten este tipo de segmentación por rango y el tipo de segmentación automática de una carga completa paralela (partitions-auto).

  • none: la tabla, vista o recopilación se carga en una tarea de un solo subproceso (predeterminada), con independencia de las 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 tabla, vista o recopilación que se van a cargar en paralelo.
number-of-partitions (Opcional) Cuando type es partitions-auto para recopilaciones específicas de un punto de conexión de MongoDB o Amazon DocumentDB, este parámetro especifica el número total de particiones (segmentos) utilizadas para la migración. El valor predeterminado es 16. Especifica el número exacto de particiones que cargar en paralelo.
collection-count-from-metadata (Opcional) Cuando type es partitions-auto para colecciones específicas de un punto final de MongoDB o Amazon DocumentDB y este parámetro está establecido true en 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 de colecciones real. El valor predeterminado es true. Especifica si se debe utilizar un recuento de recopilaciones estimado o el recuento de recopilaciones real para calcular el número de particiones que se van a cargar en paralelo.
max-records-skip-per-page (Opcional) Cuando type es partitions-auto para recopilaciones específicas de un punto de conexión 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 DMS utiliza un enfoque de omisión paginada 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 de una vez al determinar los límites de cada partición. Si se establece un valor relativamente alto con respecto al valor predeterminado, es posible que se agoten los tiempos de espera del cursor y se produzcan errores en las tareas. Si se establece un valor relativamente bajo respecto al valor predeterminado, se realizan más operaciones por página y se ralentiza la carga completa.
batch-size (Opcional) Cuando type es partitions-auto para recopilaciones específicas de un punto de conexión de MongoDB o Amazon DocumentDB, este valor entero limita el número 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 Cuando type es ranges, se establece una matriz de cadenas en los nombres de columnas que identifican segmentos de tabla, vista o recopilación basados en rango que se cargan en paralelo. Los nombres de las columnas utilizadas para identificar segmentos de tabla, vista o recopilación basados en rango que se van a cargar en paralelo.
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 recopilación. Cada matriz de valores de columna adicional agrega el límite superior de un segmento de tabla, vista o recopilación adicional. Todos estos segmentos de tabla, vista o recopilación basados en rango se cargan en paralelo. Los valores de columna que identifican particiones de tabla, vista o recopilación basados en rango para cargar en paralelo.
lob-settings Un objeto con los siguientes parámetros:
  • mode: especifica el modo de gestionar la migración para los LOB.

  • bulk-max-size: especifica el tamaño máximo de los LOB, en función de la configuración de mode.

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 sobre el uso de los parámetros de configuración de LOB, consulte Especificació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 en el modo de LOB limitado, con todos los LOB migrados en línea junto con todos los demás tipos de datos de columna en 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 en modo de 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 tabla o vista se migran de acuerdo con la configuración de LOB de tareas.

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

    Para obtener más información sobre cómo migrar LOB y cómo especificar esta configuración de LOB de tareas, consulte Configurar la compatibilidad con LOB para las bases de datos de origen de una tarea 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 caracteres comodín en la configuración de las tablas están restringidos

No se admite el uso del carácter de comodín de porcentaje ("%") en las reglas de "table-settings" para 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 usa "%" las "table-settings" reglas 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 un gran número de colecciones grandes mediante una sola tarea conparallel-load. Tenga en cuenta que AWS DMS limita la contención de recursos, así como el número de segmentos cargados en paralelo, según el valor del parámetro de configuración de la tarea MaxFullLoadSubTasks, con un valor máximo de 49.

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

Uso de carga paralela para tablas, vistas y recopilaciones seleccionadas

Para acelerar la migración y hacerla más eficiente, puede utilizar la carga paralela para tablas, vistas y recopilaciones relacionales seleccionadas. En otras palabras, puede migrar una tabla, vista o recopilación de segmentación única con varios subprocesos en paralelo. Para ello, AWS DMS divide una tarea de carga completa en subprocesos, y cada segmento de la tabla se asigna a su propio subproceso.

Con este proceso de carga en paralelo, primero puede hacer que varios subprocesos descarguen diversas tablas, vistas y recopilaciones en paralelo desde el punto de conexión de origen. A continuación, puede hacer que varios subprocesos migren y carguen las mismas tablas, vistas y recopilaciones en paralelo al punto de conexión 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 segmentar AWS DMS automáticamente las colecciones según parámetros específicos (segmentación automática). De lo contrario, puede segmentar cualquier tabla, vista o recopilación por 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

  • SAP Adaptive Server Enterprise (ASE)

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

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

  • Amazon DynamoDB

Para los puntos de enlace 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 paralela.

  • 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

  • Amazon S3

  • SAP Adaptive Server Enterprise (ASE)

  • Amazon Redshift

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

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

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 destinos admitidos de una tarea de carga paralela, defina más segmentos mediante los límites entre columnas y valores.

importante

MaxFullLoadSubTasks controla el número de tablas o segmentos de tabla que se van a cargar en paralelo. ParallelLoadThreads controla el número de subprocesos que utiliza una tarea de migración para ejecutar las cargas en paralelo. Estos ajustes son multiplicativos. Por lo tanto, el número total de subprocesos que se utilizan durante una tarea de carga completa es aproximadamente el resultado del valor de ParallelLoadThreads multiplicado por el valor de MaxFullLoadSubTasks (ParallelLoadThreads * MaxFullLoadSubtasks)).

Si crea tareas con un número elevado de subtareas de carga completa y un número elevado de subprocesos de carga en paralelo, la tarea puede consumir demasiada memoria y producir un error.

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 de destino ParallelLoadThreads.

Para especificar el tamaño del búfer para una tarea de carga paralela cuando se use ParallelLoadThreads, use el ajuste de la tarea de metadatos de destino de ParallelLoadBufferSize.

La disponibilidad y configuración de ParallelLoadThreads y ParallelLoadBufferSize dependen del punto de conexión de destino.

Para obtener más información sobre los ajustes de ParallelLoadThreads y ParallelLoadBufferSize, consulte Configuració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 la regla table-settings, puede especificar los criterios de segmentación para una única tabla, vista o recopilación que desea cargar en paralelo. Para hacerlo, establezca el parámetro type de la opción parallel-load a una de varias opciones.

Cómo hacerlo depende de cómo desee segmentar la tabla, vista o recopilación para carga paralela:

  • Por particiones (o segmentos): cargue todas las particiones de tabla o vista (o segmentos) existentes con el tipo partitions-auto. También puede cargar solo las particiones seleccionadas con el tipo partitions-list y una matriz de particiones especificada.

    Solo para los puntos de enlace de MongoDB y Amazon DocumentDB, cargue todas las colecciones o las especificadas por segmentos AWS DMS que se calculen automáticamente también con partitions-auto el tipo y los parámetros opcionales adicionales. table-settings

  • (Solo los puntos de conexión de Oracle) Por subparticiones: cargue todas las subparticiones de tablas o vistas existentes con el tipo subpartitions-auto. 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 tabla, vista o recopilación que defina mediante límites de valor de columna. Para ello, utilice el tipo ranges con las matrices columns y boundaries especificadas.

    nota

    Los puntos de conexión de PostgreSQL admiten solo este tipo de carga paralela. MongoDB y Amazon DocumentDB como puntos de conexión de origen admiten este tipo de segmentación por rango y el tipo de segmentación automática de una carga completa paralela (partitions-auto).

Para identificar otras tablas, vistas o recopilaciones que desee cargar en paralelo, especifique objetos de table-settings adicionales con las opciones parallel-load.

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.

Especificación de todas las particiones de tabla, vista o recopilación o todas las subparticiones de tabla o vista
  • Especifique parallel-load con el tipo partitions-auto o con el tipo subpartitions-auto (pero no ambos).

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

    Para algunos puntos de conexión, la carga en paralelo incluye particiones o subparticiones solo si ya están definidas para la tabla o vista. Para los puntos finales de origen de MongoDB y Amazon DocumentDB, puede hacer AWS DMS que calculen 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 puntos de conexión de Oracle, asegúrese de que las particiones y subparticiones no se superpongan al elegirlas para carga paralela. Si utiliza particiones y subparticiones superpuestas para cargar datos en paralelo, 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 puntos de conexión de Oracle, incluir subparticiones mediante la especificación de una matriz de nombres de subpartición como valor de subpartitions.

    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 usar columnas para definir los límites de los segmentos con los siguientes tipos de AWS DMS datos: DOUBLE, FLOAT, BLOB, CLOB y NCLOB

  • Los registros con valores nulos no se replican.

Especificación de segmentos de tabla, vista o recopilación 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 columnas como el límite superior, en orden, de cada segmento desde la parte inferior hasta el segmento de la tabla o vista next-to-top. 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, suponga que define tres matrices columna-valor para las columnas COL1 COL2 y COL3, tal y como se indica a continuación.

    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 la gestión de la migración de LOB para la tabla o vista seleccionada tal y como se indica a continuación:

    • limited: el modo de 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 de LOB completo depende del valor que defina para bulk-max-size del modo siguiente:

      • Modo de LOB completo estándar: cuando se establece bulk-max-size en cero, la instancia de replicación migra todos los LOB utilizando el modo de 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 de LOB completo de combinación: cuando se establece bulk-max-size en un valor distinto de cero, este modo de LOB completo utiliza una combinación de modo de LOB limitado y modo de 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 los LOB en 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 no cero en kilobytes, en función del mode, tal como se ha 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" } } ] }