Azure Cosmos DB: importare i dati di MongoDBAzure Cosmos DB: Import MongoDB data

Per eseguire la migrazione di dati da MongoDB in un account Azure Cosmos DB per l'uso con l'API di MongoDB, è necessario eseguire queste operazioni:To migrate data from MongoDB to an Azure Cosmos DB account for use with the API for MongoDB, you must:

Se si importano dati da MongoDB e si prevede di usarli con Azure Cosmos DB, è necessario usare lo strumento di migrazione dei dati per importare i dati.If you are importing data from MongoDB and plan to use it with the Azure Cosmos DB, you should use the Data Migration tool to import data.

Questa esercitazione illustra le attività seguenti:This tutorial covers the following tasks:

  • Recupero della stringa di connessioneRetrieving your connection string
  • Importazione di dati di MongoDB tramite mongoimportImporting MongoDB data by using mongoimport
  • Importazione di dati di MongoDB tramite mongorestoreImporting MongoDB data by using mongorestore

PrerequisitiPrerequisites

  • Aumentare la velocità effettiva: la durata della migrazione dei dati dipende dalla quantità di velocità effettiva configurata per le raccolte.Increase throughput: The duration of your data migration depends on the amount of throughput you set up for your collections. Assicurarsi di aumentare la velocità effettiva per le migrazioni dei dati di dimensioni più grandi.Be sure to increase the throughput for larger data migrations. Dopo avere completato la migrazione, diminuire la velocità effettiva per ridurre i costi.After you've completed the migration, decrease the throughput to save costs. Per altre informazioni sull'aumento della velocità effettiva nel portale di Azure, vedere Livelli di prestazioni e piani tariffari in Azure Cosmos DB.For more information about increasing throughput in the Azure portal, see Performance levels and pricing tiers in Azure Cosmos DB.

  • Abilitare SSL: Azure Cosmos DB ha standard e requisiti di sicurezza restrittivi.Enable SSL: Azure Cosmos DB has strict security requirements and standards. Assicurarsi di abilitare SSL quando si interagisce con l'account.Be sure to enable SSL when you interact with your account. Le procedure seguenti illustrano come abilitare SSL per mongoimport e mongorestore.The procedures in the rest of the article include how to enable SSL for mongoimport and mongorestore.

Trovare le informazioni della stringa di connessione (host, porta, nome utente e password)Find your connection string information (host, port, username, and password)

  1. Nel riquadro sinistro del portale di Azure fare clic sulla voce Azure Cosmos DB.In the Azure portal, in the left pane, click the Azure Cosmos DB entry.
  2. Nel riquadro Sottoscrizioni selezionare il nome dell'account.In the Subscriptions pane, select your account name.
  3. Nel pannello Stringa di connessione fare clic su Stringa di connessione.In the Connection String blade, click Connection String.
    Il riquadro destro contiene tutte le informazioni necessarie per connettersi correttamente all'account.The right pane contains all the information that you need to successfully connect to your account.

    Pannello Stringa di connessione

Eseguire l'importazione di dati nell'API per MongoDB con mongoimportImport data to the API for MongoDB by using mongoimport

Per importare dati nell'account Azure Cosmos DB, usare il modello seguente.To import data to your Azure Cosmos DB account, use the following template. Per host, username e password inserire i valori specifici dell'account.Fill in host, username, and password with the values that are specific to your account.

Template:Template:

mongoimport.exe --host <your_hostname>:10255 -u <your_username> -p <your_password> --db <your_database> --collection <your_collection> --ssl --sslAllowInvalidCertificates --type json --file C:\sample.json

Esempio:Example:

mongoimport.exe --host anhoh-host.documents.azure.com:10255 -u anhoh-host -p tkvaVkp4Nnaoirnouenrgisuner2435qwefBH0z256Na24frio34LNQasfaefarfernoimczciqisAXw== --ssl --sslAllowInvalidCertificates --db sampleDB --collection sampleColl --type json --file C:\Users\anhoh\Desktop\*.json

Eseguire l'importazione di dati nell'API per MongoDB con mongorestoreImport data to the API for MongoDB by using mongorestore

Per ripristinare i dati nell'API per l'account MongoDB, usare il modello seguente per eseguire l'importazione.To restore data to your API for MongoDB account, use the following template to execute the import. Per host, username e password inserire i valori specifici dell'account.Fill in host, username, and password with the values that are specific to your account.

Template:Template:

mongorestore.exe --host <your_hostname>:10255 -u <your_username> -p <your_password> --db <your_database> --collection <your_collection> --ssl --sslAllowInvalidCertificates <path_to_backup>

Esempio:Example:

mongorestore.exe --host anhoh-host.documents.azure.com:10255 -u anhoh-host -p tkvaVkp4Nnaoirnouenrgisuner2435qwefBH0z256Na24frio34LNQasfaefarfernoimczciqisAXw== --ssl --sslAllowInvalidCertificates ./dumps/dump-2016-12-07

