Ejercicio: Migración de cargas de trabajo de MongoDB a Cosmos DB

Completado

Trabaja para una empresa de servicios públicos que tiene sensores de IoT que recopilan datos de temperatura. Las temperaturas se registran en una base de datos de MongoDB, junto con una marca de tiempo. Cada dispositivo tiene un identificador exclusivo. Ejecutará una aplicación de MongoDB que simula estos dispositivos y almacena los datos en la base de datos. También usará una segunda aplicación que permite a un usuario consultar información estadística sobre cada dispositivo. Después de migrar la base de datos de MongoDB a Cosmos DB, configurará ambas aplicaciones para que se conecten a Cosmos DB y comprobará que sigan funcionando correctamente.

En este ejercicio, tomará una base de datos de MongoDB existente y la migrará a Cosmos DB. Usará Azure Database Migration Service. También verá cómo volver a configurar las aplicaciones existentes que usan la base de datos de MongoDB para que se conecten, en su lugar, a la base de datos de Cosmos DB.

Importante

Azure Database Migration Service no se admite en el entorno de espacio aislado de Azure gratuito. Puede seguir estos pasos en su propia suscripción personal o simplemente seguir leyendo para entender cómo migrar la base de datos.

Creación de una base de datos de MongoDB en Azure

En primer lugar, creará la base de datos de MongoDB para conservar los datos capturados de los dispositivos de temperatura.

Creación de un grupo de recursos y una red virtual

  1. Abra una nueva pestaña en un explorador web y navegue hasta Azure Portal.

  2. En Azure Portal, seleccione Grupos de recursos y, a continuación, seleccione + Agregar.

  3. En la página Crear un grupo de recursos, escriba los detalles siguientes:

    Propiedad Valor
    Suscripción <la_suscripción>
    Grupo de recursos mongodbrg
    Region Seleccione la ubicación más cercana.
  4. Seleccione Revisar y crear y, luego, Crear. Espere a que se cree el grupo de recursos.

  5. En el menú de Azure Portal, seleccione + Crear un recurso.

  6. En la página Nuevo, en el cuadro Buscar en el Marketplace, escriba Red virtual y presione ENTRAR.

  7. En la página Red virtual, seleccione Crear.

  8. En la página Crear red virtual, escriba los detalles siguientes y, a continuación, seleccione Siguiente: Direcciones IP:

    Propiedad Valor
    Grupo de recursos mongodbrg
    NOMBRE databasevnet
    Region Seleccione la misma ubicación que especificó para el grupo de recursos.
  9. En la página Direcciones IP, establezca el Espacio de direcciones IPv4 en 10.0.0.0/24.

  10. Seleccione la subred predeterminada y, a continuación, seleccione Quitar subred.

  11. Seleccione + Agregar subred. En el panel Agregar subred, establezca el Nombre de subred en default, establezca el Intervalo de direcciones de subred en 10.0.0.0/28 y, a continuación, seleccione Agregar.

  12. En la página Direcciones IP, seleccione Siguiente: Seguridad.

  13. En la página Seguridad, compruebe que Azure DDoS Network Protection está establecido en Desactivado y que Firewall está establecido en Desactivado. Seleccione Revisar + crear.

  14. En la página Crear red virtual, seleccione Crear. Espere a que se cree la red virtual antes de continuar.

