Uso de Amazon Timestream como destino para AWS Database Migration Service - 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.

Uso de Amazon Timestream como destino para AWS Database Migration Service

Puede utilizar AWS Database Migration Service para migrar datos de su base de datos de origen a un punto de conexión de destino de Amazon Timestream, con soporte para migraciones de datos de carga completa y CDC.

Amazon Timestream es un servicio de base de datos de series temporales rápido, escalable y sin servidor creado para la ingesta de datos de gran volumen. Los datos de series temporales son una secuencia de puntos de datos recopilados durante un intervalo de tiempo y se utilizan para medir eventos que cambian con el tiempo. Se utiliza para recopilar, almacenar y analizar métricas de aplicaciones de IoT, DevOps aplicaciones y aplicaciones de análisis. Una vez que tenga los datos en Timestream, podrá visualizar e identificar las tendencias y los patrones de los datos prácticamente en tiempo real. Para obtener más información sobre Amazon Timestream, consulte ¿Qué es Amazon Timestream? en la Guía para desarrolladores de Amazon Timestream.

Requisitos previos para el uso de Amazon Timestream como destino para AWS Database Migration Service

Antes de configurar Amazon Timestream como destino para AWS DMS, asegúrese de crear un rol de IAM. Este rol debe permitir que AWS DMS acceda a los datos que se migran a Amazon Timestream. En la siguiente política de IAM se muestra el conjunto mínimo de permisos de acceso para el rol que utilice para migrar a Timestream.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeEndpoints", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*" }, { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "timestream:ListTables", "timestream:DescribeDatabase" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "timestream:DeleteTable", "timestream:WriteRecords", "timestream:UpdateTable", "timestream:CreateTable" ], "Resource": "arn:aws:timestream:region:account_id:database/DATABASE_NAME/table/TABLE_NAME" } ] }

Si tiene intención de migrar todas las tablas, utilice * para TABLE_NAME en el ejemplo anterior.

Tenga en cuenta lo siguiente acerca del uso de Timestream como destino:

  • Si tiene intención de ingerir datos históricos con marcas de tiempo de más de 1 año, le recomendamos que utilice AWS DMS para escribir los datos en Amazon S3 en un formato de valores separados por comas (csv). A continuación, utilice la carga por lotes de Timestream para ingerir los datos a Timestream. Para obtener más información, consulte Uso de la carga por lotes en Timestream en la Guía para desarrolladores de Amazon Timestream.

  • Para migraciones de datos de carga completa de datos con menos de 1 año de antigüedad, recomendamos establecer el período de retención en el almacén en memoria de la tabla de Timestream superior o igual a la marca de tiempo más antigua. A continuación, una vez finalizada la migración, edite la retención del almacén en memoria de la tabla con el valor deseado. Por ejemplo, para migrar datos cuya marca de tiempo más antigua tenga 2 meses de antigüedad, haga lo siguiente:

    • Establezca la retención del almacén en memoria de la tabla de destino de Timestream en 2 meses.

    • Inicie la migración de datos utilizando AWS DMS.

    • Una vez que se complete la migración de datos, cambie el período de retención de la tabla de Timestream de destino al valor deseado.

    Recomendamos estimar el costo del almacén en memoria antes de la migración utilizando la información de las siguientes páginas:

  • Para las migraciones de datos de CDC, recomendamos configurar el período de retención en el almacén en memoria de la tabla de destino de manera que los datos ingeridos se encuentren dentro de los límites de retención del almacén en memoria. Para obtener más información, consulte Prácticas recomendadas de escritura en la Guía para desarrolladores de Amazon Timestream.

Configuración de tareas de carga completa con varios subprocesos

