Snabbstart: Migrera en befintlig MongoDB-Node.js-webbapp till Azure Cosmos DB

GÄLLER FÖR: Azure Cosmos DB API för MongoDB

I den här snabbstarten skapar och hanterar du ett Azure Cosmos DB for Mongo DB API-konto med hjälp av Azure Cloud Shell och med en MEAN-app (MongoDB, Express, Angular och Node.js) som klonats från GitHub. Azure Cosmos DB är en databastjänst med flera modeller som gör att du snabbt kan skapa och köra frågor mot dokument-, tabell-, nyckelvärdes- och grafdatabaser med global distribution och vågrät skalning.

Förutsättningar

  • Den här artikeln kräver version 2.0 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.

Klona exempelprogrammet

Kör följande kommandon för att klona exempellagringsplatsen. Den här exempellagringsplatsen innehåller standard-MEAN.js-programmet.

  1. Öppna en kommandotolk, skapa en ny mapp som heter git-samples och stäng sedan kommandotolken.

    mkdir "C:\git-samples"
    
  2. Öppna ett git-terminalfönster, t.ex. git bash, och använd kommandot cd för att ändra till den nya mappen där du vill installera exempelappen.

    cd "C:\git-samples"
    
  3. Klona exempellagringsplatsen med följande kommando. Detta kommando skapar en kopia av exempelappen på din dator.

    git clone https://github.com/prashanthmadi/mean
    

Kör programmet

Den här MongoDB-appen som skrivits i Node.js ansluter till din Azure Cosmos DB-databas, som stöder MongoDB-klienten. Med andra ord är det transparent för programmet att data lagras i en Azure Cosmos DB-databas.

Installera de nödvändiga paketen och starta programmet.

cd mean
npm install
npm start

Programmet försöker att ansluta till en MongoDB-källa, vilket misslyckas. Gå vidare och avsluta programmet när utdata returnerar ”[MongoError: connect ECONNREFUSED 127.0.0.1:27017]”.

Logga in på Azure

Om du använder en installerad Azure CLI loggar du in på din Azure-prenumeration med kommandot az login och följer anvisningarna på skärmen. Du kan hoppa över det här steget om du använder Azure Cloud-gränssnittet.

az login 

Lägg till Azure Cosmos DB-modulen

Om du använder en installerad Azure CLI, kontrollera om cosmosdb-komponenten har installerats genom att köra kommandot az. Om cosmosdb är i listan över grundläggande kommandon, fortsätter du med nästa kommando. Du kan hoppa över det här steget om du använder Azure Cloud-gränssnittet.

Om cosmosdb inte är i listan över grundläggande kommandon, installerar du om Azure CLI.

Skapa en resursgrupp

Skapa en resursgrupp med az group create. En Azure-resursgrupp är en logisk container som Azure-resurser (t.ex. webbappar, databaser och lagringskonton) distribueras och hanteras i.

Följande exempel skapar en resursgrupp i regionen västeuropa. Välj ett unikt namn för resursgruppen.

Om du använder Azure Cloud Shell väljer du Prova, följer anvisningarna på skärmen för att logga in och kopierar sedan kommandot till kommandotolken.

az group create --name myResourceGroup --location "West Europe"

Skapa ett Azure Cosmos DB-konto

Skapa ett Cosmos-konto med kommandot az cosmosdb create.