Creación de un servidor de bases de datos de MongoDB

  1. En el menú de Azure Portal, seleccione + Crear un recurso.

  2. En el cuadro Buscar en el Marketplace, escriba Ubuntu y presione ENTRAR.

  3. En la página Marketplace, seleccione Ubuntu Server 18.04 LTS.

  4. En la página Ubuntu Server 18.04 LTS, seleccione Crear.

  5. En la página Crear una máquina virtual, escriba los detalles siguientes:

    Propiedad Valor
    Grupo de recursos mongodbrg
    Nombre de la máquina virtual mongodbserver
    Region Seleccione la misma ubicación que especificó para el grupo de recursos.
    Opciones de disponibilidad No se requiere redundancia de la infraestructura
    Imagen Ubuntu Server 18.04 LTS (Gen1)
    Instancia de Azure Spot No activado
    Size Standard A1_v2
    Tipo de autenticación Contraseña
    Nombre de usuario azureuser
    Contraseña Pa55w.rdPa55w.rd
    Confirmación de la contraseña Pa55w.rdPa55w.rd
    Puertos de entrada públicos Permitir los puertos seleccionados
    Selección de puertos de entrada SSH (22)
  6. Seleccione Siguiente: Discos >.

  7. En la página Discos, deje la configuración en sus valores predeterminados y seleccione Siguiente: Redes>.

  8. En la página Redes, escriba los siguientes detalles:

    Propiedad Value
    Virtual network databasevnet
    Subnet predeterminada (10.0.0.0/28)
    Dirección IP pública (nuevo) mongodbserver-ip
    Grupo de seguridad de red de NIC Avanzado
    Configuración del grupo de seguridad de red (nuevo) mongodbserver-nsg
    Redes aceleradas No activado
    Equilibrio de carga No activado
  9. Seleccione Revisar y crear>.

  10. En la página de validación, seleccione Crear.

  11. Espere a que la máquina virtual se implemente antes de continuar.

  12. En el menú de Azure Portal, seleccione Todos los recursos.

  13. En la página Todos los recursos, seleccione mongodbserver-nsg.

  14. En la página mongodbserver-nsg, en Configuración, seleccione Reglas de seguridad de entrada.

  15. En la página mongodbserver-nsg: Reglas de seguridad de entrada, seleccione + Agregar.

  16. En el panel Agregar regla de seguridad de entrada, escriba los detalles siguientes:

    Propiedad Valor
    Source Cualquiera
    Source port ranges *
    Destination Any
    Intervalos de puertos de destino 8080
    Protocolo Cualquiera
    Acción Permitir
    Priority 1030
    NOMBRE Mongodb-port
    Descripción Puerto que los clientes usan para conectarse a MongoDB.
  17. Seleccione Agregar.

Nota:

En este ejercicio, configurará MongoDB para usar el puerto 8080. Solo tiene que hacerlo debido a las restricciones de seguridad en este entorno. Normalmente usaría el puerto predeterminado de MongoDB, 27017.

Instalación de MongoDB

  1. En el menú de Azure Portal, seleccione Todos los recursos.

  2. En la página Todos los recursos, seleccione mongodbserver-ip.

  3. En la página mongodbserver-ip, tome nota de la Dirección IP.

  4. En la barra de herramientas de la parte superior de Azure Portal, seleccione Cloud Shell.

  5. Si aparece el cuadro de mensaje No tiene ningún almacenamiento montado, seleccione Crear almacenamiento.

  6. Cuando se inicie Cloud Shell, en la lista desplegable sobre la ventana de Cloud Shell, seleccione Bash.

  7. En Cloud Shell, escriba el comando siguiente para conectarse a la máquina virtual mongodbserver. Reemplace <dirección IP> por el valor de la dirección IP de mongodbserver-ip:

    ssh azureuser@<ip address>
    
  8. En la solicitud, escriba yes para continuar con la conexión.

  9. Escriba la contraseña Pa55w.rdPa55w.rd.

  10. Para volver a cargar la base de datos del paquete, escriba este comando:

    sudo apt-get update
    
  11. Para instalar MongoDB, escriba este comando:

    sudo apt-get install -y mongodb
    

    La instalación debería proseguir con mensajes sobre la instalación, la preparación y el desempaquetado de paquetes. La instalación puede tardar unos minutos en completarse.

Configuración de una base de datos de MongoDB