Para ayudar a aumentar la velocidad de transferencia de datos, AWS DMS admite una tarea de migración de carga completa de varios subprocesos en un punto de conexión de destino de Timestream con la siguiente configuración de tareas:

  • MaxFullLoadSubTasks: utilice esta opción para indicar el número máximo de tablas de origen que se pueden cargar en paralelo. DMS carga cada tabla en su tabla de destino de Amazon Timestream correspondiente mediante una tarea secundaria dedicada. El valor predeterminado es 8, el valor máximo es 49.

  • ParallelLoadThreads: utilice esta opción para especificar el número de procesos que AWS DMS utiliza para cargar cada tabla en la tabla de destino de Amazon Timestream. El valor máximo para un destino de Amazon Timestream es de 32. Puede pedir que se incremente este límite máximo.

  • ParallelLoadBufferSize: utilice esta opción para especificar el número máximo de registros para almacenar en el búfer que los subprocesos de carga en paralelo utilizan para cargar datos en el destino de Amazon Timestream. El valor predeterminado es 50. El valor máximo es 1000. Utilice este parámetro con ParallelLoadThreads. ParallelLoadBufferSize es válido solo cuando hay más de un subproceso.

  • ParallelLoadQueuesPerThread: utilice esta opción para especificar el número de colas que acceden a cada subproceso simultáneo para eliminar los registros de datos de las colas y generar una carga por lotes para el destino. El valor predeterminado de es 1. Sin embargo, para los destinos de Amazon Timestream de varios tamaños de carga, el intervalo válido es de 5-512 colas por subproceso.

Configuración de tareas de carga de CDC con varios subprocesos

Para aumentar el rendimiento de CDC, AWS DMS admite esta configuración de las tareas:

  • ParallelApplyThreads: especifica el número de subprocesos simultáneos que AWS DMS utiliza durante una carga de CDC para insertar registros de datos en un punto de conexión de destino de Timestream. El valor predeterminado es 1 y el máximo es 32.

  • ParallelApplyBufferSize: especifica el número máximo de registros que se almacenan en cada cola del búfer para los subprocesos simultáneos que insertan datos en un punto de conexión de destino de Timestream durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuando ParallelApplyThreads especifique más de un subproceso.

  • ParallelApplyQueuesPerThread: especifica el número de colas a las que accede cada subproceso para sacar registros de datos de las colas y generar una carga por lotes para un punto de conexión de Timestream durante el proceso de CDC. El valor predeterminado es 1 y el máximo es 512.

Configuración de puntos de enlace al utilizar como destino para AWS DMS

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Timestream de forma similar al uso de atributos de conexión adicionales. Se especifican los ajustes cuando se crea el punto de conexión de destino mediante la consola de AWS DMS o mediante el comando create-endpoint en la AWS CLI, con la sintaxis JSON --timestream-settings '{"EndpointSetting": "value", ...}'.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Timestream como destino.

Nombre Descripción

MemoryDuration

Establezca este atributo para especificar el límite de retención para almacenar los datos migrados en el almacén en memoria de Timestream. El tiempo se mide en unidades de horas. El almacén en memoria de Timestream está optimizado para ofrecer un alto rendimiento de ingesta y un acceso rápido.

Valor predeterminado: 24 (horas)

Valores válidos: de 1 a 8736 (de 1 hora a 12 meses medidos en horas)

Ejemplo: --timestream-settings '{"MemoryDuration": 20}'

DatabaseName

Establezca este atributo para especificar el nombre de la base de datos de Timestream de destino.

Tipo: cadena

Ejemplo: --timestream-settings '{"DatabaseName": "db_name"}'

TableName

Establezca este atributo para especificar el nombre de la tabla de Timestream de destino.

Tipo: cadena

Ejemplo: --timestream-settings '{"TableName": "table_name"}'

MagneticDuration

Establezca este atributo para especificar la duración magnética aplicada a las tablas de Timestream en días. Este es el límite de retención de los datos ingeridos. Timestream elimina cualquier marca de tiempo que supere el límite de retención. Para obtener más información, consulte Almacenamiento en la Guía para desarrolladores de Amazon Timestream.

Ejemplo: --timestream-settings '{"MagneticDuration": "3"}'

CdcInsertsAndUpdates

Establezca este atributo en true para especificar que AWS DMS solo aplica inserciones y actualizaciones, no eliminaciones. Timestream no permite eliminar registros, por lo que si este valor es false, AWS DMS anula el registro correspondiente de la base de datos de Timestream en lugar de eliminarlo. Para obtener más información, consulte Limitaciones  a continuación.

