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

Concluído

Trabalha para uma empresa de serviços públicos que tem sensores IoT que recolhem dados de temperatura. As temperaturas estão registadas numa base de dados mongoDB, juntamente com uma hora de tensão. Cada dispositivo tem uma identificação única. Você executará uma aplicação MongoDB que simula estes dispositivos, e armazena os dados na base de dados. Também utilizará uma segunda aplicação que permite ao utilizador consultar informações estatísticas sobre cada dispositivo. Depois de migrar a base de dados de MongoDB para Cosmos DB, irá configurar ambas as aplicações para ligar ao Cosmos DB, e verificar se ainda funcionam corretamente.

Neste exercício, você pegará numa base de dados mongoDB existente e migrará para Cosmos DB. Utilizará o Serviço de Migração da Base de Dados Azure. Você também verá como reconfigurar as aplicações existentes que usam a base de dados MongoDB para ligar à base de dados cosmos DB em vez disso.

Importante

O Serviço de Migração de Dados Azure não é suportado no ambiente gratuito da caixa de areia Azure. Pode executar estes passos na sua subscrição pessoal, ou apenas seguir em frente para entender como migrar a sua base de dados.

Criar uma base de dados MongoDB em Azure

Primeiro, irá criar a base de dados MongoDB para guardar os dados capturados dos dispositivos de temperatura.

Criar um Grupo de Recursos e Rede Virtual

  1. Utilizando um navegador web, abra um novo separador e navegue para o portal Azure.

  2. No portal Azure, selecione grupos de recursos e, em seguida, selecione +Add.

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

    Propriedade Valor
    Subscrição <your-subscription>
    Grupo de Recursos mongodbrg
    Region Selecione a localização mais próxima de si
  4. Selecione 'Rever + Criar' e, em seguida, selecione Criar. Aguarde a criação do grupo de recursos.

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

  6. Na página Nova, na caixa De Procurar o Mercado, escrever Rede Virtual e pressionar Enter.

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

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

    Propriedade Valor
    Grupo de Recursos mongodbrg
    Name rede de base de dados
    Region Selecione o mesmo local especificado para o grupo de recursos
  9. Na página endereços IP, desabrava o espaço de endereço IPv4 para 10.0.0.0/24.

  10. Selecione a sub-rede predefinitiva e, em seguida, selecione Remover sub-rede.

  11. Selecione + Adicionar a sub-rede. No painel de sub-redes Add, deslote o nome sub-rede por defeito, deslote o intervalo de endereços sub-rede para 10.0.0.0/28, e, em seguida, selecione Adicionar.

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

  13. Na página de Segurança, verifique se a Norma de Proteção DDoS está definida para Desativar, e firewall está definida para Desativar. Selecione Rever + criar.

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

Criar um servidor de base de dados MongoDB

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

  2. Na caixa De Pesquisa no Mercado, digite Ubuntu e, em seguida, prima Enter.

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

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

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

    Propriedade Valor
    Grupo de Recursos mongodbrg
    Nome da máquina virtual mongodbserver
    Region 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 Desselecionado
    Tamanho A1_v2 padrão
    Tipo de autenticação Palavra-passe
    Nome de utilizador azureuser
    Palavra-passe Pa55w.rdPa55w.rd
    Confirmar palavra-passe Pa55w.rdPa55w.rd
    Portas de entrada públicas Permitir portas selecionadas
    Selecione as portas de entrada SSH (22)
  6. Selecione Seguinte: Discos >.

  7. Na página Discos, deixe as definições no seu padrão e, em seguida, selecione Seguinte: > Networking.

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

    Propriedade Valor
    Rede virtual rede de base de dados
    Sub-rede padrão (10.0.0.0/28)
    IP público (novo) mongodbserver-ip
    Grupo de segurança de rede NIC Avançado
    Configure grupo de segurança de rede (novo) mongodbserver-nsg
    Redes aceleradas Desselecionado
    Balanceamento de carga Desselecionado
  9. Selecione Review + criar >.

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

  11. Aguarde que a máquina virtual seja implantada antes de continuar

  12. Na ementa do portal Azure, selecione Todos os recursos.

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

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

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

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

    Propriedade Valor
    Origem Qualquer
    Intervalo de portas de origem *
    Destino Qualquer
    Intervalos de portas de destino 8080
    Protocolo Qualquer
    Ação Permitir
    Prioridade 1030
    Name Porto de Mongodb
    Descrição Porto que os clientes usam para ligar ao MongoDB
  17. Selecione Adicionar.