De manera predeterminada, la instancia de MongoDB está configurada para ejecutarse sin autenticación. En esta tarea, configurará MongoDB para que se enlace con la interfaz de red local para que pueda aceptar conexiones de otros equipos. También habilitará la autenticación y creará la cuenta de usuario necesaria para realizar la migración. Por último, agregará una cuenta que una aplicación de prueba pueda usar para consultar la base de datos.

  1. Para abrir el archivo de configuración de MongoDB, ejecute este comando:

    sudo nano /etc/mongodb.conf
    
  2. En el archivo, busque el valor bind_ip y establézcalo en 0.0.0.0.

  3. Busque el valor de port y establézcalo en 8080.

  4. Para guardar el archivo, presione ESC y, después, CTRL+X. Presione y y, después, ENTRAR para guardar el búfer modificado.

  5. Para reiniciar el servicio MongoDB y aplicar los cambios, escriba este comando:

    sudo service mongodb restart
    
  6. Para conectarse al servicio de MongoDB, escriba este comando:

    mongo --host 127.0.0.1:8080
    
  7. En la solicitud >, para cambiar a la base de datos admin, ejecute este comando:

    use admin;
    
  8. Para crear un nuevo usuario denominado administrator, ejecute el siguiente comando. Puede escribir el comando en una línea o en varias líneas para mejorar la legibilidad. El comando se ejecuta cuando el programa mongo alcanza el punto y coma:

    db.createUser(
        {
            user: "administrator",
            pwd: "Pa55w.rd",
            roles: [
                { role: "userAdminAnyDatabase", db: "admin" },
                { role: "clusterMonitor", db:"admin" },
                "readWriteAnyDatabase"
            ]
        }
    );
    
  9. Para salir del programa mongo, escriba este comando:

    exit;
    
  10. Para conectarse a MongoDB con la nueva cuenta de administrador, ejecute este comando:

    mongo admin -u "administrator" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  11. Para cambiar a la base de datos DeviceData, ejecute este comando:

    use DeviceData;    
    
  12. Para crear un usuario denominado deviceadmin, que la aplicación usará para conectarse a la base de datos, ejecute este comando:

    db.createUser(
        {
            user: "deviceadmin",
            pwd: "Pa55w.rd",
            roles: [ { role: "readWrite", db: "DeviceData" } ]
        }
    );
    
  13. Para salir del programa mongo, escriba este comando:

    exit;
    
  14. Ejecute el siguiente comando para reiniciar el servicio mongodb. Compruebe que el servicio se reinicie sin ningún mensaje de error:

    sudo service mongodb restart
    
  15. Ejecute el siguiente comando para comprobar que ahora puede iniciar sesión en mongodb como el usuario deviceadmin:

    mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  16. En la solicitud >, ejecute el siguiente comando para salir del shell de mongo:

    exit;
    
  17. En la solicitud de Bash, ejecute el siguiente comando para desconectarse del servidor de MongoDB y volver a Cloud Shell:

    exit
    

Relleno y consulta de la base de datos de MongoDB

Ahora ha creado un servidor y una base de datos de MongoDB. El siguiente paso consiste en demostrar las aplicaciones de ejemplo, que pueden rellenar y consultar los datos de esta base de datos.

Compilación y ejecución de una aplicación para rellenar la base de datos de MongoDB

  1. En Azure Cloud Shell, ejecute el siguiente comando para descargar el código de ejemplo:

    git clone https://github.com/MicrosoftLearning/DP-060T00A-Migrating-your-Database-to-Cosmos-DB migration-workshop-apps
    
  2. Vaya a la carpeta migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceCapture:

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture
    
  3. Use el editor de código para examinar el archivo TemperatureDevice.cs:

    code TemperatureDevice.cs
    

    El código de este archivo contiene una clase denominada TemperatureDevice que simula un dispositivo de temperatura que captura los datos y los guarda en una base de datos de MongoDB. Usa la biblioteca de MongoDB para el .NET Framework. El constructor TemperatureDevice se conecta a la base de datos mediante los valores almacenados en el archivo de configuración de la aplicación. El método RecordTemperatures genera una lectura y la escribe en la base de datos.

  4. Cierre el editor de código y, a continuación, abra el archivo ThermometerReading.cs:

    code ThermometerReading.cs
    

    Este archivo muestra la estructura de los documentos que la aplicación almacena en la base de datos. Cada documento contiene los campos siguientes:

    • Un identificador de objeto. Es el campo "_id" generado por MongoDB para identificar de forma exclusiva cada documento.
    • Un identificador de dispositivo. Cada dispositivo tiene un número con el prefijo "Device".
    • La temperatura registrada por el dispositivo.
    • La fecha y hora en que se registró la temperatura.
  5. Cierre el editor de código y, a continuación, abra el archivo App.config:

    code App.config
    

    Este archivo contiene la configuración para conectarse a la base de datos de MongoDB.

  6. Establezca el valor de la clave de Dirección en la dirección IP del servidor de MongoDB que registró anteriormente.

  7. Cambie el puerto que usa la aplicación a 8080.

  8. Guarde el archivo y cierre el editor con CTRL + s y, a continuación, presione CTRL + q.

  9. Ejecute el comando siguiente para recompilar la aplicación:

    dotnet build
    

    Esto puede tardar unos 5 minutos.

  10. Ejecute la aplicación:

    dotnet run
    

    La aplicación simula 100 dispositivos que se ejecutan simultáneamente. Permita que la aplicación se ejecute durante un par de minutos y, después, presione ENTRAR para detenerla.