Valor predeterminado: false

Ejemplo: --timestream-settings '{"CdcInsertsAndUpdates": "true"}'

EnableMagneticStoreWrites

Establezca este atributo en true para habilitar las escrituras en el almacén magnético. Cuando este valor es false, AWS DMS no escribe registros con una marca de tiempo anterior al período de retención en el almacén en memoria de la tabla de destino, ya que Timestream no permite la escritura en almacén magnético de forma predeterminada. Para obtener más información, consulte Prácticas recomendadas de escritura en la Guía para desarrolladores de Amazon Timestream.

Valor predeterminado: false

Ejemplo: --timestream-settings '{"EnableMagneticStoreWrites": "true"}'

Creación y modificación de un punto de conexión de destino de Amazon Timestream

Una vez que haya creado un rol de IAM y establecido el conjunto mínimo de permisos de acceso, podrá crear un punto de conexión de destino de Amazon Timestream mediante la consola de AWS DMS o con el comando create-endpoint en la AWS CLI, con la sintaxis JSON --timestream-settings '{"EndpointSetting": "value", ...}'.

En los siguientes ejemplos se muestra cómo crear y modificar un punto de conexión de destino de Timestream con la AWS CLI.

Crear comando de punto de conexión de destino de Timestream

aws dms create-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "DatabaseName":"db_name", "MagneticDuration": 3, "CdcInsertsAndUpdates": true, "EnableMagneticStoreWrites": true, }

Modificar el comando de punto de conexión de destino de Timestream

aws dms modify-endpoint —endpoint-identifier timestream-target-demo --endpoint-type target —engine-name timestream --service-access-role-arn arn:aws:iam::123456789012:role/my-role --timestream-settings { "MemoryDuration": 20, "MagneticDuration": 3, }

Uso de la asignación de objetos para migrar datos a un tema de Timestream

AWS DMS usa reglas de asignación de tablas para asignar datos del origen al tema de Timestream de destino. Para asignar datos a un tema de destino, se utiliza un tipo de regla de asignación de tablas denominado asignación de objetos. Puede utilizar el mapeo de objetos para definir cómo los registros de datos del origen se asignan a los registros de datos publicados en un tema de Timestream.

Los temas de Timestream no tienen una estructura predeterminada distinta de una clave de partición.

nota

No tiene que utilizar la asignación de objetos. Puede utilizar la asignación de tablas normal para varias transformaciones. Sin embargo, el tipo de clave de partición seguirá estos comportamientos predeterminados:

  • La clave principal se usa como clave de partición para la carga completa.

  • Si no se utiliza ninguna configuración de tareas de aplicación paralela, schema.table se utiliza como clave de partición para CDC.

  • Si se utiliza la configuración de tareas de aplicación paralela, la clave principal se utiliza como clave de partición para CDC.

Para crear una regla de mapeo de objetos, se especifica rule-type como object-mapping. Esta regla indica el tipo de mapeo de objetos que desea utilizar. La estructura de la regla es la siguiente.

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "id", "rule-name": "name", "rule-action": "valid object-mapping rule action", "object-locator": { "schema-name": "case-sensitive schema name", "table-name": "" } } ] }

{ "rules": [ { "rule-type": "object-mapping", "rule-id": "1", "rule-name": "timestream-map", "rule-action": "map-record-to-record", "target-table-name": "tablename", "object-locator": { "schema-name": "", "table-name": "" }, "mapping-parameters": { "timestream-dimensions": [ "column_name1", "column_name2" ], "timestream-timestamp-name": "time_column_name", "timestream-multi-measure-name": "column_name1or2", "timestream-hash-measure-name": true or false, "timestream-memory-duration": x, "timestream-magnetic-duration": y } } ] }

AWS DMS actualmente admite map-record-to-record y map-record-to-document como únicos valores válidos para el parámetro rule-action. Los valores de map-record-to-record y map-record-to-document especifican qué hace AWS DMS de forma predeterminada con los registros que no se excluyen como parte de la lista de atributos exclude-columns. Estos valores no afectan a los mapeos de atributos en modo alguno.

