Exercício: Migrar cargas de trabalho do MongoDB para o Cosmos DB

Concluído

Você trabalha para uma empresa de serviços públicos que tem sensores IoT que coletam dados de temperatura. As temperaturas são registradas em um banco de dados MongoDB, juntamente com um carimbo de data/hora. Cada dispositivo tem um ID exclusivo. Você executará um aplicativo MongoDB que simula esses dispositivos e armazena os dados no banco de dados. Você também usará um segundo aplicativo que permite que um usuário consulte informações estatísticas sobre cada dispositivo. Depois de migrar o banco de dados do MongoDB para o Cosmos DB, você configurará ambos os aplicativos para se conectarem ao Cosmos DB e verificará se eles ainda funcionam corretamente.

Neste exercício, você pegará um banco de dados MongoDB existente e o migrará para o Cosmos DB. Você usará o Serviço de Migração de Banco de Dados do Azure. Você também verá como reconfigurar aplicativos existentes que usam o banco de dados MongoDB para se conectar ao banco de dados do Cosmos DB.

Importante

O Serviço de Migração de Dados do Azure não é suportado no ambiente seguro gratuito do Azure. Você pode executar essas etapas em sua própria assinatura pessoal ou apenas acompanhar para entender como migrar seu banco de dados.

Criar um banco de dados MongoDB no Azure

Primeiro, você criará o banco de dados MongoDB para armazenar os dados capturados dos dispositivos de temperatura.

Criar um Grupo de Recursos e uma Rede Virtual

  1. Usando um navegador da Web, abra uma nova guia e navegue até o portal do Azure.

  2. No portal do Azure, selecione Grupos de recursose, em seguida, selecione +Adicionar.

  3. Na página Criar um grupo de recursos, insira os seguintes detalhes:

    Propriedade Valor
    Subscrição <a sua subscrição>
    Grupo de Recursos Mongodbrg
    Região Selecione a localização mais próxima de si
  4. Selecione Rever + Criar e, em seguida, selecione Criar. Aguarde até que o grupo de recursos seja criado.

  5. No menu do portal do Azure, selecione + Criar um recurso.

  6. Na página Novo, na caixa Pesquisar no Marketplace, digite Rede Virtual e pressione Enter.

  7. Na página Rede Virtual, selecione Criar.

  8. Na página Criar de rede virtual, introduza os seguintes detalhes e, em seguida, selecione seguinte: Endereços IP:

    Propriedade Valor
    Grupo de Recursos mongodbrg
    Nome databasevnet
    Região Selecione o mesmo local especificado para o grupo de recursos
  9. Na página Endereços IP, defina o de espaço de endereço IPv4 como 10.0.0.0/24.

  10. Selecione a sub-rede padrão e, em seguida, selecione Remover sub-rede.

  11. Selecione + Adicionar subrede. No painel Adicionar de sub-rede, defina o Nome da sub-rede como padrão, defina o intervalo de endereços da sub-rede como 10.0.0.0/28e selecione Adicionar.

  12. Na página Endereços IP, selecione Seguinte: Segurança.

  13. Na página de Segurança, verifique se de Proteção de Rede DDoS do Azure está definido como Desabilitare de Firewall está definido como Desabilitar. Selecione Verificar + criar.

  14. Na página Criar de rede virtual, selecione Criar. Aguarde a criação da rede virtual antes de continuar.