Nota

Você vai configurar MongoDB para usar a porta 8080 neste exercício. Só precisa fazê-lo devido a restrições de segurança neste ambiente. Normalmente utilizaria a porta MongoDB padrão de 27017.

Instalar o MongoDB

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

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

  3. Na página mongodbserver-ip, tome nota do endereço IP.

  4. Na barra de ferramentas no topo do portal Azure, selecione Cloud Shell.

  5. Se não tiver uma caixa de mensagens montada no armazenamento, selecione Criar armazenamento.

  6. Quando a Cloud Shell começar, na lista de queda acima da janela Cloud Shell, selecione Bash.

  7. Na Cloud Shell, insira o seguinte comando para ligar à máquina virtual mongodbserver. <ip address> Substitua-o pelo valor do endereço IP mongodbserver-ip:

    ssh azureuser@<ip address>
    
  8. Na origem, escreva sim para continuar a ligar.

  9. Introduza a palavra-passe Pa55w.rdPa55w.rd.

  10. Para recarregar a base de dados de pacotes, insira este comando:

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

    sudo apt-get install -y mongodb
    

    A instalação deve proceder a mensagens sobre a instalação, preparação e desembalagem de embalagens. Pode levar alguns minutos para a instalação estar concluída.

Configure a base de dados mongoDB

Por predefinição, a instância DB de Mongo está configurada para funcionar sem autenticação. Nesta tarefa, irá configurar o MongoDB para se ligar à interface de rede local para que possa aceitar ligações de outros computadores. Também irá ativar a autenticação e criar a conta de utilizador necessária para realizar a migração. Finalmente, irá adicionar uma conta que uma aplicação de teste pode usar para consultar a base de dados.

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

    sudo nano /etc/mongodb.conf
    
  2. No ficheiro, localize a definição bind_ip e defina-a para 0.0.0.0.

  3. Localize a definição da porta e coloque-a em 8080.

  4. Para guardar o ficheiro de configuração, prima esc e, em seguida, prima CTRL + X. Pressione y e, em seguida, insira para guardar o tampão modificado.

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

    sudo service mongodb restart
    
  6. Para ligar ao serviço MongoDB, insira este comando:

    mongo --host 127.0.0.1:8080
    
  7. A > pedido, para mudar para a base de dados de administração, executar este comando:

    use admin;
    
  8. Para criar um novo administrador nomeado por utilizador, executar o seguinte comando. Pode introduzir o comando numa linha ou em várias linhas para uma melhor legibilidade. O comando é executado quando o mongo programa chega ao 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 mongo programa, insira este comando;

    exit;
    
  10. Para ligar 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 mudar para a base de dados DeviceData, execute este comando:

    use DeviceData;    
    
  12. Para criar um utilizador chamado deviceadmin, que a aplicação utilizará para ligar à base de dados, execute este comando:

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

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

    sudo service mongodb restart
    
  15. Executar o seguinte comando para verificar se pode agora iniciar sessão no mongodb como utilizador do deviceadmin:

    mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  16. No > momento, executar o seguinte comando para deixar a concha de Mongo:

    exit;
    
  17. Na hora da festa, executar o seguinte comando para desligar do servidor MongoDB e voltar para a Cloud Shell:

    exit
    

Povoar e consultar a base de dados mongoDB

Criou agora um servidor e base de dados mongoDB. O próximo passo é demonstrar as aplicações de amostra que podem povoar e consultar os dados nesta base de dados.

