Uso de Amazon DocumentDB como destino delAWS 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 DocumentDB como destino delAWS Database Migration Service

Puede utilizarlosAWS DMS para migrar datos a Amazon DocumentDB (compatible con MongoDB) desde cualquiera de los motores de datos de origenAWS DMS compatibles. El motor de origen puede estar en un servicioAWS administrado, como Amazon RDS, Aurora o Amazon S3. O bien, el motor puede estar en una base de datos autogestionada, como MongoDB

Puede utilizarlosAWS DMS para replicar datos de origen en bases de datos, colecciones o documentos de Amazon DocumentDB.

nota

Si el punto final de origen es MongoDB o Amazon DocumentDB, ejecute la migración en modo Documento.

MongoDB almacena los datos en formato JSON binario (BSON). AWS DMSadmite Amazon DocumentDB Para obtener una lista de estos tipos de datos, consulte las API, operaciones y tipos de datos de MongoDB compatibles en la Guía para desarrolladores de Amazon DocumentDB.

Si el extremo de origen es una base de datos relacional,AWS DMS asigna los objetos de la base de datos a Amazon DocumentDB de la siguiente manera:

  • Una base de datos relacional, o esquema de base de datos, se asigna a una base de datos de Amazon DocumentDB.

  • Las tablas de una base de datos relacional se asignan a las colecciones de Amazon DocumentDB.

  • Los registros de una tabla relacional se asignan a los documentos de Amazon DocumentDB. Cada documento se crea a partir de los datos del registro de origen.

Si el punto final de origen es Amazon S3, los objetos de Amazon DocumentDB resultantes corresponden a las reglas deAWS DMS mapeo de Amazon S3. Considere, por ejemplo, el siguiente URI.

s3://mybucket/hr/employee

En este caso,AWS DMS asigna los objetosmybucket a Amazon DocumentDB de la siguiente manera:

  • La parte URI de nivel superior (hr) se asigna a una base de datos de Amazon DocumentDB.

  • La siguiente parte de URI (employee) se asigna a una colección de Amazon DocumentDB.

  • Cada objeto de laemployee lista se asigna a un documento de Amazon DocumentDB.

Para obtener más información acerca de las reglas de mapeo de Amazon S3Uso de Amazon S3 como origen deAWS DMS

Para obtener más información sobre cómo trabajar con Amazon DocumentDB como destinoAWS DMS, consulte las siguientes secciones:

nota

Para ver un step-by-step recorrido por el proceso de migración, consulte Migración de MongoDB a Amazon DocumentDB en la guía de migraciónAWS Database Migration Service paso a paso.

Mapeo de datos de una fuente a un destino de Amazon DocumentDB

AWS DMS lee los registros del punto de enlace de origen y crea documentos JSON en función de los datos que lee. Para cada documento JSON, AWS DMS debe determinar un campo _id que actúe como un identificador único. A continuación, escribe el documento JSON en una colección de Amazon DocumentDB, utilizando el_id campo como clave principal.

Datos de origen que están en una sola columna

Si los datos de origen constan de una única columna, deben ser del tipo cadena. (Según el motor de origen, el tipo de datos real puede ser VARCHAR, NVARCHAR, TEXT, LOB, CLOB o similar). AWS DMSasume que los datos son un documento JSON válido y los replica en Amazon DocumentDB tal como están.

Si el documento JSON resultante contiene un campo denominado_id, ese campo se utiliza como único_id en Amazon DocumentDB.

Si el JSON no contiene ningún_id campo, Amazon DocumentDB genera un_id valor automáticamente.

Datos de origen que están en varias columnas

Si los datos de origen constan de varias columnas, AWS DMS crea un documento JSON a partir de todas estas columnas. Para determinar el campo _id del documento, AWS DMS procede de la siguiente manera:

  • Si una de las columnas se llama _id, los datos de esa columna se utilizan como el _id de destino.

  • Si no hay ninguna columna _id, pero los datos de origen tienen una clave principal o un índice único, AWS DMS utiliza el valor de esa clave o índice como el valor de _id. Los datos de la clave principal o el índice único también aparecen como campos explícitos en el documento JSON.

  • Si no hay ninguna_id columna, ni una clave principal ni un índice único, Amazon DocumentDB genera un_id valor automáticamente.

Forzar un tipo de datos en el punto de enlace de destino