Criar um servidor de banco de dados MongoDB

  1. No menu do portal do Azure, selecione + Criar um recurso.

  2. Na caixa Pesquisar no do Marketplace, digite Ubuntue pressione Enter.

  3. Na página do Marketplace, selecione Ubuntu Server 18.04 LTS.

  4. Na página Ubuntu Server 18.04 LTS, selecione Criar.

  5. Na página Criar uma máquina virtual, insira os seguintes detalhes:

    Propriedade Valor
    Grupo de Recursos mongodbrg
    Nome da máquina virtual MongoDBerver
    Região Selecione o mesmo local especificado para o grupo de recursos
    Opções de disponibilidade Não existem redundâncias de infraestruturas necessárias
    Imagem Ubuntu Server 18.04 LTS - Gen1
    Instância do Azure Spot Não verificado
    Tamanho A1_v2 padrão
    Tipo de autenticação Palavra-passe
    Nome de utilizador azureuser
    Palavra-passe Pa55w.rdPa55w.rd
    Confirme a palavra-passe Pa55w.rdPa55w.rd
    Portas de entrada públicas Permitir as portas selecionadas
    Selecione as portas de entrada SSH (22)
  6. Selecione Next: Discos >.

  7. Na página Discos, deixe as configurações como padrão e selecione Avançar: Rede >.

  8. Na página Rede, insira os seguintes detalhes:

    Propriedade Valor
    Rede virtual Banco de dadosVNET
    Sub-rede padrão (10.0.0.0/28)
    IP público (novo) mongodbserver-ip
    Grupo de segurança de rede NIC Avançado
    Configurar grupo de segurança de rede (novo) mongodbserver-nsg
    Rede acelerada Não verificado
    Balanceamento de carga Não verificado
  9. Selecione Rever + criar >.

  10. Na página de validação, selecione Criar.

  11. Aguarde a implantação da máquina virtual antes de continuar

  12. No menu do portal do Azure, selecione Todos os recursos.

  13. Na página Todos os recursos, selecione mongodbserver-nsg.

  14. Na página mongodbserver-nsg, em Configurações, selecione Regras de segurança de entrada.

  15. Na página mongodbserver-nsg - Inbound security rules, selecione + Adicionar.

  16. No painel Adicionar regra de segurança de entrada, insira os seguintes detalhes:

    Propriedade Valor
    Fonte Qualquer
    Intervalos de portas de origem *
    Destino Qualquer
    Intervalos de portas de destino 8080
    Protocolo Qualquer
    Ação Permitir
    Prioridade 1030
    Nome Mongodb-porto
    Descrição Porta que os clientes usam para se conectar ao MongoDB
  17. Selecione Adicionar.

Observação

Você configurará o MongoDB para usar a porta 8080 neste exercício. Você só precisa fazer isso devido a restrições de segurança nesse ambiente. Normalmente, você usaria a porta MongoDB padrão do 27017.

Instalar o MongoDB

  1. No menu do portal do Azure, selecione Todos os recursos.

  2. Na página Todos os recursos, selecione mongodbserver-ip.

  3. Na página mongodbserver-ip, anote o endereço IP .

  4. Na barra de ferramentas na parte superior do portal do Azure, selecione Cloud Shell.

  5. Se a caixa de mensagem Você não tem armazenamento montado for exibida, selecione Criarde armazenamento .

  6. Quando o Cloud Shell for iniciado, na lista suspensa acima da janela do Cloud Shell, selecione Bash.

  7. No Cloud Shell, digite o seguinte comando para se conectar à máquina virtual mongodbserver. Substitua <endereço ip> pelo valor do mongodbserver-ip endereço IP:

    ssh azureuser@<ip address>
    
  8. No prompt, digite sim para continuar a se conectar.

  9. Digite a senha Pa55w.rdPa55w.rd.

  10. Para recarregar o banco de dados de pacotes, digite este comando:

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

    sudo apt-get install -y mongodb
    

    A instalação deve prosseguir com mensagens sobre a instalação, preparação e descompactação de pacotes. Pode levar alguns minutos para que a instalação seja concluída.

Configurar o banco de dados MongoDB