I följande kommando ersätter du ditt eget unika Cosmos-kontonamn där du ser platshållaren <cosmosdb-name>. Den här unika namnet kommer att användas som en del av din Cosmos DB-slutpunkt (https://<cosmosdb-name>.documents.azure.com/) så namnet måste vara unikt för alla Cosmos-konton i Azure.

az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB

Parametern --kind MongoDB aktiverar MongoDB-klientanslutningar.

När Azure Cosmos DB-kontot har skapats, visar Azure CLI information liknande följande exempel.

Anteckning

I det här exemplet används JSON som standardalternativ för Azure CLI-utdataformat. Om du vill använda andra format läser du Utdataformat för Azure CLI-kommandon.

{
  "databaseAccountOfferType": "Standard",
  "documentEndpoint": "https://<cosmosdb-name>.documents.azure.com:443/",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Document
DB/databaseAccounts/<cosmosdb-name>",
  "kind": "MongoDB",
  "location": "West Europe",
  "name": "<cosmosdb-name>",
  "readLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ],
  "resourceGroup": "myResourceGroup",
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "writeLocations": [
    {
      "documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
      "failoverPriority": 0,
      "id": "<cosmosdb-name>-westeurope",
      "locationName": "West Europe",
      "provisioningState": "Succeeded"
    }
  ]
} 

Anslut ditt Node.js-program till databasen

I det här steget ansluter du ditt MEAN.js exempelprogram till det Azure Cosmos DB-databaskonto som du nyss skapade.

Konfigurera anslutningssträngen i ditt Node.js-program

I din MEAN.js-lagringsplats, öppnar du config/env/local-development.js.

Ersätt innehållet i filen med följande kod. Se till att även ersätta de två <cosmosdb-name>-platshållarna med namnet på ditt Cosmos-konto.

'use strict';

module.exports = {
  db: {
    uri: 'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean-dev?ssl=true&sslverifycertificate=false'
  }
};

Hämta nyckeln

För att kunna ansluta till en Cosmos-databas behöver du databasnyckeln. Använd kommandot az cosmosdb keys list för att hämta primärnyckeln.

az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup --query "primaryMasterKey"

Azure CLI matar ut information som liknar följande exempel.

"RUayjYjixJDWG5xTqIiXjC..."

Kopiera värdet för primaryMasterKey. Klistra in det över <primary_master_key> i local-development.js.

Spara ändringarna.

Kör programmet igen.

Kör npm start igen.

npm start

Ett konsolmeddelande borde nu komma upp som säger att utvecklingsmiljön är klar och igång.

Gå till http://localhost:3000 i en webbläsare. Välj Registrera dig på den översta menyn och försök att skapa två dummy-användare.

MEAN.js-exempelprogrammet lagrar användardata i databasen. Om du har lyckats och MEAN.js automatiskt loggar in på den skapade användaren så fungerar din Azure Cosmos DB-anslutning.

MEAN.js connects successfully to MongoDB

Visa data i datautforskaren

Data som lagras i en Cosmos-databas är tillgängliga att visa och fråga i Azure-portalen.

Om du vill visa, fråga och arbeta med användardata som skapats i föregående steg, loggar du in på Azure-portalen i din webbläsare.

I den översta sökrutan anger du Azure Cosmos DB. När ditt Cosmos-kontoblad öppnas väljer du ditt Cosmos-konto. I det vänstra navigeringsfältet väljer du Data Explorer. Utöka din samling i samlings-fönstret så kan du visa dokumenten i samlingen, fråga data och skapa och köra lagrade procedurer, utlösare och UDF:er.

Data Explorer in the Azure portal

Distribuera Node.js-programmet till Azure

I det här steget distribuerar du ditt Node.js-program till Cosmos DB.

Du kanske har märkt att konfigurationsfilen du ändrade tidigare är för utvecklingsmiljön (/config/env/local-development.js). När du distribuerar ditt program till App Service, körs det i produktionsmiljön som standard. Nu behöver du göra samma ändring till respektive konfigurationsfil.

I din MEAN.js-lagringsplats, öppnar du config/env/production.js.

I objektet db, ersätter du värdet uri som det visas i följande exempel. Se till att ersätta platshållarna som innan.

'mongodb://<cosmosdb-name>:<primary_master_key>@<cosmosdb-name>.documents.azure.com:10255/mean?ssl=true&sslverifycertificate=false',

Anteckning

Alternativet ssl=true är viktigt på grund av Cosmos DB-kraven. Mer information finns i Krav för anslutningssträngar.

Spara dina ändringar till Git i terminalen. Du kan kopiera bägge kommandona för att köra dem tillsammans.

git add .
git commit -m "configured MongoDB connection string"

Rensa resurser

När du är klar med din app och ditt Azure Cosmos DB-konto kan du ta bort de Azure-resurser som du skapade så att du inte debiteras mer. Ta bort resurser:

  1. I Azure Portal sökfältet söker du efter och väljer Resursgrupper.

  2. I listan väljer du den resursgrupp som du skapade för den här snabbstarten.

    Select the resource group to delete

  3. resursgruppens översiktssida väljer du Ta bort resursgrupp.

    Delete the resource group

  4. I nästa fönster anger du namnet på resursgruppen som ska tas bort och väljer sedan Ta bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du skapar ett Azure Cosmos DB MongoDB API-konto med hjälp av Azure Cloud Shell och skapar och kör en MEAN.js-app för att lägga till användare i kontot. Du kan nu importera ytterligare data till ditt Azure Cosmos DB-konto.

Försöker du göra kapacitetsplanering för en migrering till Azure Cosmos DB? Du kan använda information om ditt befintliga databaskluster för kapacitetsplanering.