Compilación y ejecución de otra aplicación para consultar la base de datos de MongoDB

  1. Vaya a la carpeta DP160T00A-Migrating-your-Database-to-Cosmos-DB/MongoDeviceDataCapture/DeviceDataQuery:

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
    

    Esta carpeta contiene otra aplicación que puede usar para analizar los datos capturados por cada dispositivo.

  2. Use el editor de código para examinar el archivo Program.cs:

    code Program.cs
    

    La aplicación se conecta a la base de datos (mediante el método ConnectToDatabase al final del archivo) y, a continuación, solicita al usuario un número de dispositivo. La aplicación usa la biblioteca de MongoDB para .NET Framework para crear y ejecutar una canalización agregada que calcula las estadísticas siguientes para el dispositivo especificado:

    • El número de lecturas registradas.
    • La temperatura media registrada.
    • La lectura más baja.
    • La lectura más alta.
    • La última lectura.
  3. Cierre el editor de código y, a continuación, abra el archivo App.config:

    code App.config
    
  4. Establezca el valor de la clave de Dirección en la dirección IP del servidor de MongoDB que registró anteriormente.

  5. Cambie el puerto que usa la aplicación a 8080.

  6. Guarde el archivo y cierre el editor con CTRL + s y, a continuación, presione CTRL + q.

  7. Compile y ejecute la aplicación:

    dotnet build
    dotnet run
    
  8. En la solicitud Enter Device Number (Escribir número de dispositivo), escriba un valor entre 0 y 99. La aplicación consultará la base de datos, calculará las estadísticas y mostrará los resultados. Presione Q para salir de la aplicación.

Migración de la base de datos de MongoDB a Cosmos DB

El siguiente paso consiste en tomar la base de datos de MongoDB y transferirla a Cosmos DB.

Creación de una cuenta y una base de datos de Cosmos

  1. Vuelva a Azure Portal.

  2. En el menú, seleccione + Crear un recurso.

  3. En la página Nuevo, en el cuadro Buscar en el Marketplace, escriba *Azure Cosmos DB, y, a continuación, presione ENTRAR.

  4. En la página Azure Cosmos DB, seleccione Crear.

  5. En la página Crear cuenta de Azure Cosmos DB, escriba los siguientes valores:

    Propiedad Valor
    Resource group mongodbrg
    Nombre de cuenta mongodb*nnn*, donde nnn es un número cualquiera que elija.
    API Azure Cosmos DB para la API de MongoDB
    Cuaderno Desactivado
    Location Especifique la misma ubicación que usó para el servidor de MongoDB y la red virtual.
    Capacity mode (Modo de capacidad) Rendimiento aprovisionado
    Aplicación de descuento por nivel Gratis Aplicar
    Tipo de cuenta No producción
    Versión 3.6
    Redundancia geográfica Deshabilitar
    Escrituras en varias regiones Deshabilitar
    Zonas de disponibilidad Deshabilitar
  6. Seleccione Revisar + crear.

  7. En la página de validación, seleccione Crear y espere a que la cuenta de Cosmos DB se implemente.

  8. En el menú de Azure Portal, seleccione Todos los recursos y elija la nueva cuenta de Cosmos DB (mongodbnnn).

  9. En la página mongodbnnn, seleccione Explorador de datos.

  10. En el panel Explorador de datos, seleccione Nueva colección.

  11. En el panel Agregar colección, especifique la siguiente configuración:

    Propiedad Value
    Identificador de base de datos Seleccione Crear nuevo y escriba DeviceData.
    Aprovisionamiento del rendimiento de la base de datos seleccionado
    Throughput 10000
    Id. de colección Temperatures
    Capacidad de almacenamiento Sin límite
    Clave de partición deviceID
    Mi clave de partición tiene un tamaño superior a 100 bytes deje sin seleccionar
    Crear un índice de caracteres comodín en todos los campos deje sin seleccionar
    Almacén analítico Desactivado
  12. Seleccione Aceptar.

