Etapas de pré-migração para migrações de dados do MongoDB para o Azure Cosmos DB para MongoDB
APLICA-SE A: MongoDB
Importante
Leia este guia completo antes de executar as etapas de pré-migração.
Este guia de pré-migração do MongoDB faz parte da série sobre migração do MongoDB. As etapas críticas de migração do MongoDB são pré-migração, migração e pós-migração, conforme mostrado neste guia.
Visão geral da pré-migração
É fundamental realizar um certo planejamento inicial e tomada de decisões sobre sua migração antes de realmente mover quaisquer dados. Este processo inicial de tomada de decisão é a "pré-migração".
Seu objetivo na pré-migração é:
- Certifique-se de configurar o Azure Cosmos DB para atender aos requisitos do seu aplicativo e
- Planeje como você executa a migração.
Siga estas etapas para executar uma pré-migração completa
- Descubra seus recursos existentes do MongoDB e avalie a prontidão de seus recursos existentes do MongoDB para migração de dados
- Mapeie seus recursos existentes do MongoDB para novos recursos do Azure Cosmos DB
- Planeje a logística do processo de migração de ponta a ponta, antes de iniciar a migração de dados em grande escala
Em seguida, execute a migração de acordo com seu plano de pré-migração.
Finalmente, execute as etapas críticas pós-migração de transferência e otimização.
Todas as etapas acima são essenciais para garantir uma migração bem-sucedida.
Ao planejar uma migração, recomendamos que, sempre que possível, planeje no nível por recurso.
Avaliação pré-migração
A primeira etapa pré-migração é descobrir seus recursos existentes do MongoDB e avaliar a prontidão de seus recursos para migração.
A descoberta envolve a criação de uma lista abrangente dos recursos existentes (bancos de dados ou coleções) em sua propriedade de dados do MongoDB.
A avaliação envolve descobrir se você está usando os recursos e a sintaxe suportados. Também inclui certificar-se de que está a respeitar os limites e as quotas. O objetivo desta etapa é criar uma lista de incompatibilidades e avisos, se houver. Depois de obter os resultados da avaliação, você pode tentar abordar as descobertas durante o restante do planejamento da migração.
Há 3 maneiras de concluir a avaliação de pré-migração, recomendamos que você use a extensão Azure Cosmos DB Migration for MongoDB.
Migração do Azure Cosmos DB para extensão MongoDB
A extensão Azure Cosmos DB Migration for MongoDB no Azure Data Studio ajuda você a avaliar uma carga de trabalho do MongoDB para migrar para o Azure Cosmos DB for MongoDB. Você pode usar essa extensão para executar uma avaliação de ponta a ponta em sua carga de trabalho e descobrir as ações que talvez seja necessário executar para migrar perfeitamente suas cargas de trabalho no Azure Cosmos DB. Durante a avaliação de um endpoint do MongoDB, a extensão relata todos os recursos descobertos.
Nota
Recomendamos que você examine os recursos e a sintaxe suportados, os limites e as cotas do Azure Cosmos DB em detalhes, bem como execute uma prova de conceito antes da migração real.
Descoberta manual (legado)
Como alternativa, você pode criar uma planilha de migração de propriedade de dados. O objetivo desta planilha é melhorar sua produtividade e ajudá-lo a planejar a migração de ponta a ponta e usá-la como um documento de acompanhamento durante todo o processo de migração.
- Esta folha contém uma lista abrangente dos recursos existentes (bancos de dados ou coleções) em sua propriedade de dados do MongoDB.
- A planilha deve ser estruturada como um registro de seus recursos de propriedade de dados, em forma de lista.
- Cada linha corresponde a um recurso (banco de dados ou coleção).
- Cada coluna corresponde a uma propriedade do recurso; comece com pelo menos nome e tamanho de dados (GB) como colunas.
- À medida que avança neste guia, você cria essa planilha em um documento de acompanhamento para seu planejamento de migração de ponta a ponta, adicionando colunas conforme necessário.
Aqui estão algumas ferramentas que você pode usar para descobrir recursos:
Percorra a planilha e verifique cada coleção em relação aos recursos e sintaxe suportados e aos limites e cotas do Azure Cosmos DB em detalhes.
Utilitário Assistente de Migração de Banco de Dados (legado)
Nota
O Assistente de Migração de Banco de Dados é um utilitário herdado destinado a ajudá-lo com as etapas de pré-migração. Recomendamos que você use a extensão Azure Cosmos DB Migration for MongoDB para todas as etapas de pré-migração.
Você pode usar o utilitário DMA (Assistente de Migração de Banco de Dados) para ajudá-lo com as etapas de pré-migração.
Mapeamento pré-migração
Com as etapas de descoberta e avaliação concluídas, você termina com o lado MongoDB da equação. Agora é hora de planejar o lado do Azure Cosmos DB da equação. Como você está planejando instalar e configurar seus recursos de produção do Azure Cosmos DB? Faça seu planejamento em um nível por recurso – isso significa que você deve adicionar as seguintes colunas à sua planilha de planejamento:
- Mapeamento do Azure Cosmos DB
- Chave de estilhaços
- Modelo de dados
- Taxa de transferência dedicada vs compartilhada
Mais detalhes são fornecidos nas seções a seguir.
Planeamento da capacidade
Tentando fazer o planejamento de capacidade para uma migração para o Azure Cosmos DB?
- Se tudo o que você sabe é o número de vCores e servidores em seu cluster de banco de dados existente, leia sobre como estimar unidades de solicitação usando vCores ou vCPUs
- Se você souber as taxas de solicitação típicas para sua carga de trabalho de banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB
Considerações ao usar a API do Azure Cosmos DB para MongoDB
Antes de planejar sua propriedade de dados do Azure Cosmos DB, certifique-se de entender os seguintes conceitos do Azure Cosmos DB:
- Modelo de capacidade: a capacidade do banco de dados no Azure Cosmos DB é baseada em um modelo baseado em taxa de transferência. Esse modelo é baseado em Unidades de Solicitação por segundo, que é uma unidade que representa o número de operações de banco de dados que podem ser executadas em relação a uma coleção por segundo. Essa capacidade pode ser alocada em um banco de dados ou nível de coleção, e pode ser provisionada em um modelo de alocação ou usando a taxa de transferência provisionada em escala automática.
- Unidades de Solicitação: cada operação de banco de dados tem um custo de Unidades de Solicitação (RUs) associado no Azure Cosmos DB. Quando executadas, as unidades de solicitação são subtraídas do nível de unidades de solicitação disponíveis em um determinado segundo. Se uma solicitação exigir mais RUs do que as RU/s atualmente alocadas, há duas opções para resolver o problema - aumentar o número de RUs ou esperar até que o próximo segundo seja iniciado e, em seguida, tente novamente a operação.
- Capacidade elástica: a capacidade de uma determinada coleção ou banco de dados pode ser alterada a qualquer momento. Essa flexibilidade permite que o banco de dados se adapte elasticamente aos requisitos de taxa de transferência de sua carga de trabalho.
- Fragmentação automática: o Azure Cosmos DB fornece um sistema de particionamento automático que requer apenas um fragmento (ou uma chave de partição). O mecanismo de particionamento automático é compartilhado em todas as APIs do Azure Cosmos DB e permite dados contínuos e todo o dimensionamento por meio da distribuição horizontal.
Planejar a propriedade de dados do Azure Cosmos DB
Descubra quais recursos do Azure Cosmos DB você cria. Esse processo requer percorrer sua planilha de migração de propriedade de dados e mapear cada recurso existente do MongoDB para um novo recurso do Azure Cosmos DB.
- Antecipe que cada banco de dados MongoDB se torne um banco de dados do Azure Cosmos DB.
- Antecipe que cada coleção MongoDB se torne uma coleção do Azure Cosmos DB.
- Escolha uma convenção de nomenclatura para seus recursos do Azure Cosmos DB. Manter os mesmos nomes de recursos geralmente é uma boa escolha, a menos que haja alterações na estrutura de bancos de dados e coleções.
- Determine se você está usando coleções fragmentadas ou não fragmentadas no Azure Cosmos DB. O limite de coleta não fragmentado é de 20 GB. O compartilhamento, por outro lado, ajuda a alcançar uma escala horizontal que é crítica para o desempenho de muitas cargas de trabalho.
- Se estiver usando coleções fragmentadas, não assuma que sua chave de fragmento de coleção do MongoDB se torne sua chave de partição de contêiner do Azure Cosmos DB. Não assuma que sua estrutura de documento de modelo de dados MongoDB existente deve ser o mesmo modelo que você emprega no Azure Cosmos DB.
- A chave de estilhaço é a configuração mais importante para otimizar a escalabilidade e o desempenho do Azure Cosmos DB, e a modelagem de dados é a segunda mais importante. Ambas as configurações são imutáveis e não podem ser alteradas depois de definidas; portanto, é muito importante otimizá-los na fase de planejamento. Siga as orientações na seção Decisões imutáveis para obter mais informações.
- O Azure Cosmos DB não reconhece determinados tipos de coleção MongoDB, como coleções limitadas. Para esses recursos, basta criar coleções normais do Azure Cosmos DB.
- O Azure Cosmos DB tem dois tipos de coleção próprios: taxa de transferência compartilhada e dedicada. A taxa de transferência compartilhada versus dedicada é outra decisão crítica e imutável, que é vital tomar na fase de planejamento. Siga as orientações na seção Decisões imutáveis para obter mais informações.
Decisões imutáveis
As seguintes opções de configuração do Azure Cosmos DB não podem ser modificadas ou desfeitas depois de criar um recurso do Azure Cosmos DB; Portanto, é importante acertar essas opções de configuração durante o planejamento pré-migração, antes de iniciar qualquer migração:
- Consulte Particionamento e dimensionamento horizontal no Azure Cosmos DB para escolher a melhor chave de estilhaço. O particionamento, também conhecido como Sharding, é um ponto-chave de consideração antes de migrar dados. O Azure Cosmos DB usa particionamento totalmente gerenciado para aumentar a capacidade em um banco de dados para atender aos requisitos de armazenamento e taxa de transferência. Esse recurso não precisa de hospedagem ou configuração de servidores de roteamento.
- Da mesma forma, a capacidade de particionamento adiciona automaticamente capacidade e reequilibra os dados de acordo. Para obter mais informações sobre como escolher a chave de partição certa para seus dados, consulte Escolhendo uma chave de partição.
- Siga o guia de modelagem de dados no Azure Cosmos DB para escolher um modelo de dados.
- Siga Otimizar o custo da taxa de transferência provisionada no Azure Cosmos DB para escolher entre taxa de transferência dedicada e compartilhada para cada recurso migrado
- Como modelar e particionar dados no Azure O Cosmos DB usando um exemplo do mundo real é um exemplo real de fragmentação e modelagem de dados para ajudá-lo em seu processo de tomada de decisão
Custo de propriedade
- Estime o custo de propriedade de seus novos recursos do Azure Cosmos DB usando a calculadora de capacidade do Azure Cosmos DB.
Estimativa da taxa de transferência
No Azure Cosmos DB, a taxa de transferência é provisionada antecipadamente e medida em Unidades de Solicitação (RUs) por segundo. Ao contrário das VMs ou dos servidores locais, as RUs são fáceis de aumentar e diminuir a escala a qualquer momento. Você pode alterar o número de RUs provisionadas instantaneamente. Para obter mais informações, consulte Unidades de solicitação no Azure Cosmos DB.
Você pode usar a calculadora de capacidade do Azure Cosmos DB para determinar o número de Unidades de Solicitação que você deve usar. Esse número é baseado na configuração da conta do banco de dados, na quantidade de dados, no tamanho do documento e nas leituras e gravações necessárias por segundo.
A seguir estão os principais fatores que afetam o número de RUs necessárias:
Tamanho do documento: À medida que o tamanho de um item/documento aumenta, o número de RUs consumidos para ler ou gravar o item/documento também aumenta.
Contagem de propriedades do documento:O número de RUs consumidas para criar ou atualizar um documento está relacionado ao número, complexidade e comprimento de suas propriedades. Você pode reduzir o consumo de unidade de solicitação para operações de gravação limitando o número de propriedades indexadas.
Padrões de consulta: a complexidade de uma consulta afeta quantas unidades de solicitação a consulta consome.
A melhor maneira de entender o custo das consultas é usar dados de exemplo no Azure Cosmos DB e executar consultas de exemplo do Shell do MongoDB usando o
getLastRequestStastistics
comando para obter a carga de solicitação, que gera o número de RUs consumidas:db.runCommand({getLastRequestStatistics: 1})
*Este comando gera um documento JSON semelhante ao exemplo a seguir:
{ "_t": "GetRequestStatisticsResponse", "ok": 1, "CommandName": "find", "RequestCharge": 10.1, "RequestDurationInMilliSeconds": 7.2 }
Você também pode usar as configurações de diagnóstico para entender a frequência e os padrões das consultas executadas no Azure Cosmos DB. Os resultados dos logs de diagnóstico podem ser enviados para uma conta de armazenamento, uma instância de Hubs de Eventos ou o Azure Log Analytics.
Planeamento logístico pré-migração
Finalmente, agora que você tem uma exibição de sua propriedade de dados existente e um design para sua nova propriedade de dados do Azure Cosmos DB, está pronto para planejar como executar seu processo de migração de ponta a ponta. Mais uma vez, faça seu planejamento em um nível por recurso , adicionando colunas à sua planilha para capturar as dimensões logísticas incluídas nesta seção.
Logística de execução
Atribua a responsabilidade pela migração de cada recurso existente do MongoDB para o Azure Cosmos DB. A forma como você aplica os recursos da sua equipe para conduzir sua migração até a conclusão depende de você. Para pequenas migrações, você pode fazer com que uma equipe inicie toda a migração e monitore seu progresso. Para migrações maiores, você pode atribuir responsabilidade aos membros da equipe por recurso para migrar e monitorar esse recurso.
Depois de atribuir a responsabilidade pela migração de seus recursos, agora você deve escolher a(s) ferramenta(s) de migração correta(s) para migração. Para pequenas migrações, você poderá usar uma ferramenta de migração, como uma ferramenta nativa do MongoDB ou o Azure DMS, para migrar todos os seus recursos de uma só vez. Para migrações maiores ou migrações com requisitos especiais, convém escolher ferramentas de migração com uma granularidade por recurso.
Antes de planejar quais ferramentas de migração usar, recomendamos que você se familiarize com as opções disponíveis. O Serviço de Migração de Banco de Dados do Azure para a API do Azure Cosmos DB para MongoDB fornece um mecanismo que simplifica a migração de dados fornecendo uma plataforma de hospedagem totalmente gerenciada, opções de monitoramento de migração e tratamento automático de limitação. Aqui está uma lista completa de opções:
Tipo de migração Solução Considerações Online Azure Database Migration Service • Usa a biblioteca de executores em massa para o Azure Cosmos DB
• Adequado para grandes conjuntos de dados e cuida da replicação de alterações em tempo real
• Funciona apenas com outras fontes do MongoDBOffline Azure Database Migration Service • Usa a biblioteca de executores em massa para o Azure Cosmos DB
• Adequado para grandes conjuntos de dados e cuida da replicação de alterações em tempo real
• Funciona apenas com outras fontes do MongoDBOffline Fábrica de Dados do Azure • Usa a biblioteca de executores em massa para o Azure Cosmos DB
• Adequado para grandes conjuntos de dados
• Fácil de configurar e suporta várias fontes
• A falta de pontos de verificação significa que qualquer problema durante a migração exigiria uma reinicialização de todo o processo de migração
• A falta de uma fila de mensagens mortas significaria que alguns arquivos errados poderiam interromper todo o processo de migração
• Precisa de código personalizado para aumentar a taxa de transferência de leitura para determinadas fontes de dadosOffline Ferramentas Mongo existentes (mongodump, mongorestore, Studio3T) • Fácil configuração e integração
• Necessita de manuseamento personalizado para aceleradoresOffline/online Azure Databricks e Spark • Controle total da taxa de migração e transformação de dados
• Requer codificação personalizadaSe o recurso puder tolerar uma migração offline, use este diagrama para escolher a ferramenta de migração apropriada:
Se o seu recurso exigir uma migração online, use este diagrama para escolher a ferramenta de migração apropriada:
Assista a um vídeo de visão geral e demonstração das soluções de migração.
Depois de escolher as ferramentas de migração para cada recurso, a próxima etapa é priorizar os recursos que você migrará. Uma boa priorização pode ajudar a manter a migração dentro do cronograma. Uma boa prática é priorizar a migração desses recursos, que precisam de mais tempo para serem movimentados; A migração desses recursos traz primeiro o maior progresso em direção à conclusão. Além disso, como essas migrações demoradas geralmente envolvem mais dados, elas consomem mais recursos para a ferramenta de migração e, portanto, são mais propensas a expor quaisquer problemas com seu pipeline de migração logo no início. Essa prática minimiza a chance de sua agenda escorregar devido a quaisquer dificuldades com seu pipeline de migração.
Planeje como você monitora o progresso da migração depois que ela for iniciada. Se você estiver coordenando seu esforço de migração de dados entre uma equipe, planeje uma cadência regular de sincronizações de equipe também, para que você tenha uma visão abrangente de como as migrações de alta prioridade estão indo.
Cenários de migração suportados
A melhor escolha da ferramenta de migração do MongoDB depende do seu cenário de migração.
Tipos de migrações
Aqui está uma lista de ferramentas compatíveis para cada cenário de migração:
Origem | Destino | Recomendação de processo |
---|---|---|
• Cluster local do MongoDB • MongoDB em cluster de VM IaaS • Cluster MongoDB Atlas - Offline |
Azure Cosmos DB Mongo API | <• Dados de 10 GB: ferramentas nativas do MongoDB <• Dados de 1 TB: Azure DMS >• Dados de 1 TB: Spark |
• Cluster local do MongoDB • MongoDB em cluster de VM IaaS • Cluster MongoDB Atlas - Online |
Azure Cosmos DB Mongo API | <• Dados de 1 TB: Azure DMS >• Dados de 1 TB: Spark + Mongo Changestream |
• Necessidade de alterar o esquema durante a migração Precisa de mais flexibilidade do que as ferramentas acima mencionadas |
Azure Cosmos DB Mongo API | • O ADF é mais flexível do que o DMS, suporta modificações de esquema durante a migração e suporta a maioria das combinações origem/destino • DMS é melhor em termos de escala (ex. migração mais rápida) |
• Arquivo JSON | Azure Cosmos DB Mongo API | • Ferramentas nativas do MongoDB especificamente mongoimport |
• Arquivo CSV | Azure Cosmos DB Mongo API | • Ferramentas nativas do MongoDB especificamente mongoimport |
• Arquivo BSON | Azure Cosmos DB Mongo API | • Ferramentas nativas do MongoDB especificamente mongorestore |
Suporte de ferramentas para versões do MongoDB
Dado que você está migrando de uma versão específica do MongoDB, as ferramentas suportadas para cada versão estão incluídas aqui:
Versão de origem do MongoDB | Versão de destino do Azure Cosmos DB para MongoDB | Ferramentas suportadas | Ferramentas não suportadas |
---|---|---|---|
<2,x, >4,0 | 3.2, 3.6, 4.0 | Ferramentas nativas do MongoDB, Spark | DMS, ADF |
3.2, 3.6, 4.0 | 3.2, 3.6, 4.0 | Ferramentas nativas do MongoDB, DMS, ADF, Spark | Nenhuma |
Pós-migração
Na fase de pré-migração, dedique algum tempo para planejar as etapas que você toma em direção à migração de aplicativos e à otimização pós-migração.
- Na fase pós-migração, você executa uma substituição do seu aplicativo para usar o Azure Cosmos DB em vez da propriedade de dados existente do MongoDB.
- Faça o seu melhor esforço para planejar a indexação, a distribuição global, a consistência e outras propriedades mutáveis do Azure Cosmos DB em um nível por recurso. No entanto, essas definições de configuração do Azure Cosmos DB podem ser modificadas posteriormente, portanto, espere fazer ajustes nessas configurações mais tarde. Você aplica essas configurações mutáveis após a migração.
- Para obter um guia pós-migração, consulte Etapas de otimização pós-migração ao usar a API do Azure Cosmos DB para MongoDB.