Construa e execute uma App para povoar a base de dados mongoDB

  1. Na Azure Cloud Shell, executar o seguinte comando para descarregar o código de amostra:

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

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture
    
  3. Utilize o editor de código para examinar o ficheiro TemperatureDevice.cs:

    code TemperatureDevice.cs
    

    O código deste ficheiro contém uma classe chamada TemperatureDevice que simula um dispositivo de temperatura capturando dados e guardando-os numa base de dados do MongoDB. Utiliza a biblioteca MongoDB para o Quadro .NET. O construtor TemperatureDevice liga-se à base de dados utilizando as definições armazenadas no ficheiro de configuração da aplicação. O método RecordTemperatures gera uma leitura e escreve-a na base de dados.

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

    code ThermometerReading.cs
    

    Este ficheiro mostra a estrutura dos documentos que a aplicação armazena na base de dados. Cada documento contém os seguintes campos:

    • Uma identificação de objeto. O campo "_id" gerado pela MongoDB para identificar de forma única cada documento.
    • Uma identificação do 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 ficheiro App.config:

    code App.config
    

    Este ficheiro contém as definições para a ligação à base de dados MongoDB.

  6. Defina o valor da chave De endereço ip do servidor MongoDB que gravou anteriormente.

  7. Mude a porta que a aplicação utiliza para 8080.

  8. Guarde o ficheiro e feche o editor utilizando CTRL + s , e, em seguida, CTRL + q.

  9. Executar o seguinte comando para reconstruir a aplicação:

    dotnet build
    

    Isto pode demorar cerca de 5 minutos.

  10. Execute a aplicação:

    dotnet run
    

    A aplicação simula 100 dispositivos em execução simultaneamente. Deixe a aplicação funcionar durante alguns minutos e, em seguida, prima Enter para o parar.

Construa e execute outra app para consultar a base de dados mongoDB

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

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

    Esta pasta contém outra aplicação que pode utilizar para analisar os dados capturados por cada dispositivo.

  2. Utilize o editor de código para examinar o ficheiro Program.cs:

    code Program.cs
    

    A aplicação liga-se à base de dados (utilizando o método ConnectToDatabase na parte inferior do ficheiro) e, em seguida, solicita ao utilizador um número de dispositivo. A aplicação utiliza a biblioteca MongoDB para o quadro .NET para criar e executar um gasoduto 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 ficheiro App.config:

    code App.config
    
  4. Defina o valor da chave De endereço ip do servidor MongoDB que gravou anteriormente.

  5. Mude a porta que a aplicação utiliza para 8080.

  6. Guarde o ficheiro e feche o editor utilizando CTRL + s , e, em seguida, CTRL + q.

  7. Construa e execute a aplicação:

    dotnet build
    dotnet run
    
  8. Na indicação 'Introduzir o número do dispositivo', insira um valor entre 0 e 99. A aplicação irá consultar a base de dados, calcular as estatísticas e apresentar os resultados. Pressione Q para desistir do pedido.

Migrar a Base de Dados mongoDB para cosmos DB

O próximo passo é pegar na base de dados mongoDB e transferi-la para a Cosmos DB.