Creación de una instancia de Database Migration Service

  1. Vuelva a Azure Portal.

  2. Haga clic en Todos los servicios, en Suscripciones y, a continuación, en su suscripción.

  3. En la página de la suscripción, en Configuración, haga clic en Proveedores de recursos.

  4. En el cuadro Filtrar por nombre, escriba DataMigration y haga clic en Microsoft.DataMigration.

  5. Si Microsoft.DataMigration no está registrado, haga clic en Registrar y espere a que Estado cambie a Registrado. Puede que sea necesario hacer clic en Actualizar para ver el cambio de estado.

  6. En el menú de Azure Portal, seleccione + Crear un recurso.

  7. En la página Nuevo, en el cuadro Buscar en el Marketplace, escriba Azure Database Migration Service y, a continuación, presione ENTRAR.

  8. En la página Azure Database Migration Service, seleccione Crear.

  9. En la página Crear el servicio de migración, escriba la siguiente configuración:

    Propiedad Valor
    Resource group mongodbrg
    Nombre del servicio MongoDBMigration
    Location Seleccione la misma ubicación que usó anteriormente.
    Modo de servicio Azure
    Nivel de precios Estándar: 1 núcleo virtual
  10. Seleccione Siguiente: Redes.

  11. En la página Redes, seleccione databasevnet/default y después Revisar y crear.

  12. Seleccione Crear y espere a que se implemente el servicio antes de continuar. Esta operación puede tardar unos 10 minutos.

Creación y ejecución de un nuevo proyecto de migración

  1. En el menú de Azure Portal, seleccione Grupos de recursos.

  2. En la ventana Grupos de recursos, seleccione mongodbrg.

  3. En la ventana mongodbrg, seleccione MongoDBMigration.

  4. En la página MongoDBMigration, seleccione + Nuevo proyecto de migración.

  5. En la página Nuevo proyecto de migración, escriba la siguiente configuración:

    Propiedad Valor
    Nombre de proyecto MigrateTemperatureData
    Tipo de servidor de origen MongoDB
    Tipo de servidor de destino Cosmos DB (API de MongoDB)
    Elegir el tipo de actividad Migración de datos sin conexión
  6. Seleccione Crear y ejecutar una actividad.

  7. Cuando se inicie el Asistente para migración, escriba los detalles siguientes en la página Detalles de origen:

    Propiedad Value
    Modo Modo estándar
    Nombre de servidor de origen Especifique el valor de la dirección IP de mongodbserver-ip que anotó anteriormente.
    Puerto del servidor 8080
    Nombre de usuario administrator
    Contraseña Pa55w.rd.
    Requerir SSL sin seleccionar
  8. Seleccione Siguiente: Seleccione el destino.

  9. En la página Seleccionar destino, escriba estos detalles:

    Propiedad Value
    Modo Seleccionar destino de la base de datos de Cosmos DB
    Seleccionar nombre de Cosmos DB mongodb*nnn*
    Cadena de conexión Acepte la cadena de conexión generada para la cuenta de Cosmos DB.
  10. Seleccione Siguiente: Configuración de base de datos.

  11. En la página Configuración de base de datos, escriba los detalles siguientes:

    Propiedad Valor
    Base de datos de origen DeviceData
    Base de datos de destino DeviceData
    Rendimiento (RU/s) 1000
    Limpiar colecciones Borre este cuadro
  12. Seleccione Siguiente: Configuración de colecciones.

  13. En la página Configuración de colecciones, seleccione la flecha desplegable en la base de datos DeviceData y escriba los detalles siguientes:

    Propiedad Valor
    Nombre Temperatures
    Colección de destino Temperatures
    Rendimiento (RU/s) 1000
    Clave de partición deviceID
    Único Déjelo en blanco.
  14. Seleccione Siguiente: Resumen de la migración

  15. En la página Resumen de la migración, en el campo Nombre de actividad, escriba mongodb-migration y, a continuación, seleccione Iniciar migración.

  16. En la página mongodb-migration, seleccione Actualizar cada 30 segundos hasta que se haya completado la migración. Anote el número de documentos procesados.