Por padrão, a instância de banco de dados Mongo é configurada para ser executada sem autenticação. Nesta tarefa, você configurará o MongoDB para se vincular à interface de rede local para que ele possa aceitar conexões de outros computadores. Você também habilitará a autenticação e criará a conta de usuário necessária para executar a migração. Finalmente, você adicionará uma conta que um aplicativo de teste pode usar para consultar o banco de dados.

  1. Para abrir o arquivo de configuração do MongoDB, execute este comando:

    sudo nano /etc/mongodb.conf
    
  2. No arquivo, localize a configuração bind_ip e defina-a como 0.0.0.0.

  3. Localize a configuração porta e defina-a como 8080.

  4. Para salvar o arquivo de configuração, pressione Esc e, em seguida, pressione CTRL + X. Pressione y e, em seguida, Enter para salvar o buffer modificado.

  5. Para reiniciar o serviço MongoDB e aplicar as alterações, digite este comando:

    sudo service mongodb restart
    
  6. Para se conectar ao serviço MongoDB, digite este comando:

    mongo --host 127.0.0.1:8080
    
  7. No prompt >, para alternar para o banco de dados admin, execute este comando:

    use admin;
    
  8. Para criar um novo usuário chamado administrador, execute o seguinte comando. Você pode inserir o comando em uma linha ou em várias linhas para melhor legibilidade. O comando é executado quando o programa mongo atinge o ponto-e-vírgula:

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

    exit;
    
  10. Para se conectar ao MongoDB com a conta do novo administrador, execute este comando:

    mongo admin -u "administrator" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  11. Para alternar para o banco de dados DeviceData, execute este comando:

    use DeviceData;    
    
  12. Para criar um usuário chamado deviceadmin, que o aplicativo usará para se conectar ao banco de dados, execute este comando:

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

    exit;
    
  14. Execute o seguinte comando: reinicie o serviço mongodb. Verifique se o serviço é reiniciado sem mensagens de erro:

    sudo service mongodb restart
    
  15. Execute o seguinte comando para verificar se agora você pode fazer login no mongodb como o usuário deviceadmin:

    mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  16. No prompt >, execute o seguinte comando para sair do shell mongo:

    exit;
    
  17. No prompt bash, execute o seguinte comando para se desconectar do servidor MongoDB e retornar ao Cloud Shell:

    exit
    

Preencher e consultar o banco de dados MongoDB

Agora você criou um servidor MongoDB e um banco de dados. A próxima etapa é demonstrar os aplicativos de exemplo que podem preencher e consultar os dados nesse banco de dados.

Criar e executar um aplicativo para preencher o banco de dados MongoDB

  1. No Azure Cloud Shell, execute o seguinte comando para baixar o código de exemplo:

    git clone https://github.com/MicrosoftLearning/DP-060T00A-Migrating-your-Database-to-Cosmos-DB migration-workshop-apps
    
  2. Vá para a pasta migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceCapture:

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture
    
  3. Use o editor Code para examinar o arquivo TemperatureDevice.cs:

    code TemperatureDevice.cs
    

    O código neste arquivo contém uma classe chamada TemperatureDevice que simula um dispositivo de temperatura capturando dados e salvando-os em um banco de dados MongoDB. Ele usa a biblioteca MongoDB para o .NET Framework. O construtor TemperatureDevice se conecta ao banco de dados usando as configurações armazenadas no arquivo de configuração do aplicativo. O método RecordTemperatures gera uma leitura e a grava no banco de dados.

  4. Feche o editor de código e, em seguida, abra o arquivo ThermometerReading.cs:

    code ThermometerReading.cs
    

    Esse arquivo mostra a estrutura dos documentos que o aplicativo armazena no banco de dados. Cada documento contém os seguintes campos:

    • Um ID de objeto. O é o campo "_id" gerado pelo MongoDB para identificar exclusivamente cada documento.
    • Um ID de dispositivo. Cada dispositivo tem um número com o prefixo "Dispositivo".
    • A temperatura registada pelo dispositivo.
    • A data e a hora em que a temperatura foi registada.
  5. Feche o editor de código e, em seguida, abra o arquivo App.config:

    code App.config
    

    Este arquivo contém as configurações para se conectar ao banco de dados MongoDB.

  6. Defina o valor da chave Endereço para o endereço IP do servidor MongoDB que você registrou anteriormente.

  7. Altere a porta que o aplicativo usa para 8080.

  8. Salve o arquivo e feche o editor usando CTRL + se, em seguida, CTRL + q.

  9. Execute o seguinte comando para reconstruir o aplicativo:

    dotnet build
    

    Isto pode demorar cerca de 5 minutos.

  10. Execute a aplicação:

    dotnet run
    

    O aplicativo simula 100 dispositivos rodando simultaneamente. Permita que o aplicativo seja executado por alguns minutos e pressione Enter para pará-lo.

