Passaggi di pre-migrazione per le migrazioni dei dati da MongoDB ad Azure Cosmos DB for MongoDB

SI APPLICA A: MongoDB

Importante

Prima di eseguire i passaggi di pre-migrazione, leggere questa guida completa.

Questa guida alla pre-migrazione di MongoDB fa parte della serie sulla migrazione di MongoDB. I passaggi critici per la migrazione di MongoDB sono pre-migrazione, migrazione e post-migrazione, come illustrato in questa guida.

Diagram of the migration steps from pre to post migration.

Panoramica della pre-migrazione

Prima di spostare effettivamente i dati, è fondamentale eseguire una pianificazione iniziale e prendere decisioni riguardo alla migrazione. Il processo decisionale iniziale è definito "pre-migrazione".

Gli obiettivi da prefiggersi nella fase di pre-migrazione sono i seguenti:

  1. Assicurarsi di configurare Azure Cosmos DB per soddisfare i requisiti dell'applicazione.
  2. Pianificare l'esecuzione della migrazione.

Per eseguire una pre-migrazione completa, eseguire questi passaggi

  1. Individuare le risorse di MongoDB esistenti e valutare l'idoneità delle risorse di MongoDB esistenti per la migrazione dei dati
  2. Eseguire il mapping delle risorse di MongoDB esistenti alle nuove risorse di Azure Cosmos DB
  3. Pianificare la logistica del processo di migrazione end-to-end prima di avviare la migrazione completa dei dati

Eseguire quindi la migrazione in base al piano di pre-migrazione.

Eseguire infine i passaggi critici di cutover e ottimizzazione nella fase di post-migrazione.

Tutti i passaggi precedenti sono fondamentali per garantire una corretta migrazione.

Quando si pianifica una migrazione, è consigliabile pianificare il più possibile a livello di risorsa.

Valutazione di pre-migrazione

Il primo passaggio di pre-migrazione consiste nell'individuare le risorse di MongoDB esistenti e nel valutare l'idoneità delle risorse per la migrazione.

L'individuazione comporta la creazione di un elenco completo delle risorse esistenti (database o raccolte) nel patrimonio di dati MongoDB.

La valutazione permette di comprendere se si stanno usando le funzionalità e la sintassi supportate. Consente inoltre di accertarsi di aderire ai limiti e alle quote. L'obiettivo di questa fase è creare un elenco di eventuali incompatibilità e avvisi. Dopo aver ottenuto i risultati della valutazione, è possibile provare a risolvere i risultati nella parte restante della pianificazione della migrazione.

Esistono tre modi per completare la valutazione nella fase di pre-migrazione ed è consigliabile usare l'estensione Migrazione di Azure Cosmos DB per MongoDB.

Estensione Migrazione di Azure Cosmos DB per MongoDB

L'estensione Migrazione di Azure Cosmos DB per MongoDB in Azure Data Studio consente di valutare un carico di lavoro di MongoDB per la migrazione ad Azure Cosmos DB for MongoDB. È possibile usare questa per eseguire una valutazione end-to-end sul carico di lavoro e scoprire le azioni che potrebbero essere necessarie per eseguire facilmente la migrazione dei carichi di lavoro ad Azure Cosmos DB. Durante la valutazione di un endpoint MongoDB, l'estensione segnala tutte le risorse individuate.

Nota

È consigliabile esaminare in dettaglio le funzionalità e la sintassi supportate e i limiti e le quote di Azure Cosmos DB, nonché eseguire un modello di verifica prima della migrazione effettiva.

Individuazione manuale (legacy)

In alternativa, è possibile creare un foglio di calcolo per la migrazione del patrimonio di dati. Lo scopo di questo foglio di calcolo è quello di migliorare la produttività e di facilitare la pianificazione della migrazione end-to-end. Il foglio può inoltre essere usato come documento di verifica durante l'intero processo di migrazione.

  • Nel foglio è contenuto un elenco completo delle risorse esistenti (database o raccolte) nel patrimonio di dati MongoDB.
  • Il foglio di calcolo deve essere strutturato come record delle risorse del patrimonio di dati, sotto forma di elenco.
  • Ogni riga corrisponde a una risorsa (database o raccolta).
  • Ogni colonna corrisponde a una proprietà della risorsa. Iniziare almeno con nome e dimensione dei dati (GB) come colonne.
  • Man mano che si procede in questa guida, si userà questo foglio di calcolo come documento di verifica per la pianificazione della migrazione end-to-end, aggiungendo colonne in base alle esigenze.