AWS DMSpuede modificar las estructuras de datos cuando escribe en un extremo de destino de Amazon DocumentDB. Puede solicitar estos cambios modificando los nombres de las columnas y las tablas en el punto de enlace de origen o proporcionando reglas de transformación que se apliquen cuando se ejecute una tarea.

Uso de un documento JSON anidado (json_ prefix)

Para forzar un tipo de datos, puede incluir el prefijo json_ en el nombre de la columna de origen (por ejemplo, json_columnName) manualmente o mediante una transformación. En este caso, la columna se crea como un documento JSON anidado dentro del documento de destino, en lugar de como un campo de cadena.

Suponga, por ejemplo, que desea migrar el siguiente documento desde un punto de enlace de origen de MongoDB.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}" }

Si no fuerza ningún tipo de datos de origen, el documento ContactDetails incrustado se migra como una cadena.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}" }

Sin embargo, puede añadir una regla de transformación para obligar a que ContactDetails sea un objeto JSON. Suponga, por ejemplo, que el nombre original de la columna de origen es ContactDetails. Para forzar el tipo de datos a JSON anidado, la columna del extremo de origen debe cambiarse el nombre a json_ContactDetails», ya sea añadiendo el prefijo «*json_*» en la fuente de forma manual o mediante reglas de transformación. Por ejemplo, puede utilizar la siguiente regla de transformación:

{ "rules": [ { "rule-type": "transformation", "rule-id": "1", "rule-name": "1", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "ContactDetails" }, "rule-action": "rename", "value": "json_ContactDetails", "old-value": null } ] }

AWS DMSreplica el ContactDetails campo como JSON anidado, de la siguiente manera.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": { "Home": { "Address": "Boston", "Phone": "1111111111" }, "Work": { "Address": "Boston", "Phone": "2222222222" } } }

Uso de una matriz JSON (array_ prefix)

Para forzar un tipo de datos, puede incluir el prefijo array_ en el nombre de la columna (por ejemplo, array_columnName) manualmente o mediante una transformación. En este caso, AWS DMS considera la columna como una matriz JSON y la crea como tal en el documento de destino.

Suponga que desea migrar el siguiente documento desde un punto de enlace de origen de MongoDB.

{ "_id" : "1", "FirstName": "John", "LastName": "Doe",
 "ContactAddresses": ["Boston", "New York"],
 "ContactPhoneNumbers": ["1111111111", "2222222222"] }

Si no fuerza ningún tipo de datos de origen, el documento ContactDetails incrustado se migra como una cadena.

{ "_id": "1", "FirstName": "John", "LastName": "Doe",
 "ContactAddresses": "[\"Boston\", \"New York\"]",
 "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]"
 }

Sin embargo, puede añadir reglas de transformación para imponer el tipo de datos de matriz JSON a ContactAddress y ContactPhoneNumbers, tal y como se muestra en la siguiente tabla.

Nombre original de la columna de origen Nuevo nombre de la columna de origen
ContactAddress array_ContactAddress
ContactPhoneNumbers array_ContactPhoneNumbers

AWS DMS replica ContactAddress y ContactPhoneNumbers de la manera siguiente.

{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] }

Conexión a Amazon DocumentDB mediante TLS

De forma predeterminada, los clústeres de DocumentDB Cuando TLS está habilitado, todas las conexiones a Amazon DocumentDB requieren una clave pública.

Puede recuperar la clave pública de Amazon DocumentDB descargando el archivo desde un bucketAWS de Amazon S3 alojado en él.rds-combined-ca-bundle.pem Para obtener más información sobre la descarga de este archivo, consulte Cifrar conexiones mediante TLS en la Guía para desarrolladores de Amazon DocumentDB

Después de descargar este archivo .pem, puede importar la clave pública que contiene en AWS DMS como se describe a continuación.

AWS Management Console

Para importar el archivo de clave pública (.pem)
  1. Abra la consola de AWS DMS en https://console.aws.amazon.com/dms.

  2. En el panel de navegación, elija Certificates.

  3. Elija Import certificate (Importar certificado) y haga lo siguiente:

    • En Certificate identifier (Identificador del certificado), escriba un nombre único para el certificado (por ejemplo docdb-cert).

    • En Import file (Archivo de importación), desplácese hasta la ubicación en la que guardó el archivo .pem.

    Cuando los ajustes sean los deseados, elija Add new CA certificate (Añadir nuevo certificado de CA).