Crie e execute outro aplicativo para consultar o banco de dados MongoDB

  1. Mova para a pasta DP160T00A-Migrating-your-Database-to-Cosmos-DB/MongoDeviceDataCapture/DeviceDataQuery:

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

    Esta pasta contém outro aplicativo que você pode usar para analisar os dados capturados por cada dispositivo.

  2. Use o editor Code para examinar o arquivo Program.cs:

    code Program.cs
    

    O aplicativo se conecta ao banco de dados (usando o método ConnectToDatabase na parte inferior do arquivo) e, em seguida, solicita ao usuário um número de dispositivo. O aplicativo usa a biblioteca MongoDB para o .NET Framework para criar e executar um pipeline agregado que calcula as seguintes estatísticas para o dispositivo especificado:

    • O número de leituras registadas.
    • A temperatura média registada.
    • A leitura mais baixa.
    • A leitura mais alta.
    • A última leitura.
  3. Feche o editor de código e, em seguida, abra o arquivo App.config:

    code App.config
    
  4. Defina o valor da chave Endereço para o endereço IP do servidor MongoDB que você registrou anteriormente.

  5. Altere a porta que o aplicativo usa para 8080.

  6. Salve o arquivo e feche o editor usando CTRL + se, em seguida, CTRL + q.

  7. Compile e execute o aplicativo:

    dotnet build
    dotnet run
    
  8. No prompt Enter Device Number, insira um valor entre 0 e 99. O aplicativo consultará o banco de dados, calculará as estatísticas e exibirá os resultados. Pressione Q para sair do aplicativo.

Migrar o banco de dados MongoDB para o Cosmos DB

O próximo passo é pegar o banco de dados MongoDB e transferi-lo para o Cosmos DB.

Criar uma conta e um banco de dados do Cosmos

  1. Retorne ao portal do Azure.

  2. No menu, selecione + Criar um recurso.

  3. Na página Novo, na caixa Pesquisar no Marketplace, digite *Azure Cosmos DB, end e pressione Enter.

  4. Na página Azure Cosmos DB, selecione Criar.

  5. Na página Criar Conta do Azure Cosmos DB, insira as seguintes configurações:

    Propriedade Valor
    Grupo de recursos mongodbrg
    Nome da Conta mongodb*nnn*, onde nnn é um número aleatório selecionado por você
    API (Interface de Programação de Aplicações) da API do Azure Cosmos DB para MongoDB
    Computadores portáteis Desligado
    Localização Especifique o mesmo local que você usou para o servidor MongoDB e a rede virtual
    Modo de capacidade Taxa de transferência provisionada
    Aplicar Desconto de Escalão Gratuito Aplicar
    Tipo de Conta de Não Produção
    Versão 3.6
    Georredundância Desativar
    Escritas de várias regiões Desativar
    Zonas de disponibilidade Desativar
  6. Selecione Verificar + criar.

  7. Na página de validação, selecione Criar e aguarde a implantação da conta do Cosmos DB.

  8. No menu do portal do Azure, selecione Todos os recursose, em seguida, selecione sua nova conta do Cosmos DB (mongodbnnn).

  9. Na página mongodbnnn, selecione Data Explorer.

  10. No painel Data Explorer, selecione Nova Coleção.

  11. No painel Adicionar Coleção, especifique as seguintes configurações:

    Propriedade Valor
    ID da Base de Dados Selecione Criar novoe, em seguida, digite DeviceData
    Provisionar a taxa de transferência do banco de dados selecionado
    Taxa de Transferência 10000
    ID da coleção Temperaturas
    Capacidade de armazenamento ilimitado
    Chave de estilhaços deviceID
    Minha chave de estilhaço é maior que 100 bytes Deixar desmarcado
    Criar um índice curinga em todos os campos Deixar desmarcado
    Arquivo analítico Desligado
  12. Selecione OK.