Ecco alcuni strumenti che è possibile usare per l'individuazione delle risorse:

Esaminare il foglio di calcolo e verificare ogni raccolta in dettaglio in base alle funzionalità e alla sintassi supportate e ai limiti e alle quote di Azure Cosmos DB.

Utilità Database Migration Assistant (legacy)

Nota

Database Migration Assistant è un'utilità legacy pensata per facilitare i passaggi di pre-migrazione. Per tutti i passaggi di pre-migrazione è consigliabile usare l'estensione Migrazione di Azure Cosmos DB per MongoDB.

È possibile usare l'utilità Database Migration Assistant (DMA) per facilitare l'esecuzione dei passaggi di pre-migrazione.

Mapping di pre-migrazione

Dopo aver completato i passaggi di individuazione e valutazione, il lato MongoDB dell'equazione è completato. È ora possibile passare alla pianificazione del lato Azure Cosmos DB. Come pianificare la configurazione delle risorse di produzione di Azure Cosmos DB? Eseguire la pianificazione a livello di singola risorsa, ovvero aggiungere le colonne seguenti al foglio di calcolo della pianificazione:

  • Mapping di Azure Cosmos DB
  • Chiave partizione
  • Modello di dati
  • Velocità effettiva dedicata e condivisa

Nelle sezioni seguenti sono riportati altri dettagli.

Pianificazione capacità

Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB?

Considerazioni sull'uso dell'API di Azure Cosmos DB per MongoDB

Prima di pianificare il patrimonio di dati di Azure Cosmos DB, assicurarsi di comprendere i concetti di Azure Cosmos DB seguenti:

  • Modello di capacità: la capacità del database in Azure Cosmos DB si basa su un modello basato sulla velocità effettiva. Questo modello è basato sulle unità richiesta al secondo, ovvero le unità che rappresentano il numero di operazioni di database che possono essere eseguite su una raccolta al secondo. Questa capacità può essere allocata a livello di database o di raccolta ed è possibile effettuarne il provisioning in un modello di allocazione o tramite la velocità effettiva di provisioning a scalabilità automatica.
  • Unità richiesta: a ogni operazione di database è associato un costo di unità richiesta in Azure Cosmos DB. Quando viene eseguita l'operazione, il costo viene sottratto dal livello delle unità richiesta disponibili in un determinato secondo. Se per una richiesta sono necessarie più UR rispetto alle UR/sec attualmente allocate, è possibile risolvere il problema scegliendo tra due opzioni: aumentare il numero di UR o attendere che abbia inizio il secondo successivo per ripetere l'operazione.
  • Capacità elastica: la capacità di una raccolta o un database può cambiare in qualsiasi momento. Questa flessibilità consente al database di adattarsi in modo elastico ai requisiti di velocità effettiva del carico di lavoro.
  • Partizionamento orizzontale automatico: Azure Cosmos DB offre un sistema di partizionamento automatico che richiede solo una partizione (o una chiave di partizione). Il meccanismo di partizionamento automatico viene condiviso tra tutte le API di Azure Cosmos DB e consente la continuità dei dati e la scalabilità della velocità effettiva tramite distribuzione orizzontale.

Pianificare il patrimonio dei dati di Azure Cosmos DB