Comprobación de que la migración se realizó correctamente

  1. En el menú de Azure Portal, seleccione Todos los recursos.

  2. En la página Todos los recursos, seleccione mongodbnnn.

  3. En la página mongodb*nnn, seleccione Explorador de datos.

  4. En el panel Explorador de datos, expanda la base de datos DeviceData, expanda la colección Temperatures y, a continuación, seleccione Documentos.

  5. En el panel Documentos, desplácese por la lista de documentos. Debería ver un identificador de documento (_id) y la clave de partición (/deviceID) para cada documento.

  6. Seleccione cualquier documento. Debería ver los detalles del documento que se muestra. Un documento típico tiene este aspecto:

    {
        "_id" : ObjectId("5ce8104bf56e8a04a2d0929a"),
        "deviceID" : "Device 83",
        "temperature" : 19.65268837271849,
        "time" : 636943091952553500
    }
    
  7. En la barra de herramientas del panel Explorador de documentos, seleccione New Shell (Nuevo shell).

  8. En el panel Shell 1, en el aviso >, escriba el siguiente comando y, a después, presione Entrar:

    db.Temperatures.count()
    

    Este comando muestra el número de documentos en la colección Temperatures. Debe coincidir con el número indicado por el Asistente para migración.

  9. Escriba el comando siguiente y presione ENTRAR:

    db.Temperatures.find({deviceID: "Device 99"})
    

    Este comando captura y muestra los documentos para el dispositivo 99.

Reconfiguración y ejecución de aplicaciones existentes para usar Cosmos DB