Criar o Serviço de Migração de Banco de Dados

  1. Volte para o portal do Azure.

  2. Clique em Todos os serviços, clique em Subscrições e, em seguida, clique na sua subscrição.

  3. Na página da sua subscrição, em Definições, clique em Fornecedores de recursos.

  4. Na caixa Filtrar por nome, digite DataMigration e clique em Microsoft.DataMigration.

  5. Se o Microsoft.DataMigration não estiver registrado, clique em Registrar e aguarde até que o Status mude para Registrado. Pode ser necessário clicar em Atualizar para ver a alteração de status.

  6. No menu do portal do Azure, selecione + Criar um recurso.

  7. Na página Novo, na caixa Pesquisar no Marketplace, digite Serviço de Migração de Banco de Dados do Azuree pressione Enter.

  8. Na página Serviço de Migração de Banco de Dados do Azure, selecione Criar.

  9. Na página Criar Serviço de Migração, insira as seguintes configurações:

    Propriedade Valor
    Grupo de recursos mongodbrg
    Nome do Serviço MongoDBMigration
    Localização Selecionar a mesma localização que utilizou anteriormente
    Modo de serviço Azure
    Escalão de Preço Padrão: 1 vCores
  10. Selecione Next: Networking.

  11. Na página de Rede, selecione databasevnet/defaulte, em seguida, selecione Rever + criar.

  12. Selecione Criare aguarde a implantação do serviço antes de continuar. Esta operação pode demorar cerca de 10 minutos.

Criar e executar um novo projeto de migração

  1. No menu do portal do Azure, selecione Grupos de recursos.

  2. Na janela Grupos de recursos, selecione mongodbrg.

  3. Na janela mongodbrg, selecione MongoDBMigration.

  4. Na página MongoDBMigration, selecione + Novo Projeto de Migração.

  5. Na página Novo projeto de migração, insira as seguintes configurações:

    Propriedade Valor
    Nome do projeto MigrateTemperatureData
    Tipo do servidor de origem MongoDB
    Tipo de servidor de destino Cosmos DB (API do MongoDB)
    Escolher tipo de atividade Migração de dados offline
  6. Selecione Criar e executar atividade.

  7. Quando a do Assistente para Migração de for iniciada, na página Detalhes da origem, insira os seguintes detalhes:

    Propriedade Valor
    Modo Modo padrão
    Nome do servidor de origem Especifique o valor do mongodbserver-ip endereço IP que você registrou anteriormente
    Porta do servidor 8080
    Nome de Utilizador administrador
    Palavra-passe Pa55w.rd
    Exigir SSL desmarcada
  8. Selecione Próximo: Selecionede destino .

  9. Na página Selecionar de destino, insira os seguintes detalhes:

    Propriedade Valor
    Modo Selecionar de destino do Cosmos DB
    Selecione o nome do banco de dados Comos mongodb*nnn*
    Cadeia de conexão Aceitar a cadeia de conexão gerada para sua conta do Cosmos DB
  10. Selecione Seguinte: Configuração do banco de dados.

  11. Na página de configuração do Banco de Dados, insira os seguintes detalhes:

    Propriedade Valor
    Base de dados de origem DeviceData
    Base de dados de destino DeviceData
    Taxa de transferência (RU/s) 1000
    Limpar coleções Desmarque esta caixa
  12. Selecione Next: Collection setting.

  13. Na página de configuração da Collection, selecione a seta suspensa ao lado do banco de dados DeviceData e insira os seguintes detalhes:

    Propriedade Valor
    Nome Temperaturas
    Recolha de Destino Temperaturas
    Taxa de transferência (RU/s) 1000
    Chave de estilhaços deviceID
    Único Deixar em branco
  14. Selecione Seguinte: Resumo da migração.

  15. Na página Resumo da migração, no campo Nome da atividade, insira de migração mongodb e selecione Iniciar migração.

  16. Na página de migração mongodb, selecione Atualizar a cada 30 segundos, até que a migração seja concluída. Observe o número de documentos processados.

Verificar se a migração foi bem-sucedida

  1. No menu do portal do Azure, selecione Todos os Recursos.

  2. Na página Todos os recursos, selecione mongodbnnn.

  3. Na página mongodb*nnn, selecione Data Explorer.

  4. No painel do Data Explorer, expanda o banco de dados DeviceData, expanda a coleção Temperaturas e selecione Documentos.

  5. No painel Documentos, percorra a lista de documentos. Você verá uma ID do documento (_id) e a chave de estilhaço (/deviceID) para cada documento.

  6. Selecione qualquer documento. Você deve ver os detalhes do documento exibido. Um documento típico tem esta aparência:

    {
        "_id" : ObjectId("5ce8104bf56e8a04a2d0929a"),
        "deviceID" : "Device 83",
        "temperature" : 19.65268837271849,
        "time" : 636943091952553500
    }
    
  7. Na barra de ferramentas no painel Explorador de Documentos, selecione Novo Shell.

  8. No painel Shell 1, no prompt >, digite o seguinte comando e pressione Enter:

    db.Temperatures.count()
    

    Este comando exibe o número de documentos na coleção Temperatures. Ele deve corresponder ao número relatado pelo Assistente de Migração.

  9. Digite o seguinte comando e pressione Enter:

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

    Este comando busca e exibe os documentos para o dispositivo 99.