Determinare le risorse di Azure Cosmos DB da creare. Questo processo richiede l'esame dettagliato del foglio di calcolo per la migrazione del patrimonio di dati e il mapping di ogni risorsa di MongoDB esistente a una nuova risorsa di Azure Cosmos DB.

  • Prevedere che ogni database di MongoDB diventi un database di Azure Cosmos DB.
  • Prevedere che ogni raccolta di MongoDB diventi una raccolta di Azure Cosmos DB.
  • Scegliere una convenzione di denominazione per le risorse di Azure Cosmos DB. La scelta di mantenere gli stessi nomi di risorse è in genere una soluzione ottimale, a meno che non siano presenti modifiche nella struttura dei database e delle raccolte.
  • Determinare se si usano raccolte partizionate o non partizionate in Azure Cosmos DB. Il limite delle raccolte non partizionate è 20 GB. Il partizionamento orizzontale, d'altra parte, consente di ottenere una scalabilità orizzontale fondamentale per le prestazioni di molti carichi di lavoro.
  • Se si usano raccolte partizionate, non presupporre che la chiave di partizione della raccolta di MongoDB diventi la chiave di partizione del contenitore di Azure Cosmos DB. Non presupporre che la struttura dei documenti del modello di dati MongoDB esistente debba corrispondere al modello usato in Azure Cosmos DB.
    • La chiave di partizione è la singola impostazione più importante per ottimizzare la scalabilità e le prestazioni di Azure Cosmos DB e la modellazione dei dati è il secondo fattore più importante. Entrambe queste impostazioni non sono modificabili e non possono essere modificate una volta impostate. È quindi estremamente importante ottimizzarle nella fase di pianificazione. Per altre informazioni, seguire le indicazioni riportate nella sezione Decisioni non modificabili.
  • Azure Cosmos DB non riconosce alcuni tipi di raccolte di MongoDB, ad esempio le raccolte limitate. Per queste risorse, è sufficiente creare raccolte normali di Azure Cosmos DB.
  • Azure Cosmos DB include due tipi di raccolta specifici: con velocità effettiva condivisa e dedicata. La velocità effettiva condivisa e dedicata è un'altra decisione critica e non modificabile che è fondamentale prendere nella fase di pianificazione. Per altre informazioni, seguire le indicazioni riportate nella sezione Decisioni non modificabili.

Decisioni non modificabili

Le scelte di configurazione di Azure Cosmos DB elencate di seguito non possono essere modificate o annullate dopo che una risorsa di Azure Cosmos DB è stata creata. È quindi importante definire queste scelte di configurazione direttamente durante la pianificazione della pre-migrazione, prima di avviare le migrazioni:

Costo di proprietà

Stima della velocità effettiva

  • In Azure Cosmos DB il provisioning della velocità effettiva viene eseguito in anticipo e misurato in unità richiesta (UR) al secondo. Diversamente dalle macchine virtuali o dai server locali, le UR sono facilmente scalabili in qualsiasi momento. È possibile modificare immediatamente il numero di UR sottoposte a provisioning. Per altre informazioni, vedere Unità richiesta in Azure Cosmos DB.

  • È possibile usare il calcolatore della capacità di Azure Cosmos DB per determinare il numero di unità richiesta da usare. Questo numero si basa sulla configurazione dell'account del database, sulla quantità di dati, sulla dimensione del documento e sulle operazioni di lettura e scrittura necessarie al secondo.

  • Di seguito sono elencati i fattori chiave che influiscono sul numero di UR richiesto:

    • Dimensione del documento: con l'aumentare delle dimensioni di un elemento/documento, aumenta anche il numero di UR usate per leggere o scrivere l'elemento/documento.

    • Numero di proprietà del documento: il numero di UR usate per creare o aggiornare un documento è correlato al numero, alla complessità e alla lunghezza delle relative proprietà. È possibile ridurre l'utilizzo di unità richiesta per operazioni di scrittura limitando il numero di proprietà indicizzate.

    • Modelli di query: la complessità di una query influisce sul numero di unità richiesta utilizzate da una query.

  • Il modo migliore per determinare il costo delle query è quello di usare i dati di esempio in Azure Cosmos DB ed eseguire query di esempio da MongoDB Shell usando il comando getLastRequestStastistics per ottenere l'addebito della richiesta, che restituirà il numero di UR utilizzate:

    db.runCommand({getLastRequestStatistics: 1})
    

    *Con questo comando viene restituito un documento JSON simile all'esempio seguente:

    {
      "_t": "GetRequestStatisticsResponse",
      "ok": 1,
      "CommandName": "find",
      "RequestCharge": 10.1,
      "RequestDurationInMilliSeconds": 7.2
    }
    
  • È anche possibile usare le impostazioni di diagnostica per conoscere la frequenza e i modelli delle query eseguite in Azure Cosmos DB. I risultati dei log di diagnostica possono essere inviati a un account di archiviazione, un'istanza di Hub eventi o ad Azure Log Analytics.

Pianificazione della logistica pre-migrazione