AWS CLI

Utilice el comando aws dms import-certificate, tal y como se muestra en el ejemplo siguiente.

aws dms import-certificate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem

Cuando cree un punto de enlace de destino de AWS DMS, proporcione el identificador de certificado (por ejemplo, docdb-cert). A continuación, establezca el parámetro de modo de SSL en verify-full.

Amazon DocumentDB

EnAWS DMS las versiones 3.4.7 y posteriores, puede crear un punto final de destino de Amazon DocumentDB como Elastic Cluster. Si crea su punto de enlace de destino como Elastic Cluster, debe adjuntar un nuevo certificado SSL a su punto de enlace de Amazon DocumentDB Elastic Cluster porque el certificado SSL existente no funcionará.

nota

Con Amazon DocumentDB Elastic Clusters como destino, actualmente no se admite la migración de colecciones fragmentadas.

Para adjuntar un nuevo certificado SSL a su terminal de Amazon DocumentDB Elastic Cluster
  1. En un navegador, abra https://www.amazontrust.com/repository/SFSRootCAG2.pem y guarde el contenido en un.pem archivo con un nombre de archivo único, por ejemploSFSRootCAG2.pem. Este es el archivo de certificado que debe importar en los pasos siguientes.

  2. Cree el punto de enlace de Elastic Cluster y establezca las siguientes opciones:

    1. En Configuración de terminales, seleccione Agregar nuevo certificado de CA.

    2. En Identificador de certificado, introduzcaSFSRootCAG2.pem.

    3. En Importar archivo de certificado, selecciona Elegir archivo y, a continuación, navega hasta elSFSRootCAG2.pem archivo que descargaste anteriormente.

    4. Selecciona y abre elSFSRootCAG2.pem archivo descargado.

    5. Seleccione Import certificate.

    6. En el menú desplegable Elija un certificado, elija SFSRootCAG2.pem.

El nuevo certificado SSL delSFSRootCAG2.pem archivo descargado ahora está adjunto a su punto de enlace de Amazon DocumentDB Elastic Cluster.

Replicación continua con Amazon DocumentDB como destino

Si la replicación continua está habilitada,AWS DMS garantiza que los documentos de Amazon DocumentDB permanezcan sincronizados con la fuente. Al crear o actualizar un registro fuente, primeroAWS DMS debe determinar qué registro de Amazon DocumentDB está afectado de la siguiente manera:

  • Si el registro de origen tiene una columna denominada_id, el valor de esa columna determina la correspondiente_id en la colección Amazon DocumentDB.

  • Si no hay ninguna_id columna, pero los datos de origen tienen una clave principal o un índice único,AWS DMS utiliza esa clave o valor de índice como el_id de la colección Amazon DocumentDB.

  • Si el registro de origen no tiene una_id columna, una clave principal o un índice único, haceAWS DMS coincidir todas las columnas de origen con los campos correspondientes de la colección Amazon DocumentDB.

Cuando se crea un nuevo registro fuente,AWS DMS escribe el documento correspondiente en Amazon DocumentDB. Si se actualiza un registro fuente existente,AWS DMS actualiza los campos correspondientes del documento de destino en Amazon DocumentDB. Los campos que existen en el documento de destino pero no en el registro de origen se mantienen tal cual están.

Cuando se elimina un registro de origen,AWS DMS elimina el documento correspondiente de Amazon DocumentDB.

Cambios estructurales (DDL) en el origen

Con la replicación continua, cualquier cambio en las estructuras de datos de origen (como tablas, columnas, etc.) se propaga a sus homólogos de Amazon DocumentDB. En las bases de datos relacionales, estos cambios se inician con instrucciones del lenguaje de definición de datos (DDL). Puede ver cómoAWS DMS se propagan estos cambios a Amazon DocumentDB en la siguiente tabla.