Reconfigurar e executar aplicativos existentes para usar o Cosmos DB

A etapa final é reconfigurar seus aplicativos MongoDB existentes para se conectar ao Cosmos DB e verificar se eles ainda funcionam. Isso requer que você modifique a maneira como seus aplicativos se conectam ao banco de dados, mas a lógica de seus aplicativos deve permanecer inalterada.

  1. No painel mongodbnnn, em Configurações, selecione Cadeia de Conexão.

  2. Na página mongodbnnn Connection String, anote as seguintes configurações:

    • Anfitrião
    • Nome de utilizador
    • Palavra-passe principal
  3. Retorne à janela do Cloud Shell (reconecte-se se a sessão tiver expirado) e vá para a pasta migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery:

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
    
  4. Abra o arquivo App.config no Editor de códigos:

    code App.config
    
  5. Na seção Configurações de para MongoDB do arquivo, comente as configurações existentes.

  6. Descomente as configurações na seção Configurações de para a API Mongo do Cosmos DB e defina os valores para essas configurações da seguinte maneira:

    Configurações Valor
    Endereço O HOST da página mongodbnnn Connection String
    Porto O PORT da página mongodbnnn Connection String
    Nome de utilizador O USERNAME da página mongodbnnn Connection String
    Palavra-passe O PRIMARY PASSWORD da página mongodbnnn Connection String

    O arquivo concluído deve ser semelhante a este:

    <?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. Salve o arquivo e feche o Editor de códigos.

  8. Abra o arquivo Program.cs usando o Editor de código:

    code Program.cs
    
  9. Role para baixo até o método ConnectToDatabase.

  10. Comente a linha que define as credenciais para conexão com o MongoDB e remova o comentário das instruções que especificam as credenciais para conexão com o Cosmos DB. O código deve ter esta aparência:

    // 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
    });
    

    Essas alterações são necessárias porque o banco de dados MongoDB original não estava usando uma conexão SSL. O Cosmos DB sempre usa SSL.

  11. Salve o arquivo e feche o Editor de códigos.

  12. Reconstrua e execute o aplicativo:

    dotnet build
    dotnet run
    
  13. No prompt Digite o número do dispositivo, insira um número de dispositivo entre 0 e 99. O aplicativo deve ser executado exatamente como antes, exceto que desta vez ele está usando os dados mantidos no banco de dados do Cosmos DB.

Melhorar o desempenho da consulta no Cosmos DB

O Cosmos DB permite adicionar mais índices para melhorar o desempenho da consulta. Como estamos agregando sobre deviceID, adicionar esse campo como um índice acelerará suas consultas.

  1. Volte para o portal do Azure.

  2. À esquerda, selecione Data Explorer.

  3. No painel do Data Explorer, expanda o banco de dados DeviceData, expanda a coleção Temperaturas e selecione Configurações.

    Captura de tela mostrando a adição de uma política de indexação do Cosmos DB.

  4. Selecione política de indexação.

  5. Em _id adicionar um novo índice, insira deviceID para o Definição dee selecione de Campo Único para o Tipo de.

  6. Selecione Salvar para adicionar o novo índice.

  7. Retorne ao Cloud Shell para tentar sua consulta novamente e observe a resposta aprimorada em seu aplicativo.

  8. Teste o aplicativo com outros números de dispositivo. Digite Q para terminar.

Você migrou com êxito um banco de dados MongoDB para o Cosmos DB e reconfigurou um aplicativo MongoDB existente para se conectar ao novo banco de dados do Cosmos DB.

Limpe os recursos que você criou

Importante

Se você executou essas etapas em sua própria assinatura pessoal, poderá excluir os recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos. Os recursos deixados em funcionamento podem custar-lhe dinheiro.

  1. Usando o Cloud Shell, execute este comando para excluir o grupo de recursos:

    az group delete --name mongodbrg