Ora che si dispone di una visualizzazione del patrimonio di dati esistente e di un modello per il nuovo patrimonio di dati di Azure Cosmos DB, è possibile pianificare come eseguire il processo di migrazione end-to-end. Ancora una volta, eseguire la pianificazione a livello di singola risorsa, aggiungendo colonne al foglio di calcolo per acquisire le dimensioni logistiche incluse in questa sezione.

Logistica dell'esecuzione

  • Assegnare i compiti per la migrazione di ogni risorsa esistente da MongoDB ad Azure Cosmos DB. La modalità di assegnazione alle risorse del team per portare a termine la migrazione dipende dalle esigenze dell'organizzazione. Per le migrazioni di piccole dimensioni, è possibile assegnare l'intera migrazione a un unico team e monitorare il suo stato di avanzamento. Per le migrazioni di dimensioni maggiori, è possibile assegnare ai membri del team il compito di migrazione e monitoraggio in base a singole risorse.

  • Dopo aver assegnato i compiti per la migrazione delle risorse, è ora necessario scegliere gli strumenti appropriati per la migrazione. Per le migrazioni di piccole dimensioni, è possibile usare un unico strumento di migrazione, ad esempio uno strumento nativo di MongoDB o Servizio Migrazione del database di Azure, per eseguire la migrazione di tutte le risorse in una sola volta. Per le migrazioni di dimensioni maggiori o con requisiti speciali, è consigliabile scegliere strumenti di migrazione dedicati per singole risorse.

    • Prima di pianificare gli strumenti di migrazione da usare, è consigliabile acquisire familiarità con le opzioni disponibili. Il servizio Migrazione del database di Azure per l'API di Azure Cosmos DB per MongoDB offre un meccanismo che semplifica la migrazione dei dati mettendo a disposizione una piattaforma di hosting completamente gestita, opzioni di monitoraggio della migrazione e gestione automatica delle limitazioni. Ecco un elenco completo di opzioni:

      Tipo di migrazione Soluzione Considerazioni
      Online Servizio Migrazione del database di Azure • Usa la libreria di esecuzione bulk per Azure Cosmos DB
      • È adatto per set di dati di grandi dimensioni ed è capace di replicare modifiche in tempo reale
      • Funziona solo con altre origini MongoDB
      Fuori rete Servizio Migrazione del database di Azure • Usa la libreria di esecuzione bulk per Azure Cosmos DB
      • È adatto per set di dati di grandi dimensioni ed è capace di replicare modifiche in tempo reale
      • Funziona solo con altre origini MongoDB
      Offline Azure Data Factory • Usa la libreria di esecuzione bulk per Azure Cosmos DB
      • È adatto per set di dati di grandi dimensioni
      • È facile da configurare e supporta più origini
      • La mancanza di checkpoint significa che qualsiasi problema durante la migrazione richiede un riavvio dell'intero processo di migrazione
      • La mancanza di una coda di messaggi non recapitabili significa che alcuni file non corretti potrebbero arrestare l'intero processo di migrazione
      • Richiede codice personalizzato per aumentare la velocità effettiva di lettura per determinate origini dati
      Fuori rete Strumenti Mongo esistenti (mongodump, mongorestore, Studio3T) • È facile da configurare e integrare
      • Richiede una gestione personalizzata per le limitazioni
      Offline/online Azure Databricks e Spark • Controllo completo della velocità di migrazione e della trasformazione dei dati
      • Richiede codice personalizzato
    • Se la risorsa può tollerare una migrazione offline, usare questo diagramma per scegliere lo strumento di migrazione appropriato:

      Diagram of using offline migration tools based on the size of the tool.

    • Se la risorsa richiede una migrazione online, usare questo diagramma per scegliere lo strumento di migrazione appropriato:

      Diagram of using online migration tools based on preference for turnkey or custom solutions.

    • Guardare un video con una panoramica e una demo delle soluzioni di migrazione.

  • Dopo aver scelto gli strumenti di migrazione per ogni risorsa, il passaggio successivo consiste nel classificare in ordine di priorità le risorse di cui si eseguirà la migrazione. Una buona definizione delle priorità può aiutare a completare la migrazione nei tempi previsti. Una buona pratica è quella di dare priorità alla migrazione delle risorse che richiedono più tempo per essere spostate. Eseguendo prima la migrazione di queste risorse, si possono compiere più passi avanti verso il completamento. Inoltre, poiché queste migrazioni dispendiose in termini di tempo comportano in genere più dati, richiedono un maggiore utilizzo di risorse per lo strumento di migrazione e quindi hanno maggiori probabilità di evidenziare tempestivamente eventuali problemi con la pipeline di migrazione. Questa procedura riduce al minimo la probabilità che la pianificazione slitti a causa di problemi con la pipeline di migrazione.

  • Pianificare il monitoraggio dello stato di avanzamento della migrazione dopo l'avvio. Se si coordina il lavoro di migrazione dei dati tra i membri di un team, pianificare anche una sincronizzazione del team con cadenza regolare, in modo da avere una visione completa del modo in cui procedono le migrazioni ad alta priorità.