El paso final consiste en volver a configurar las aplicaciones de MongoDB existentes para que se conecten a Cosmos DB, y comprobar que sigan funcionando. Esto requiere la modificación del modo en que las aplicaciones se conectan a la base de datos, pero la lógica de las aplicaciones debe permanecer invariable.

  1. En el panel mongodbnnn, en Configuración, seleccione Cadena de conexión.

  2. En la página Cadena de conexión de mongodbnnn, anote los valores siguientes:

    • Host
    • Nombre de usuario
    • Contraseña principal
  3. Vuelva a la ventana Cloud Shell (vuelva a conectarse si se ha agotado el tiempo de espera de la sesión) y vaya a la carpeta migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery:

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
    
  4. Abra el archivo App.config en el editor de código:

    code App.config
    
  5. En la sección Configuración de MongoDB del archivo, comente la configuración existente.

  6. Quite la marca de comentario de la configuración de la sección Settings for Cosmos DB Mongo API (Configuración para API de Cosmos DB para Mongo) y establezca los valores de esta configuración de la siguiente manera:

    Configuración Valor
    Dirección El valor HOST de la página Cadena de conexión de mongodbnnn
    Port El valor PUERTO de la página Cadena de conexión de mongodbnnn
    Nombre de usuario El valor NOMBRE DE USUARIO de la página Cadena de conexión de mongodbnnn
    Contraseña El valor CONTRASEÑA PRINCIPAL de la página Cadena de conexión de mongodbnnn

    El archivo completado debe tener el aspecto siguiente:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <appSettings>
            <add key="Database" value="DeviceData" />
            <add key="Collection" value="Temperatures" />
    
            <!-- Settings for MongoDB 
            <add key="Address" value="nn.nn.nn.nn" />
            <add key="Port" value="27017" />
            <add key="Username" value="deviceadmin" />
            <add key="Password" value="Pa55w.rd" />
            End of settings for MongoDB -->
    
            <!-- Settings for CosmosDB Mongo API -->
            <add key="Address" value="mongodbnnn.documents.azure.com"/>
            <add key="Port" value="10255"/>
            <add key="Username" value="mongodbnnn"/>
            <add key="Password" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="/>
            <!-- End of settings for CosmosDB Mongo API -->
        </appSettings>
    </configuration>
    
  7. Guarde el archivo y luego cierre el editor de código.

  8. Abra el archivo Program.cs con el editor de código:

    code Program.cs
    
  9. Desplácese hacia abajo hasta el método ConnectToDatabase.

  10. Comente la línea que establece las credenciales para conectarse a MongoDB, y quite las marcas de comentario de las instrucciones que especifican las credenciales para conectarse a Cosmos DB. El código debe ser similar al siguiente:

    // Connect to the MongoDB database
    MongoClient client = new MongoClient(new MongoClientSettings
    {
        Server = new MongoServerAddress(address, port),
        ServerSelectionTimeout = TimeSpan.FromSeconds(10),
    
        //
        // Credential settings for MongoDB
        //
    
        // Credential = MongoCredential.CreateCredential(database, azureLogin.UserName, azureLogin.SecurePassword),
    
        //
        // Credential settings for CosmosDB Mongo API
        //
    
        UseTls = true,
        Credential = new MongoCredential("SCRAM-SHA-1", new MongoInternalIdentity(database, azureLogin.UserName), new PasswordEvidence(azureLogin.SecurePassword))
    
        // End of Mongo API settings
    });
    

    Estos cambios son necesarios porque la base de datos de MongoDB original no usaba una conexión SSL. Cosmos DB siempre usa SSL.

  11. Guarde el archivo y luego cierre el editor de código.

  12. Recompile y ejecute la aplicación:

    dotnet build
    dotnet run
    
  13. En el aviso Enter Device Number (Escribir número de dispositivo), escriba un número de dispositivo entre 0 y 99. La aplicación debe ejecutarse exactamente igual que antes, con la excepción de que en esta ocasión se usan los datos contenidos en la base de datos de Cosmos DB.

Mejora del rendimiento de consultas en Cosmos DB

Cosmos DB le permite agregar más índices para mejorar el rendimiento de las consultas. Como estamos agregando deviceID, agregar ese campo como índice acelerará las consultas.

  1. Vuelva a Azure Portal.

  2. En el lado izquierdo, seleccione Explorador de datos.

  3. En el panel Explorador de datos, expanda la base de datos DeviceData, expanda la colección Temperatures y, a continuación, seleccione Configuración.

    Screenshot showing adding a Cosmos DB indexing policy.

  4. Seleccione Directiva de indexación.

  5. En _id agregue un nuevo índice, escriba deviceID para la Definición y seleccione Campo único para Tipo.

  6. Seleccione Guardar para agregar el nuevo índice.

  7. Vuelva a Cloud Shell para volver a intentar la consulta, y observe la respuesta mejorada en la aplicación.

  8. Pruebe la aplicación con otros números de dispositivo. Escriba Q para finalizar.

Ha migrado correctamente una base de datos de MongoDB a Cosmos DB y ha reconfigurado una aplicación de MongoDB existente para que se conecte a la nueva base de datos de Cosmos DB.

Limpieza de los recursos que creó

Importante

Si siguió estos pasos en su propia suscripción personal, puede eliminar los recursos de manera individual o eliminar el grupo de recursos para borrar todo el conjunto de recursos. Los recursos que se dejan en ejecución pueden costarle mucho dinero.

  1. Con Cloud Shell, ejecute este comando para eliminar el grupo de recursos:

    az group delete --name mongodbrg