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 para AWS Database Migration Service
Para obtener información sobre las versiones de Amazon DocumentDB (compatibles con MongoDB) compatibles, consulte. AWS DMS Objetivos para AWS DMS Puede usar AWS DMS para migrar datos a Amazon DocumentDB (con compatibilidad con MongoDB) desde cualquiera de los motores de datos de origen compatibles con AWS DMS . El motor de origen puede estar en un servicio AWS gestionado como Amazon RDS, Aurora o Amazon S3. O bien, el motor puede estar en una base de datos autogestionada, como MongoDB que se ejecuta en EC2 Amazon o de forma local.
Puede utilizarlos AWS DMS para replicar los datos de origen en bases de datos, colecciones o documentos de Amazon DocumentDB.
nota
Si el punto de conexión de origen es MongoDB o Amazon DocumentDB, ejecute la migración en modo documento.
MongoDB almacena los datos en un formato JSON binario (BSON). AWS DMS admite todos los tipos de datos BSON compatibles con Amazon DocumentDB. Para obtener una lista de estos tipos de datos, consulte APIsMongoDB, operaciones y tipos de datos compatibles en la Guía para desarrolladores de Amazon DocumentDB.
Si el punto final 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 un esquema de base de datos, se asigna una base de datos de Amazon DocumentDB.
-
Las tablas de una base de datos relacional se corresponden con recopilaciones en Amazon DocumentDB.
-
Los registros de una tabla relacional se asignan a documentos en Amazon DocumentDB. Cada documento se crea a partir de los datos del registro de origen.
Si el punto de conexión de origen es Amazon S3, los objetos de Amazon DocumentDB resultantes se corresponden con reglas de asignación de AWS DMS para Amazon S3. Considere, por ejemplo, el siguiente URI.
s3://mybucket/hr/employee
En este caso, AWS DMS asigne los objetos mybucket
a Amazon DocumentDB de la siguiente manera:
-
La parte del URI del nivel superior (
hr
) se asigna a una base de datos de Amazon DocumentDB. -
La parte del URI siguiente (
employee
) se asigna a una recopilación de Amazon DocumentDB. -
Cada objeto en
employee
asigna un documento de Amazon DocumentDB.
Para obtener más información sobre las reglas de asignación de Amazon S3, consulte Uso de Amazon S3 como fuente de AWS DMS.
Configuración del punto de conexión de Amazon DocumentDB
En AWS DMS las versiones 3.5.0 y posteriores, puede mejorar el rendimiento de la captura de datos de cambios (CDC) para los puntos de enlace de Amazon DocumentDB ajustando la configuración de las tareas para los subprocesos paralelos y las operaciones masivas. Para ello, puede especificar el número de subprocesos simultáneos, las colas por subproceso y el número de registros que se van a almacenar en un búfer mediante la configuración de tareas ParallelApply*
. Suponga, por ejemplo, que desea realizar una carga de CDC y aplicar 128 subprocesos en paralelo. También desea acceder a 64 colas por subproceso, con 50 registros almacenados por búfer.
Para promover el desempeño de los CDC, AWS DMS es compatible con las siguientes configuraciones de tareas:
-
ParallelApplyThreads
— Especifica el número de subprocesos simultáneos que se AWS DMS utilizan durante una carga de CDC para enviar registros de datos a un punto final de destino de Amazon DocumentDB. El valor predeterminado es cero (0) y el valor 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 Amazon DocumentDB durante una carga de CDC. El valor predeterminado es 100 y el máximo es 1000. Utilice esta opción cuandoParallelApplyThreads
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 Amazon DocumentDB durante el proceso de CDC. El valor predeterminado de es 1. El máximo es 512.
Para obtener información adicional sobre cómo trabajar con Amazon DocumentDB como destino AWS DMS, consulte las siguientes secciones:
Temas
nota
Para obtener información step-by-step detallada sobre el proceso de migración, consulte Migración de MongoDB a Amazon DocumentDB en la Guía de migración. AWS Database Migration Service Step-by-Step
Asignación de datos desde un origen a un destino de Amazon DocumentDB
AWS DMS lee los registros del punto final de origen y crea documentos JSON en función de los datos que lee. Para cada documento JSON, AWS DMS debe determinar un _id
campo que actúe como identificador único. A continuación, escribe el documento JSON en una recopilación de Amazon DocumentDB, con el campo _id
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 DMS asume que los datos son un documento JSON válido y los replica en Amazon DocumentDB tal cual.
Si el documento JSON resultante contiene un campo llamado _id
, entonces se utiliza ese campo como el _id
único en Amazon DocumentDB.
Si JSON no contiene un campo _id
, Amazon DocumentDB genera un valor de _id
automáticamente.
Datos de origen que están en varias columnas
Si los datos de origen constan de varias columnas, crea un documento JSON a partir de todas estas columnas. AWS DMS Para determinar el _id
campo del documento, AWS DMS proceda 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
_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_id
valor. 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 columna
_id
y tampoco hay una clave principal o un índice único, Amazon DocumentDB genera un valor de_id
automáticamente.
Forzar un tipo de datos en el punto de enlace de destino
AWS DMS puede modificar las estructuras de datos cuando escribe en un punto final 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_
) 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.columnName
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 utilizar el tipo de datos como JSON anidado, es necesario cambiar el nombre de la columna situada en el punto final de origen a «json_ContactDetails», ya sea añadiendo el prefijo «*json_*» a la fuente de forma manual o mediante reglas de transformación. Por ejemplo, puede usar 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 DMS replica el campo como JSON anidado, de la siguiente manera. ContactDetails
{ "_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_
) 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.columnName
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 se replica ContactAddress
y de la ContactPhoneNumbers
siguiente manera.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] }
Conexión a Amazon DocumentDB mediante TLS
De forma predeterminada, un clúster de Amazon DocumentDB recién creado solo acepta conexiones seguras mediante la seguridad de la capa de transporte (TLS). Cuando TLS está habilitado, cada conexión a Amazon DocumentDB requiere una clave pública.
Puede recuperar la clave pública de Amazon DocumentDB descargando el archivo desde un bucket de Amazon S3 AWS alojado. rds-combined-ca-bundle.pem
Para obtener más información acerca de la descarga de este archivo, consulte Cifrado de conexiones mediante TLS en la Guía para desarrolladores de Amazon DocumentDB
Tras descargar este archivo.pem, puede importar la clave pública que contiene tal y AWS DMS como se describe a continuación.
AWS Management Console
Para importar el archivo de clave pública (.pem)
-
Abra la AWS DMS consola en /dms. https://console.aws.amazon.com
-
En el panel de navegación, elija Certificates.
-
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
Al crear un punto final de AWS DMS destino, proporcione el identificador del certificado (por ejemplo,docdb-cert
). A continuación, establezca el parámetro de modo de SSL en verify-full
.
Conexión a los clústeres elásticos de Amazon DocumentDB como destino
En AWS DMS las versiones 3.4.7 y posteriores, puede crear un punto final de destino de Amazon DocumentDB como un clúster elástico. Si crea el punto de conexión de destino como un clúster elástico, debe adjuntar un certificado SSL nuevo al punto de conexión del clúster elástico de Amazon DocumentDB, ya que el certificado SSL existente no funcionará.
Asociación de un certificado SSL nuevo al punto de conexión del clúster elástico de Amazon DocumentDB
-
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 ejemplo.SFSRootCAG2.pem
Este es el archivo de certificado que debe importar en los pasos siguientes. -
Cree el punto de conexión del clúster elástico y establezca las siguientes opciones:
-
En Configuración del punto de conexión, elija Agregar un nuevo certificado de entidad de certificación.
-
En Identificador del certificado, escriba
SFSRootCAG2.pem
. -
Para Importar archivo de certificado, elija Elegir archivo, después acceda al archivo
SFSRootCAG2.pem
que descargó anteriormente. -
Seleccione y abra el archivo
SFSRootCAG2.pem
descargado. -
Seleccione Importar certificado.
-
En el menú desplegable Elegir un certificado, elija SFSRoot CAG2 .pem.
-
El nuevo certificado SSL del archivo SFSRootCAG2.pem
descargado ahora está adjunto al punto de conexión del clúster elástico de Amazon DocumentDB.
Replicación continua con Amazon DocumentDB como destino
Si la replicación continua (captura de datos de cambios, CDC) está habilitada para Amazon DocumentDB como objetivo, las versiones 3.5.0 y superiores de AWS DMS proporcionan una mejora del rendimiento veinte veces mayor que las versiones anteriores. En versiones anteriores, en AWS DMS las que se gestionaban hasta 250 registros por segundo, AWS DMS ahora se procesan de forma eficiente más de 5000 registros por segundo. AWS DMS también garantiza que los documentos de Amazon DocumentDB permanezcan sincronizados con la fuente. Al crear o actualizar un registro fuente, primero AWS DMS debe determinar qué registro de Amazon DocumentDB se ve afectado de la siguiente manera:
-
Si el registro de origen tiene una columna denominada
_id
, el valor de esa columna determina el_id
correspondiente en la recopilación de 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 de la_id
colección Amazon DocumentDB. -
Si el registro de origen no tiene una
_id
columna, una clave principal o un índice único, hace AWS DMS coincidir todas las columnas de origen con los campos correspondientes de la colección Amazon DocumentDB.
Cuando se crea un registro de origen nuevo, AWS DMS escribe el documento correspondiente en Amazon DocumentDB. Si se actualiza un registro de origen 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, todos los cambios realizados en las estructuras de datos de origen (como tablas, columnas, etc.) se propagan a los elementos correspondientes en 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ómo AWS 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 para usar Amazon DocumentDB como destino
Se aplican las siguientes limitaciones cuando se utiliza Amazon DocumentDB como destino para: AWS DMS
-
En Amazon DocumentDB, los nombres de las recopilaciones no pueden incluir el símbolo del dólar ($). Además, los nombres de las bases de datos no pueden contener caracteres Unicode.
-
AWS DMS no admite la fusión de varias tablas de origen en una única colección de Amazon DocumentDB.
-
Cuando AWS DMS los procesos cambian desde una tabla de origen que no tiene una clave principal, se ignoran todas las columnas LOB de esa tabla.
-
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 el origen que no han cambiado, los datos se cargan en Amazon DocumentDB como valores nulos.
-
La configuración de tareas de replicación,
TargetTablePrepMode:TRUNCATE_BEFORE_LOAD
no se admite para su uso con un punto de conexión de destino de DocumentDB.
Uso de la configuración de puntos de conexión con Amazon DocumentDB como destino
Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino de Amazon DocumentDB de forma similar al uso de atributos de conexión adicionales. Los ajustes se especifican al crear el punto final de destino mediante la AWS DMS consola o mediante el create-endpoint
comando de AWS CLI, con la sintaxis --doc-db-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con Amazon DocumentDB como destino.
Nombre de atributo | Valores válidos | Valor predeterminado y descripción |
---|---|---|
|
booleano
|
Cuando se establece en
|
Tipos de datos de destino de Amazon DocumentDB
En la siguiente tabla, puede encontrar los tipos de datos de destino de Amazon DocumentDB que se admiten cuando se utiliza AWS DMS y el mapeo predeterminado a partir de los tipos de datos de AWS DMS. Para obtener más información sobre los tipos de datos de AWS DMS, consulte. Tipos de datos de AWS Database Migration Service
AWS Tipo de datos DMS |
Tipo de datos de Amazon DocumentDB |
---|---|
BOOLEAN |
Booleano |
BYTES |
Datos binarios |
DATE |
Date |
TIME |
Cadena () UTF8 |
DATETIME |
Date |
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 un documento. De lo contrario, los datos se asignan a String (). 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 un documento. De lo contrario, los datos se asignan a String (). UTF8 |
BLOB |
Binario |
CLOB |
Si los datos se reconocen como JSON, AWS DMS los migra a Amazon DocumentDB como un documento. De lo contrario, los datos se asignan a String (). UTF8 |
NCLOB |
Si los datos se reconocen como JSON, AWS DMS los migra a Amazon DocumentDB como un documento. De lo contrario, los datos se asignan a String (). UTF8 |