Utilice map-record-to-record al migrar desde una base de datos relacional a un tema de Timestream. Este tipo de regla utiliza el valor taskResourceId.schemaName.tableName de la base de datos relacional como la clave de partición en el tema de Timestream y crea un atributo para cada columna de la base de datos de origen. Cuando se utiliza map-record-to-record, para cada columna de la tabla de origen que no figura en la lista de atributos de exclude-columns, AWS DMS crea un atributo correspondiente en la tema de destino. Este atributo se crea independientemente de si dicha columna de origen se utiliza en un mapeo de atributos.

Una forma de entender map-record-to-record es verlo en acción. En este ejemplo, imagine que empieza con una fila de una tabla de base de datos relacional con la estructura y los datos siguientes.

FirstName LastName StoreId HomeAddress HomePhone WorkAddress WorkPhone DateofBirth

Randy

Marsh

5

221B Baker Street

1234567890

31 Spooner Street, Quahog

9876543210

02/29/1988

Para migrar esta información desde un esquema denominado Test a un tema de Timestream, cree reglas para mapear los datos al tema. La siguiente regla ilustra la operación de asignación.

{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "rule-action": "include", "object-locator": { "schema-name": "Test", "table-name": "%" } }, { "rule-type": "object-mapping", "rule-id": "2", "rule-name": "DefaultMapToTimestream", "rule-action": "map-record-to-record", "object-locator": { "schema-name": "Test", "table-name": "Customers" } } ] }

Dados un tema de Timestream y una clave de partición (en este caso, taskResourceId.schemaName.tableName), a continuación se ilustra el formato de registro resultante al usar nuestros datos de ejemplo en el tema de destino de Timestream:

{ "FirstName": "Randy", "LastName": "Marsh", "StoreId": "5", "HomeAddress": "221B Baker Street", "HomePhone": "1234567890", "WorkAddress": "31 Spooner Street, Quahog", "WorkPhone": "9876543210", "DateOfBirth": "02/29/1988" }

Restricciones al usar Amazon Timestream como destino para AWS Database Migration Service

Al utilizar Amazon Timestream como destino se aplican las siguientes restricciones:

  • Dimensiones y marcas de tiempo: Timestream utiliza las dimensiones y las marcas de tiempo de los datos de origen como una clave primaria compuesta, y no permite actualizar estos valores. Esto significa que si cambia la marca de tiempo o las dimensiones de un registro en la base de datos de origen, la base de datos de Timestream intentará crear un registro nuevo. Por lo tanto, si cambia la dimensión o la marca de tiempo de un registro para que coincidan con las de otro registro existente, AWS DMS actualiza los valores del otro registro en lugar de crear un registro nuevo o actualizar el registro anterior correspondiente.

  • Comandos DDL: la versión actual de AWS DMS solo admite comandos DDL CREATE TABLE y DROP TABLE.

  • Limitaciones de registro: Timestream tiene limitaciones para los registros, como el tamaño del registro y el tamaño de la medida. Para obtener más información, consulte Cuotas en la Guía para desarrolladores de Amazon Timestream.

  • Eliminar registros y valores nulos: Timestream no admite la eliminación de registros. Para permitir la migración de registros eliminados del origen, AWS DMS borra los campos correspondientes de los registros de la base de datos de destino de Timestream. AWS DMS cambia los valores de los campos del registro de destino correspondiente con 0 para los campos numéricos, null para los campos de texto y false para los campos booleanos.

  • Timestream como destino no admite orígenes que no sean bases de datos relacionales (RDBMS).

  • AWS DMS solo admite Timestream como destino en las siguientes regiones:

    • Este de EE. UU. (Norte de Virginia)

    • Este de EE. UU. (Ohio)

    • Oeste de EE. UU. (Oregón)

    • Europa (Irlanda)

    • Europa (Fráncfort)

    • Asia-Pacífico (Sídney)

    • Asia-Pacífico (Tokio)

  • Timestream como destino no admite la configuración de TargetTablePrepMode para TRUNCATE_BEFORE_LOAD. Le recomendamos que utilice DROP_AND_CREATE para esta configuración.