Migrar dados do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore usando o Azure Databricks

Concluído

O Azure Databricks simplifica a movimentação de conjuntos de dados grandes do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore, simplificando a transferência de dados complexos. Ele permite um controle detalhado sobre o ritmo de migração e as transformações de dados, processando efetivamente conjuntos de dados grandes.

Por que usar o Azure Databricks?

O Azure Databricks, uma PaaS (plataforma como serviço) para Apache Spark, apresenta um método simplificado e eficiente para a migração offline e online de bancos de dados do MongoDB. A arquitetura dele foi projetada para dar suporte a conjuntos de dados extensivos, tornando-a uma opção adequada para seus projetos de migração.

Pré-requisitos

Antes de começar a migração, verifique se você tem os seguintes pré-requisitos:

  • Confirme se a sua conta do Azure Cosmos DB for MongoDB baseada em vCore está ativa e se ela foi configurada corretamente. Verifique se você habilitou uma identidade gerenciada para sua conta do Azure MongoDB e concedeu as permissões necessárias para acessar o banco de dados mongoDB de origem.
  • Provisione um cluster do Azure Databricks, selecionando o runtime do Databricks versão 7.6 para compatibilidade ideal com o Spark 3.0.

Captura de tela de como adicionar a extensão de migração do MongoDB ao Azure Data Studio.

  • Adicione a biblioteca do Conector do MongoDB do Maven para Spark ao cluster. Essa biblioteca permite conexões com pontos de extremidade nativos do MongoDB e do Azure Cosmos DB.

Realizar a migração

Você pode criar um notebook Python ou Scala no Azure Databricks para fazer a migração. Por exemplo, se você quiser migrar dados do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore usando um notebook Python, adicione este snippet de código ao notebook:

from pyspark.sql import SparkSession
from azure.identity import DefaultAzureCredential

# Set up the managed identity credential
credential = DefaultAzureCredential()

# Retrieve the access token for Azure Cosmos DB
token = credential.get_token("https://cosmos.azure.com/.default")

# Construct the target connection string using the access token
target_account_name = "<ACCOUNTNAME>"  # Replace with your Cosmos DB account name
target_connection_string = (
    f"mongodb://:@{target_account_name}.mongo.cosmos.azure.com:10255/"
    f"?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@{target_account_name}@"
    f"&authMechanism=PLAIN&authSource=$external&password={token.token}"
)

# MongoDB source connection details
source_connection_string = "mongodb://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<AUTHDB>"  # Replace with your source MongoDB connection
source_db = "<DB NAME>"
source_collection = "<COLLECTIONNAME>"
target_db = "<DB NAME>"
target_collection = "<COLLECTIONNAME>"

# Initialize Spark session
my_spark = SparkSession \
    .builder \
    .appName("MongoDB to CosmosDB Migration") \
    .config("spark.mongodb.input.uri", source_connection_string) \
    .config("spark.mongodb.output.uri", target_connection_string) \
    .getOrCreate()

# Read from source MongoDB
df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource") \
    .option("uri", source_connection_string) \
    .option("database", source_db) \
    .option("collection", source_collection) \
    .load()

# Write to Azure Cosmos DB (MongoDB API)
df.write.format("mongo") \
    .mode("append") \
    .option("uri", target_connection_string) \
    .option("database", target_db) \
    .option("collection", target_collection) \
    .save()

Executar a migração

Execute seu notebook de migração, monitorando o processo em busca de possíveis erros de limitação de taxa e ajustando os parâmetros, conforme necessário, a fim de garantir uma transferência de dados estável.

Aprimorar o desempenho da migração

Dependendo da camada de cluster do Azure Cosmos DB for MongoDB baseado em vCore, o ideal é ajustar algumas configurações para aprimorar o desempenho da migração. Algumas dessas configurações incluem:

  • Configuração do cluster do Spark: Otimizar o número de trabalhos e núcleos afeta diretamente a capacidade computacional para processar a migração de dados.
  • Ajustes de tamanho do lote: O ajuste do parâmetro maxBatchSize pode ajudar a atenuar erros de limitação de taxa. Esse parâmetro controla o número de documentos enviados ao banco de dados de destino em cada lote.

Se você estiver fazendo uma migração online ou offline, usar o Azure Databricks para seu projeto de migração oferecerá uma solução robusta e escalonável para transferir conjuntos de dados grandes do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore. Ele fornece a flexibilidade para ajustar a velocidade de migração e a transformação de dados, garantindo um processo de migração bem-sucedido.