Criar uma conta e base de dados cosmos

  1. Regresse ao portal do Azure.

  2. No menu, selecione + Criar um recurso.

  3. Na página Nova, na caixa De Pesquisa do Mercado, escreva *Azure Cosmos DB, termine e pressione Enter.

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

  5. Na página 'Criar Azure Cosmos DB' insira as seguintes definições:

    Propriedade Valor
    Grupo de recursos mongodbrg
    Nome da Conta mongodb * * nnn, onde nnn é um número aleatório selecionado por você
    API API do Azure Cosmos DB para MongoDB
    Notebooks Desligado
    Localização Especifique a mesma localização que usou para o servidor MongoDB e rede virtual
    Modo de capacidade Débito aprovisionado
    Aplicar Desconto de Escalão Gratuito Aplicar
    Tipo de Conta Não Produção
    Versão 3.6
    Redundância Geográfica Desativar
    Escritas de várias regiões Desativar
    Zonas de Disponibilidade Desativar
  6. Selecione Rever + criar.

  7. Na página de validação, selecione Criar e aguarde que a conta Descosi o cosmos seja implantada.

  8. No menu do portal Azure, selecione Todos os recursos e, em seguida, selecione a sua nova conta Cosmos DB (mongodb nnn***).

  9. Na página mongodbnnn selecione Data Explorer.

  10. No painel data explorer, selecione New Collection.

  11. No painel Add Collection, especifique as seguintes definições:

    Propriedade Valor
    ID da base de dados Selecione Criar novo, e depois digite O DeviceData
    Aprovisionar débito de base de dados selecionado
    Débito 10000
    ID da coleção Temperaturas
    Capacidade de armazenamento Ilimitado
    Chave de fragmento deviceID
    A minha chave de fragmentos é maior que 100 bytes deixar deses selecionado
    Criar um Índice Wildcard em todos os campos deixar deses selecionado
    Loja analítica Desligado
  12. Selecione OK.

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

  1. Regresse ao portal do Azure.

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

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

  4. Na caixa de identificação filter por nome, digite DataMigration e, em seguida, clique em Microsoft.DataMigration.

  5. Se a Microsoft.DataMigration não estiver registada, clique em Registar e aguarde que o Estado mude para Registrado. Pode ser necessário clicar em Refresh para ver a mudança de estado.

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

  7. Na página Nova, na caixa De Pesquisa do Mercado, escreva O Serviço de Migração da Base de Dados Azure e, em seguida, prima Enter.

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

  9. Na página 'Criar Serviço de Migração', insira as seguintes definiçõ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 Seguinte: Rede.

  11. Na página networking, selecione databasevnet/predefinição, em seguida, selecione Review + create.

  12. Selecione Criar e aguarde que o serviço seja implantado 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 Azure, selecione Grupos de Recursos.

  2. Na janela dos grupos de recursos, selecione mongodbrg.

  3. Na janela de Mongodbrg, selecione MongoDBMigration.

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

  5. Na página do novo projeto de migração, insira as seguintes definições:

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

  7. Quando o Assistente de Migração começar, na página de detalhes da Fonte, insira os seguintes detalhes:

    Propriedade Valor
    Modo Modo padrão
    Nome do servidor de origem Especificar o valor do endereço IP mongodbserver-ip que gravou anteriormente
    Porta do servidor 8080
    Nome de Utilizador administrador
    Palavra-passe Pa55w.rd
    Exigir SSL deses selecionado
  8. Selecione Seguinte: Selecione o alvo.

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

    Propriedade Valor
    Modo Selecione o alvo do Cosmos DB
    Selecione nome DB comos mongodb * nnn*
    Cadeia de ligação Aceite a cadeia de ligação gerada para a sua conta Cosmos DB
  10. Selecione Seguinte: Definição de base de dados.

  11. Na página de definição da Base de Dados, introduza os seguintes detalhes:

    Propriedade Valor
    Base de Dados de Origem Dados do Dispositivo
    Base de Dados-Alvo Dados do Dispositivo
    Produção (RU/s) 1000
    Limpe as coleções Limpe esta caixa
  12. Selecione Seguinte: Configuração de recolha.

  13. Na página de definição de recolha, selecione a seta dropdown pela base de dados DeviceData, introduza os seguintes detalhes:

    Propriedade Valor
    Nome Temperaturas
    Coleção Alvo Temperaturas
    Produção (RU/s) 1000
    Chave de fragmentos deviceID
    Exclusivo Deixar em branco
  14. Selecione Seguinte: Resumo da migração.

  15. Na página do resumo da migração, no campo de nomes de Atividade, insira a migração de mongodb e, em seguida, selecione Iniciar a migração.

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

Verifique se a migração foi bem sucedida

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

  2. Na página De Todos os recursos, selecione mongodb nnn***

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

  4. No painel data Explorer, expanda a base de dados DeviceData, expanda a recolha de Temperaturas e, em seguida, selecione Documentos.

  5. No painel documentos, percorra a lista de documentos. Deve ver um documento id (_id) e a tecla de fragmento (/deviceID) para cada documento.

  6. Selecione qualquer documento. Deve ver os detalhes do documento apresentado. Um documento típico é assim:

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

  8. No painel Shell 1, no > pedido, introduza o seguinte comando e, em seguida, prima Enter:

    db.Temperatures.count()
    

    Este comando apresenta o número de documentos na recolha Temperaturas. Deve corresponder ao número reportado pelo Assistente de Migração.

  9. Introduza o seguinte comando e, em seguida, prima Insira:

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

    Este comando recolhe e exibe os documentos do Dispositivo 99.

