Migrieren von Daten von MongoDB zu vCore-basierten Azure Cosmos DB for MongoDB mithilfe von Azure Databricks
Azure Databricks vereinfacht das Verschieben großer MongoDB-Datasets in vCore-basiertes Azure Cosmos DB for MongoDB, wodurch die Übertragung komplexer Daten einfacher wird. Es ermöglicht eine detaillierte Kontrolle über das Migrationstempo und die Datentransformationen, wodurch große Datasets effektiv verarbeitet werden.
Was sind Gründe für die Verwendung von Azure Databricks?
Azure Databricks, eine Platform-as-a-Service (PaaS) für Apache Spark, führt eine optimierte, effiziente Methode für die Offline- und Onlinemigration von Datenbanken von MongoDB ein. Seine Architektur ist darauf ausgelegt, umfangreiche Datasets zu unterstützen, sodass diese Lösung für Ihre Migrationsprojekte geeignet ist.
Voraussetzungen
Bevor Sie die Migration beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:
- Vergewissern Sie sich, dass Ihr vCore-basiertes Azure Cosmos DB for MongoDB-Konto aktiv und ordnungsgemäß konfiguriert ist. Stellen Sie sicher, dass Sie eine verwaltete Identität für Ihr Azure MongoDB-Konto aktiviert und die erforderlichen Berechtigungen für den Zugriff auf die MongoDB-Quelldatenbank erteilt haben.
- Stellen Sie einen Azure Databricks-Cluster bereit, und wählen Sie Databricks-Laufzeitversion 7.6 aus, um optimale Spark 3.0-Kompatibilität zu gewährleisten.
- Fügen Sie Ihrem Cluster die Maven MongoDB Connector für Spark-Bibliothek hinzu. Diese Bibliothek ermöglicht Verbindungen mit nativen MongoDB- und Azure Cosmos DB-Endpunkten.
Durchführen der Migration
Sie können entweder ein Python- oder Scala-Notebook in Azure Databricks erstellen, um die Migration durchzuführen. Wenn Sie beispielsweise Daten von MongoDB zu vCore-basierten Azure Cosmos DB for MongoDB mithilfe eines Python-Notizbuchs migrieren möchten, fügen Sie diesen Codeausschnitt zu Ihrem Notebook hinzu:
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()
Ausführen der Migration
Führen Sie Ihr Migrationsnotebook aus, überwachen Sie den Prozess auf mögliche Fehlerbegrenzungen und passen Sie die Parameter nach Bedarf an, um eine reibungslose Datenübertragung sicherzustellen.
Verbessern der Migrationsleistung
Je nach vCore-basierter Azure Cosmos DB for MongoDB-Clusterebene sollten Sie einige Einstellungen optimieren, um die Migrationsleistung zu verbessern. Einige dieser Einstellungen umfassen:
- Spark Clusterkonfiguration: Die Optimierung der Anzahl der Mitarbeitenden und Kerne wirkt sich direkt auf die Rechenfunktion aus, um Ihre Datenmigration zu verarbeiten.
- Anpassungen der Batchgröße: Die Optimierung des Parameters maxBatchSize kann helfen, Fehler bei der Ratenbegrenzung zu vermeiden. Dieser Parameter steuert die Anzahl der Dokumente, die in jedem Batch an die Zieldatenbank gesendet werden.
Unabhängig davon, ob Sie eine Online- oder Offline-Migration durchführen, bietet die Verwendung von Azure Databricks für Ihr Migrationsprojekt eine robuste, skalierbare Lösung für die Übertragung großer Datensätze von MongoDB auf die vCore-basierte Azure Cosmos DB for MongoDB. Sie bietet die Flexibilität, die Migrationsgeschwindigkeit und die Datentransformation anzupassen, um einen erfolgreichen Migrationsprozess zu gewährleisten.