Guida per una migrazione correttaGuide for a successful migration

  1. Creare in anticipo le raccolte e ridimensionarle:Pre-create and scale your collections:

    • Per impostazione predefinita, Azure Cosmos DB effettua il provisioning di una nuova raccolta MongoDB con 1.000 unità richiesta (UR).By default, Azure Cosmos DB provisions a new MongoDB collection with 1,000 request units (RUs). Prima di iniziare la migrazione tramite mongoimport, mongorestore o mongomirror, creare tutte le raccolte dal portale di Azure o da strumenti e driver di MongoDB.Before you start the migration by using mongoimport, mongorestore, or mongomirror, pre-create all your collections from the Azure portal or from MongoDB drivers and tools. Se le dimensioni della raccolta superano 10 GB, assicurarsi di creare una raccolta partizionata con una chiave di partizione appropriata.If your collection is greater than 10 GB, make sure to create a sharded/partitioned collection with an appropriate shard key.

    • Dal portale di Azure aumentare la velocità effettiva delle raccolte da 1.000 unità richiesta per una raccolta a partizione singola e da 2.500 unità richiesta per una raccolta partizionata al solo scopo di migrazione.From the Azure portal, increase your collections' throughput from 1,000 RUs for a single partition collection and 2,500 RUs for a sharded collection just for the migration. Con una velocità effettiva più elevata, è possibile evitare la limitazione e completare più rapidamente la migrazione.With the higher throughput, you can avoid throttling and migrate in less time. Con la fatturazione oraria in Azure Cosmos DB, è possibile ridurre la velocità effettiva immediatamente dopo la migrazione per ridurre i costi.With hourly billing in Azure Cosmos DB, you can reduce the throughput immediately after the migration to save costs.

  2. Calcolare l'addebito approssimativo delle unità richiesta per la scrittura di un singolo documento:Calculate the approximate RU charge for a single document write:

    a.a. Connettersi al database Azure Cosmos DB MongoDB dalla shell di MongoDB.Connect to your Azure Cosmos DB MongoDB database from the MongoDB Shell. È possibile trovare istruzioni in Connettere un'applicazione MongoDB ad Azure Cosmos DB.You can find instructions in Connect a MongoDB application to Azure Cosmos DB.

    b.b. Eseguire un comando di inserimento di esempio usando uno dei documenti di esempio dalla shell di MongoDB:Run a sample insert command by using one of your sample documents from the MongoDB Shell:

     ```db.coll.insert({ "playerId": "a067ff", "hashedid": "bb0091", "countryCode": "hk" })```
    

    c.c. Eseguire db.runCommand({getLastRequestStatistics: 1}) e si riceverà una risposta simile alla seguente:Run db.runCommand({getLastRequestStatistics: 1}) and you will receive a response like this one:

     ```
     globaldb:PRIMARY> db.runCommand({getLastRequestStatistics: 1})
     {
         "_t": "GetRequestStatisticsResponse",
         "ok": 1,
         "CommandName": "insert",
         "RequestCharge": 10,
         "RequestDurationInMilliSeconds": NumberLong(50)
     }
     ```
    

    d.d. Prendere nota dell'addebito della richiesta.Take note of the request charge.

  3. Determinare la latenza dal proprio computer al servizio cloud Azure Cosmos DB:Determine the latency from your machine to the Azure Cosmos DB cloud service:

    a.a. Abilitare la registrazione dettagliata dalla shell di MongoDB usando questo comando: setVerboseShell(true)Enable verbose logging from the MongoDB Shell by using this command: setVerboseShell(true)

    b.b. Eseguire una semplice query sul database: db.coll.find().limit(1).Run a simple query against the database: db.coll.find().limit(1). Si riceverà una risposta simile alla seguente:You will receive a response like this one:

     ```
     Fetched 1 record(s) in 100(ms)
     ```
    
  4. Rimuovere il documento inserito prima della migrazione per verificare che non siano presenti documenti duplicati.Remove the inserted document before the migration to ensure that there are no duplicate documents. È possibile rimuovere i documenti usando questo comando: db.coll.remove({})You can remove documents by using this command: db.coll.remove({})

  5. Calcolare i valori batchSize e numInsertionWorkers approssimativi:Calculate the approximate batchSize and numInsertionWorkers values:

    • Per batchSize dividere le unità richiesta totali di cui è stato effettuato il provisioning per le unità richiesta consumate dalla scrittura di un singolo documento nel passaggio 3.For batchSize, divide the total provisioned RUs by the RUs consumed from your single document write in step 3.

    • Se la dimensione calcolata batchSize <= 24, usare questo numero come valore di batchSize.If the calculated batchSize <= 24, use that number as your batchSize value.

    • Se la dimensione calcolata batchSize > 24, impostare il valore di batchSize su 24.If the calculated batchSize > 24, set the batchSize value to 24.

    • Per numInsertionWorkers usare questa equazione: numInsertionWorkers = (velocità effettiva con provisioning * latenza in secondi) / (dimensioni del batch * unità richiesta utilizzate per una singola operazione di scrittura).For numInsertionWorkers, use this equation: numInsertionWorkers = (provisioned throughput * latency in seconds) / (batch size * consumed RUs for a single write).

      ProprietàProperty ValoreValue
      batchSizebatchSize 2424
      Unità richiesta con provisioningRUs provisioned 1000010000
      LatencyLatency 0,100 s0.100 s
      Unità richiesta addebitate per la scrittura di 1 documentoRU charged for 1 doc write 10 UR10 RUs
      numInsertionWorkersnumInsertionWorkers ??

      numInsertionWorkers = (10000 UR x 0,1 s) / (24 x 10 UR) = 4,1666numInsertionWorkers = (10000 RUs x 0.1 s) / (24 x 10 RUs) = 4.1666

  6. Eseguire il comando di migrazione finale:Run the final migration command:

    mongoimport.exe --host anhoh-mongodb.documents.azure.com:10255 -u anhoh-mongodb -p wzRJCyjtLPNuhm53yTwaefawuiefhbauwebhfuabweifbiauweb2YVdl2ZFNZNv8IU89LqFVm5U0bw== --ssl --sslAllowInvalidCertificates --jsonArray --db dabasename --collection collectionName --file "C:\sample.json" --numInsertionWorkers 4 --batchSize 24
    

Passaggi successiviNext steps

È possibile passare all'esercitazione successiva per ottenere informazioni su come eseguire query sui dati di MongoDB tramite Azure Cosmos DB.You can proceed to the next tutorial and learn how to query MongoDB data by using Azure Cosmos DB.