

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.

# Evaluar el rendimiento de las consultas para migrar bases de datos de SQL Server a MongoDB Atlas en AWS
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws"></a>

*Battulga Purevragchaa, Amazon Web Services*

*Krishnakumar Sathyanarayana PeerIslands , US Inc*

*Babu Srinivasan, MongoDB*

## Resumen
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-summary"></a>

Este patrón proporciona una guía para cargar MongoDB con datos casi reales y evaluar el rendimiento de las consultas de MongoDB que sea lo más parecido posible al escenario de producción. La evaluación proporciona información para ayudar a planificar la migración a MongoDB desde una base de datos relacional. El patrón utiliza el [generador de datos de prueba y el analizador PeerIslands de rendimiento para probar](https://tools.peerislands.io/) el rendimiento de las consultas.

Este patrón es particularmente útil para la migración de Microsoft SQL Server a MongoDB, ya que realizar transformaciones de esquemas y cargar datos de las instancias actuales de SQL Server a MongoDB puede resultar muy complejo. En lugar de esto, puede cargar datos prácticamente reales en MongoDB, conocer el rendimiento de MongoDB y ajustar el diseño del esquema antes de iniciar la migración propiamente dicha.

## Requisitos previos y limitaciones
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Familiaridad con [MongoDB Atlas](https://www.mongodb.com/docs/atlas/getting-started/)
+ Esquema de MongoDB de destino
+ Patrones típicos de consulta

**Limitaciones**
+ Los tiempos de carga de datos y el rendimiento estarán limitados por el tamaño de la instancia del clúster de MongoDB. Se recomienda seleccionar instancias que estén recomendadas para uso en producción a fin de comprender el rendimiento en el mundo real.
+ PeerIslands Actualmente, Test Data Generator y Performance Analyzer solo admiten consultas y cargas de datos en línea. Aún no se admite el procesamiento por lotes sin conexión (por ejemplo, cargar datos en MongoDB mediante conectores Spark).
+ PeerIslands El generador de datos de prueba y el analizador de rendimiento admiten las relaciones de campo dentro de una colección. No admite relaciones entre colecciones.

**Ediciones de producto**
+ Este patrón es compatible con [MongoDB Atlas](https://www.mongodb.com/atlas) y [MongoDB Enterprise Advanced](https://www.mongodb.com/products/mongodb-enterprise-advanced).

## Arquitectura
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-architecture"></a>

**Pila de tecnología de destino**
+ MongoDB Atlas o MongoDB Enterprise Advanced

**Arquitectura**

![\[Arquitectura para evaluar el rendimiento de las consultas para migrar bases de datos de SQL Server a MongoDB Atlas en AWS\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/25f0ab73-d587-4bd0-9fc0-ac675d5aa349/images/717caae4-d52e-4c78-bb7d-2ecb5acccd42.png)


PeerIslands El generador de datos de prueba y el analizador de rendimiento se crean con Java y Angular, y almacenan los datos generados en Amazon Elastic Block Store (Amazon EBS). La herramienta consta de dos flujos de trabajo: la generación de datos de prueba y las pruebas de rendimiento. 
+ En la generación de datos de prueba, se crea una plantilla, que es la representación en JSON del modelo de datos que se debe generar. Después de crear la plantilla, se pueden generar los datos en una colección de destino, tal y como se define en la configuración de generación de carga.
+ En las pruebas de rendimiento, se crea un perfil. Un perfil es un escenario de prueba en varias etapas en el que se pueden configurar las operaciones de creación, lectura, actualización y eliminación (CRUD), los procesos de agregación, la ponderación de cada operación y la duración de cada etapa. Tras crear el perfil, puede realizar pruebas de rendimiento en la base de datos de destino, en función de la configuración.

PeerIslands El generador de datos de prueba y el analizador de rendimiento almacenan sus datos en Amazon EBS, por lo que puede conectar Amazon EBS a MongoDB mediante cualquier mecanismo de conexión compatible con MongoDB, incluidos el emparejamiento, las listas de permisos y los puntos de enlace privados. De forma predeterminada, la herramienta no incluye componentes operativos; sin embargo, se puede configurar con Amazon Managed Service for Prometheus, Amazon Managed Grafana CloudWatch, Amazon y AWS Secrets Manager si es necesario.

## Tools (Herramientas)
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-tools"></a>
+ PeerIslands El [generador de datos de prueba y el analizador de rendimiento incluyen dos componentes](https://tools.peerislands.io/). El componente generador de datos de prueba ayuda a generar datos del mundo real altamente específicos del cliente, basados en el esquema de MongoDB. La herramienta está totalmente basada en la interfaz de usuario, con una rica biblioteca de datos, y se puede utilizar para generar rápidamente miles de millones de registros en MongoDB. La herramienta también proporciona capacidades para implementar relaciones entre campos en el esquema de MongoDB. El componente analizador del rendimiento ayuda a generar consultas y agregaciones altamente específicas para el cliente y a realizar pruebas de rendimiento realistas en MongoDB. Se puede usar el analizador de rendimiento para probar el rendimiento de MongoDB con perfiles de carga enriquecidos y consultas parametrizadas para un caso de uso específico.

## Prácticas recomendadas
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-best-practices"></a>

Consulte los siguientes recursos:
+ [MongoDB Schema Design Best Practices](https://www.mongodb.com/developer/products/mongodb/mongodb-schema-design-best-practices/) (Prácticas recomendadas de diseño de esquemas de MongoDB) (sitio web para desarrolladores de MongoDB)
+ [Best Practices of Deploying MongoDB Atlas on AWS](https://www.mongodb.com/presentation/best-practices-of-deploying-mongodb-atlas-on-aws) (Prácticas recomendadas para implementar MongoDB Atlas en AWS) (sitio web de MongoDB)
+ [Conexión segura de aplicaciones a un plano de datos de MongoDB Atlas con AWS PrivateLink](https://aws.amazon.com/blogs/apn/connecting-applications-securely-to-a-mongodb-atlas-data-plane-with-aws-privatelink/) (entrada del blog de AWS)
+ [Best Practices Guide for MongoDB Performance](https://www.mongodb.com/basics/best-practices) (Guía de prácticas recomendadas para el rendimiento de MongoDB) (sitio web de MongoDB)

## Epics
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-epics"></a>

### Comprender los datos de origen
<a name="understand-your-source-data"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Conozca el tamaño de la base de datos de origen actual de SQL Server. | Conozca su huella actual de SQL Server. Para este fin, se pueden ejecutar consultas en el esquema `INFORMATION` de la base de datos. Determine el número de tablas y el tamaño de cada tabla. Analice el índice asociado a cada tabla. Para obtener más información sobre el análisis de SQL, consulte la entrada del blog [SQL2Mongo: Data Migration Journey](https://engineering.peerislands.io/sql2mongo-data-migration-journey-fec91a421d60) en el sitio web. PeerIslands  | Administrador de base de datos | 
| Comprenda el esquema de origen. | Determine el esquema de la tabla y la representación empresarial de los datos (por ejemplo, códigos postales, nombres y moneda). Utilice el diagrama de relaciones entre entidades (ER) existente o genere el diagrama ER a partir de la base de datos existente. Para obtener más información, consulte la entrada del blog [SQL2Mongo: Data Migration Journey](https://engineering.peerislands.io/sql2mongo-data-migration-journey-fec91a421d60) en el PeerIslands sitio web. | Administrador de base de datos | 
| Comprenda los patrones de consulta. | Documente las 10 consultas SQL principales que utiliza. Puede utilizar las tablas **performance\$1schema.events\$1statements\$1summary\$1by\$1digest**, disponibles en la base de datos, para comprender las consultas principales. Para obtener más información, consulte la entrada del blog [SQL2Mongo: Data Migration Journey](https://engineering.peerislands.io/sql2mongo-data-migration-journey-fec91a421d60) en el PeerIslands sitio web. | Administrador de base de datos | 
| Comprenda los compromisos de SLA. | Documente los acuerdos de nivel de servicio (SLAs) previstos para las operaciones de bases de datos. Las medidas habituales incluyen la latencia de las consultas y las consultas por segundo. Las medidas y sus objetivos suelen estar disponibles en los documentos de requisitos no funcionales (NFR). | Administrador de base de datos | 

### Definir el esquema de MongoDB
<a name="define-the-mongodb-schema"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Defina el esquema de origen. | Defina varias opciones para el esquema de MongoDB de destino. Para obtener más información, consulte [Schemas](https://www.mongodb.com/docs/atlas/app-services/schemas/) (Esquemas) en la documentación de MongoDB Atlas. Tenga en cuenta las prácticas recomendables y los patrones de diseño basados en las relaciones de las tablas.  | Ingeniero de MongoDB | 
| Defina los patrones de consulta de destino. | Defina las consultas de MongoDB y las canalizaciones de agregación. Estas consultas equivalen a las consultas principales que capturó para su carga de trabajo de SQL Server. Para saber cómo construir canalizaciones de agregación de MongoDB, consulte la [documentación de MongoDB](https://www.mongodb.com/docs/manual/core/aggregation-pipeline/). | Ingeniero de MongoDB | 
| Defina el tipo de instancia de MongoDB. | Determine el tamaño de la instancia que planea utilizar para las pruebas. Para obtener orientación, consulte la [documentación de MongoDB](https://www.mongodb.com/docs/atlas/sizing-tier-selection/). | Ingeniero de MongoDB | 

### Prepare la base de datos de destino
<a name="prepare-the-target-database"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure el clúster de MongoDB Atlas. | Para configurar un clúster de MongoDB en AWS, siga las instrucciones de la [documentación de MongoDB.](https://www.mongodb.com/docs/atlas/tutorial/create-new-cluster/) | Ingeniero de MongoDB | 
| Cree usuarios en la base de datos de destino. | Configure el clúster de MongoDB Atlas para el acceso y la seguridad de la red siguiendo las instrucciones de la [documentación de MongoDB.](https://www.mongodb.com/docs/atlas/connect-to-database-deployment/) | Ingeniero de MongoDB | 
| Cree los roles adecuados en AWS y configure el control de acceso basado en roles para Atlas. | Si es necesario, configure usuarios adicionales siguiendo las instrucciones de la [documentación de MongoDB](https://www.mongodb.com/docs/atlas/security/set-up-unified-aws-access/). Configure [la autenticación y la autorización](https://www.mongodb.com/docs/atlas/security/config-db-auth/) mediante los roles de AWS. | Ingeniero de MongoDB | 
| Configure Compass para el acceso a MongoDB Atlas. | Configure el programa de utilidad [GUI MongoDB Compass](https://www.mongodb.com/products/compass) para facilitar la navegación y el acceso. | Ingeniero de MongoDB | 

### Configurar la carga base mediante el generador de datos de prueba
<a name="set-up-the-base-load-by-using-test-data-generator"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Instale el generador de datos de prueba. | Instale [PeerIsland Test Data Generator](https://github.com/PeerIslands/loadgen_binary) en su entorno. | Ingeniero de MongoDB | 
| Configure el generador de datos de prueba para generar los datos adecuados. | Cree una plantilla mediante la biblioteca de datos para generar datos específicos para cada campo del esquema de MongoDB. Para obtener más información, consulte [MongoDB Data Generator & Perf. Video del analizador](https://vimeo.com/570068857). | Ingeniero de MongoDB | 
| Generador de datos de prueba con escala horizontal para generar la carga requerida. | Utilice la plantilla que creó para iniciar la generación de cargas con respecto a la colección de destino; para ello, configure el paralelismo requerido. Determine los plazos y la escala para generar los datos necesarios. | Ingeniero de MongoDB | 
| Valide la carga en MongoDB Atlas. | Compruebe los datos cargados en MongoDB Atlas. | Ingeniero de MongoDB | 
| Genere los índices necesarios en MongoDB. | Defina los índices según sea necesario, en función de los patrones de consulta. Para conocer las prácticas recomendadas, consulte la [documentación de MongoDB](https://www.mongodb.com/docs/manual/applications/indexes/). | Ingeniero de MongoDB | 

### Llevar a cabo pruebas de rendimiento
<a name="conduct-performance-testing"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure los perfiles de carga en Performance Analyzer. | Cree un perfil de pruebas de rendimiento en Performance Analyzer; para ello, configure consultas específicas y sus correspondientes ponderación, duración de la prueba y etapas. Para obtener más información, consulte [MongoDB Data Generator & Perf. Video del analizador](https://vimeo.com/570068857). | Ingeniero de MongoDB | 
| Ejecute las pruebas de rendimiento. | Utilice el perfil de prueba de rendimiento que creó para iniciar la prueba con respecto a la colección de destino; para ello, configure el paralelismo requerido. Escale horizontalmente la herramienta de prueba de rendimiento para ejecutar consultas en MongoDB Atlas. | Ingeniero de MongoDB | 
| Registre los resultados de la prueba. | Registre la latencia P95 y P99 para las consultas. | Ingeniero de MongoDB | 
| Ajuste su esquema y sus patrones de consulta. | Modifique los índices y los patrones de consulta para solucionar cualquier problema de rendimiento. | Ingeniero de MongoDB | 

### Cerrar el proyecto
<a name="close-the-project"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cerrar los recursos temporales de AWS. | Elimine todos los recursos temporales que utilizó para el generador de datos de prueba y el analizador de rendimiento. | Administrador de AWS | 
| Actualice los resultados de las pruebas de rendimiento. | Comprenda el rendimiento de las consultas de MongoDB y compárelo con el suyo. SLAs Si es necesario, ajuste el esquema de MongoDB y vuelva a ejecutar el proceso. | Ingeniero de MongoDB | 
| Finalice el proyecto. | Cerrar el proyecto y enviar comentarios. | Ingeniero de MongoDB | 

## Recursos relacionados
<a name="assess-query-performance-for-migrating-sql-server-databases-to-mongodb-atlas-on-aws-resources"></a>
+ GitHub [repositorio: S3toAtlas](https://github.com/mongodb-partners/S3toAtlas)
+ Esquema: [MongoDB Schema design](https://www.mongodb.com/developer/products/mongodb/mongodb-schema-design-best-practices/) (Diseño de esquema de MongoDB)
+ Canalizaciones de agregación: [MongoDB aggregation pipelines](https://www.mongodb.com/docs/manual/core/aggregation-pipeline/) (Canalizaciones de agregación de MongoDB)
+ Dimensionamiento de MongoDB Atlas: [Sizing tier selection](https://www.mongodb.com/docs/atlas/sizing-tier-selection/) (Selección de capa de dimensionamiento)
+ Video: [MongoDB Data Generator](https://vimeo.com/570068857) & Perf. Analizador
+ Referencias: [documentación de MongoDB](https://www.mongodb.com/docs/)
+ Tutorialws:** **[MongoDB developer guide, ](https://www.mongodb.com/docs/develop-applications/)[MongoDB Jumpstart](https://www.youtube.com/playlist?list=PL4RCxklHWZ9v2lcat4oEVGQhZg6r4IQGV)
+ AWS Marketplace:** **[MongoDB Atlas en AWS Marketplace](https://aws.amazon.com/marketplace/seller-profile?id=c9032c7b-70dd-459f-834f-c1e23cf3d092)
+ Soluciones de socios de AWS: ** **[MongoDB Atlas on AWS Reference Deployment](https://aws.amazon.com/quickstart/architecture/mongodb-atlas/) (Implementación de referencia de MongoDB Atlas en AWS)

Recursos adicionales:
+ [Análisis de SQL](https://engineering.peerislands.io/sql2mongo-data-migration-journey-fec91a421d60)
+ [MongoDB Developer Community forums](https://www.mongodb.com/community/forums/) (Foros de la comunidad de desarrolladores de MongoDB)
+ [MongoDB Performance Tuning Questions](https://www.mongodb.com/developer/products/mongodb/performance-tuning-tips/) (Preguntas sobre el ajuste del rendimiento de MongoDB)
+ [Operational Analytics with Atlas and Redshift](https://github.com/mongodb-partners/Atlas_to_Redshift) (Análisis operativo con Atlas y Redshift)
+ [Application modernization with MongoDB Atlas and AWS Elastic Beanstalk](https://github.com/mongodb-partners/MEANStack_with_Atlas_on_AWS_EB) (Modernización de aplicaciones con MongoDB Atlas y AWS Elastic Beanstalk)