Reconfigure e executar aplicações existentes para usar Cosmos DB

O passo final é reconfigurar as aplicações mongoDB existentes para ligar ao Cosmos DB, e verificar se ainda funcionam. Isto requer que você modifique a forma como as suas aplicações se ligam à base de dados, mas a lógica das suas aplicações deve permanecer inalterada.

  1. No painel mongodbnnn em Definições, selecione Connection String.

  2. Na página mongodb nnn Connection String**, tome nota das seguintes definições:

    • Anfitrião
    • Nome de utilizador
    • Senha primária
  3. Volte à janela Cloud Shell (volte a ligar se a sessão tiver esgotado o tempo) e passe para a pasta migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery:

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
    
  4. Abra o ficheiro App.config no editor de código:

    code App.config
    
  5. Nas Definições para a secção MongoDB do ficheiro, comente as definições existentes.

  6. Descompromete as definições na secção API da Cosmos DB Mongo e defina os valores para estas definições da seguinte forma:

    Definição Valor
    Endereço O ANFITRIÃO da página mongodb nnn Connection String**
    Porta O PORT da página mongodb nnn Connection String**
    Nome de utilizador O USERNAME da página mongodb nnn Connection String**
    Palavra-passe A PALAVRA-PASSE PRIMÁRIA da página mongodb nnn Connection String**

    O ficheiro preenchido 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. Guarde o ficheiro e feche o editor de código.

  8. Abra o ficheiro Program.cs utilizando o editor de código:

    code Program.cs
    
  9. Desloque-se até ao método ConnectToDatabase.

  10. Comente a linha que define as credenciais para a ligação ao MongoDB, e descompromete as declarações que especificam as credenciais para a ligação ao Cosmos DB. O código deve ser assim:

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

    Estas alterações são necessárias porque a base de dados mongoDB original não estava a utilizar uma ligação SSL. Cosmos DB usa sempre SSL.

  11. Guarde o ficheiro e feche o editor de código.

  12. Reconstruir e executar a aplicação:

    dotnet build
    dotnet run
    
  13. Na indicação 'Introduzir o número do dispositivo', introduza um número de dispositivo entre 0 e 99. A aplicação deve ser executada exatamente como antes, exceto desta vez está a utilizar os dados guardados na base de dados do Cosmos DB.

Melhorar o desempenho da consulta no Cosmos DB

Cosmos DB permite-lhe adicionar mais índices para melhorar o desempenho da consulta. Como estamos a agregar sobre o dispositivoID adicionando que o campo como um índice irá acelerar as suas consultas.

  1. Regresse ao portal do Azure.

  2. À esquerda, selecione Data Explorer.

  3. No painel data Explorer, expanda a base de dados DeviceData, expanda a recolha de Temperaturas e, em seguida, selecione Definições.

    Screenshot mostrando a adição de uma política de indexação de DB cosmos.

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

  5. Sob _id adicione um novo índice, introduza o dispositivoID para a definição e selecione Single Field para o Tipo.

  6. Selecione Guardar para adicionar o novo índice.

  7. Volte à sua Cloud Shell para tentar novamente a sua consulta e note a resposta melhorada na sua aplicação.

  8. Teste a aplicação com outros números do dispositivo. Insira Q para terminar.

Você conseguiu migrar uma base de dados MongoDB para Cosmos DB, e reconfigurou uma aplicação mongoDB existente para ligar à nova base de dados cosmos DB.

Limpe os recursos que criou

Importante

Se executou estes passos na sua subscrição pessoal, pode eliminar os recursos individualmente ou eliminar o grupo de recursos para eliminar todo o conjunto de recursos. Os recursos que deixar em execução podem custar-lhe dinheiro.

  1. Utilizando o Cloud Shell execute este comando para eliminar o grupo de recursos:

    az group delete --name mongodbrg