Scenari di migrazione supportati

La scelta dello strumento di migrazione MongoDB migliore dipende dallo scenario di migrazione.

Tipi di migrazioni

Ecco un elenco di strumenti compatibili per ogni scenario di migrazione:

Source (Sorgente) Destination Consigli per il processo
• Cluster MongoDB locale
• Cluster MongoDB su macchina virtuale IaaS
• Cluster MongoDB Atlas: offline
API Mongo di Azure Cosmos DB • <10 GB di dati: strumenti nativi di MongoDB
• <1 TB di dati: Servizio Migrazione del database di Azure
• > 1 TB di dati: Spark
• Cluster MongoDB locale
• Cluster MongoDB su macchina virtuale IaaS
• Cluster MongoDB Atlas: online
API Mongo di Azure Cosmos DB • <1 TB di dati: Servizio Migrazione del database di Azure
• >1 TB di dati: Spark + Mongo Changestream
• Necessità di modificare lo schema durante la migrazione
Bisogno di maggiore flessibilità rispetto agli strumenti menzionati in precedenza
API Mongo di Azure Cosmos DB • Azure Data Factory è più flessibile rispetto a Servizio Migrazione del database, supporta le modifiche dello schema durante la migrazione e anche la maggior parte delle combinazioni origine/destinazione
• Servizio Migrazione del database è migliore in termini di scalabilità (ad esempio, consente una migrazione più veloce)
• File JSON API Mongo di Azure Cosmos DB • Strumenti nativi di MongoDB, in particolare mongoimport
• File CSV API Mongo di Azure Cosmos DB • Strumenti nativi di MongoDB, in particolare mongoimport
• File BSON API Mongo di Azure Cosmos DB • Strumenti nativi di MongoDB, in particolare mongorestore

Supporto degli strumenti per le versioni di MongoDB

Dato che si sta eseguendo la migrazione da una versione specifica di MongoDB, di seguito sono riportati gli strumenti supportati per ogni versione:

Versione di origine di MongoDB Versione di destinazione di Azure Cosmos DB for MongoDB Strumenti supportati Strumenti non supportati
<2.x, >4.0 3.2, 3.6, 4.0 Strumenti nativi MongoDB, Spark Servizio Migrazione del database, Azure Data Factory
3.2, 3.6, 4.0 3.2, 3.6, 4.0 Strumenti nativi di MongoDB, Servizio Migrazione del database di Azure, Azure Data Factory, Spark None

Dopo la migrazione

Nella fase di pre-migrazione dedicare del tempo per pianificare i passaggi da eseguire per la migrazione e l'ottimizzazione delle app dopo la migrazione.

  • Nella fase di post-migrazione si esegue un cutover dell'applicazione per usare Azure Cosmos DB in sostituzione del patrimonio di dati MongoDB esistente.
  • Compiere il massimo sforzo per pianificare l'indicizzazione, la distribuzione globale, la coerenza e altre proprietà modificabili di Azure Cosmos DB a livello di singola risorsa. Tuttavia, queste impostazioni di configurazione di Azure Cosmos DB possono essere modificate in un secondo momento, quindi si dovrà prevedere di apportarvi modifiche in un secondo momento. Queste configurazioni modificabili vengono applicate dopo la migrazione.
  • Per una guida alla post-migrazione, vedere Passaggi di ottimizzazione post-migrazione quando si usa l'API Azure Cosmos DB for MongoDB.

Passaggi successivi