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.
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 la
employee
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:
Temas
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_
) 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 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_
) 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 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)
-
Abra la consola de AWS DMS en https://console.aws.amazon.com/dms
. -
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
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á.
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
-
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. -
Cree el punto de enlace de Elastic Cluster y establezca las siguientes opciones:
-
En Configuración de terminales, seleccione Agregar nuevo certificado de CA.
-
En Identificador de certificado, introduzca
SFSRootCAG2.pem
. -
En Importar archivo de certificado, selecciona Elegir archivo y, a continuación, navega hasta el
SFSRootCAG2.pem
archivo que descargaste anteriormente. -
Selecciona y abre el
SFSRootCAG2.pem
archivo descargado. -
Seleccione Import certificate.
-
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_LOAD
No 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). |