DDL en el origen Efecto en el objetivo de Amazon DocumentDB
CREATE TABLE Crea una colección vacía.
Instrucción que cambia el nombre de una tabla (RENAME TABLE, ALTER TABLE...RENAME y similar) Cambia el nombre de la colección.
TRUNCATE TABLE Elimina todos los documentos de la colección, pero solo si HandleSourceTableTruncated es true. Para obtener más información, consulte Configuración de tareas para la administración de DDL del procesamiento de cambios.
DROP TABLE Elimina la colección, pero solo si HandleSourceTableDropped es true. Para obtener más información, consulte Configuración de tareas para la administración de DDL del procesamiento de cambios.
Instrucción que añade una columna a una tabla (ALTER TABLE...ADD y similar) La instrucción DDL se omite y se envía una advertencia. Cuando se ejecuta la primera instrucción INSERT en el origen, se añade el nuevo campo al documento de destino.
ALTER TABLE...RENAME COLUMN La instrucción DDL se omite y se envía una advertencia. Cuando se ejecuta la primera instrucción INSERT en el origen, el campo con el nuevo nombre se añade al documento de destino.
ALTER TABLE...DROP COLUMN La instrucción DDL se omite y se envía una advertencia.
Instrucción que cambia el tipo de datos de las columnas (ALTER COLUMN...MODIFY y similar) La instrucción DDL se omite y se envía una advertencia. Cuando se ejecuta la primera instrucción INSERT en el origen con el nuevo tipo de datos, se crea el documento de destino con un campo de ese nuevo tipo de datos.

Limitaciones del uso de Amazon DocumentDB como destino

Se aplican las siguientes limitaciones cuando se utiliza Amazon DocumentDB como destino paraAWS DMS:

  • Con Amazon DocumentDB Elastic Clusters como destino, actualmente no se admite la migración de colecciones fragmentadas.

  • En Amazon DocumentDB, los nombres de las colecciones no pueden contener el símbolo de dólar ($). Además, los nombres de las bases de datos no pueden contener caracteres Unicode.

  • AWS DMSno admite la fusión de varias tablas de origen en una única colección de Amazon DocumentDB.

  • Cuando AWS DMS procesa los cambios de una tabla de origen que no dispone de una clave principal, las columnas LOB de esa tabla se omiten.

  • Si la opción Change table (Tabla de cambios) está habilitada y AWS DMS encuentra una columna de origen llamada "_id", esa columna aparece como "__id" (con dos caracteres de subrayado) en la tabla de cambios.

  • Si elige Oracle como punto de enlace de origen, el origen de Oracle debe tener el registro suplementario completo habilitado. De lo contrario, si hay columnas en la fuente que no se han modificado, los datos se cargan en Amazon DocumentDB como valores nulos.

  • TargetTablePrepMode:TRUNCATE_BEFORE_LOADNo se admite el uso de la configuración de la tarea de replicación con un punto de enlace de destino de DocumentDB.

Tipos de datos de destino para Amazon DocumentDB

En la siguiente tabla, puede encontrar los tipos de datos de destino de Amazon DocumentDB que se admiten cuando se utiliza elAWS DMS y el mapeo predeterminado de los tipos de datos deAWS DMS. Para obtener más información sobre los tipos de datos deAWS DMS, consulteTipos de datos para elAWS Database Migration Service.

AWSTipo de datos de DMS

Amazon DocumentDB

BOOLEANO

Booleano

BYTES

Datos binarios

DATE

Fecha

TIME

Cadena (UTF8)

DATETIME

Fecha

INT1

Entero de 32 bits

INT2

Entero de 32 bits

INT4

Entero de 32 bits

INT8

Entero de 64 bits

NUMERIC

Cadena (UTF8)

REAL4

Doble

REAL8

Doble

STRING

Si los datos se reconocen como JSON,AWS DMS los migra a Amazon DocumentDB como documento. De lo contrario, los datos se corresponden con una cadena (UTF8).

UINT1

Entero de 32 bits

UINT2

Entero de 32 bits

UINT4

Entero de 64 bits

UINT8

Cadena (UTF8)

WSTRING

Si los datos se reconocen como JSON,AWS DMS los migra a Amazon DocumentDB como documento. De lo contrario, los datos se corresponden con una cadena (UTF8).

BLOB

Binario

CLOB

Si los datos se reconocen como JSON,AWS DMS los migra a Amazon DocumentDB como documento. De lo contrario, los datos se corresponden con una cadena (UTF8).

NCLOB

Si los datos se reconocen como JSON,AWS DMS los migra a Amazon DocumentDB como documento. De lo contrario, los datos se corresponden con una cadena (UTF8).