Leesbewerkingen wereldwijd distribueren met behulp van de API van Azure Cosmos DB voor MongoDB

VAN TOEPASSING OP: MongoDB

Important

Wilt u een bestaande MongoDB-toepassing migreren of gebruikmaken van MQL-functies (MongoDB Query Language) ? Overweeg Azure DocumentDB.

Zoekt u een databaseoplossing voor grootschalige scenario's met een 99.999% SLA (Availability Service Level Agreement), directe automatische schaalaanpassing en automatische failover in meerdere regio's? Overweeg Azure Cosmos DB voor NoSQL.

In dit artikel wordt beschreven hoe u leesbewerkingen wereldwijd distribueert met mongoDB-instellingen voor leesvoorkeur met behulp van de API van Azure Cosmos DB voor MongoDB.

Prerequisites

Als je geen Azure-abonnement hebt, maak dan een gratis account aan voordat je begint.

U kunt de Azure Cosmos DB Emulator voor deze zelfstudie gebruiken met een verbindingsreeks van:

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

Raadpleeg dit quickstart-artikel voor instructies over het gebruik van Azure Portal om een Azure Cosmos DB-account in te stellen met wereldwijde distributie en er vervolgens verbinding mee te maken.

De voorbeeldtoepassing klonen

Open een terminalvenster voor Git, zoals Git Bash, en cd naar een werkmap.

Voer de volgende opdrachten uit om de voorbeeldopslagplaats te klonen. Gebruik een van de volgende voorbeeldopslagplaatsen op basis van uw interesseplatform:

  1. .NET-voorbeeldtoepassing
  2. NodeJS-voorbeeldtoepassing
  3. Mongoose-voorbeeldtoepassing
  4. Java-voorbeeldtoepassing
  5. SpringBoot-voorbeeldtoepassing
git clone <sample repo url>

De toepassing uitvoeren

Afhankelijk van het gebruikte platform installeert u de vereiste pakketten en start u de toepassing. Als u afhankelijkheden wilt installeren, volgt u de README die is opgenomen in de opslagplaats van de voorbeeldtoepassing. Gebruik bijvoorbeeld in de Voorbeeldtoepassing NodeJS de volgende opdrachten om de vereiste pakketten te installeren en de toepassing te starten.

cd mean
npm install
node index.js

De toepassing probeert verbinding te maken met een MongoDB-bron en mislukt omdat de verbindingsreeks ongeldig is. Volg de stappen in het README-bestand om de verbindingsreeks bij te werken url. Werk ook de readFromRegion leesregio bij in uw Azure Cosmos DB-account. De volgende instructies zijn afkomstig uit het NodeJS-voorbeeld:

* Next, substitute the `url`, `readFromRegion` in App.Config with your Azure Cosmos DB account's values. 

Nadat u deze stappen hebt uitgevoerd, wordt de voorbeeldtoepassing uitgevoerd en wordt de volgende uitvoer geproduceerd:

connected!
readDefaultfunc query completed!
readFromNearestfunc query completed!
readFromRegionfunc query completed!
readDefaultfunc query completed!
readFromNearestfunc query completed!
readFromRegionfunc query completed!
readDefaultfunc query completed!
readFromSecondaryfunc query completed!

Lezen met de leesvoorkeurmodus

Het MongoDB-protocol biedt de volgende leesvoorkeurmodi die clients kunnen gebruiken:

  1. primair
  2. primairVoorkeur
  3. tweede
  4. secundairVoorkeur
  5. dichtstbijzijnde

Raadpleeg de gedetailleerde documentatie over leesvoorkeurgedrag van MongoDB voor meer informatie over het gedrag van elk van deze leesvoorkeurmodi. In Azure Cosmos DB komt de primaire regio overeen met de WRITE-regio en de secundaire regio met de READ-regio.

Op basis van veelvoorkomende scenario's raden we u aan de volgende instellingen te gebruiken:

  1. Als leesacties met hoge beschikbaarheid en lage latentie vereist zijn, gebruikt u de modus Nearest leesvoorkeur. Deze instelling leidt de leesbewerkingen naar de dichtstbijzijnde beschikbare regio. Houd er rekening mee dat als de dichtstbijzijnde regio de regio WRITE is, deze bewerkingen worden omgeleid naar die regio.
  2. Als hoge beschikbaarheid en geografische distributie van leesbewerkingen vereist zijn (latentie is geen beperking), gebruikt u de leesvoorkeurmodus PRIMARY PREFERRED of SECONDARY PREFERRED . Met deze instelling worden leesbewerkingen naar respectievelijk een beschikbare SCHRIJFOF LEESREGIO geleid. Als de regio niet beschikbaar is, worden aanvragen doorgestuurd naar de volgende beschikbare regio volgens het gedrag van de leesvoorkeur.

Het volgende codefragment uit de voorbeeldtoepassing laat zien hoe u de 'nearest' leesvoorkeur configureert in NodeJS.

  var query = {};
  var readcoll = client.db('regionDB').collection('regionTest', {readPreference: ReadPreference.NEAREST});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromNearestfunc query completed!");
  });

Op dezelfde manier ziet u in het onderstaande fragment hoe u de SECONDARY_PREFERRED Leesvoorkeur configureert in NodeJS:

  var query = {};
  var readcoll = client.db('regionDB').collection('regionTest', {readPreference: ReadPreference.SECONDARY_PREFERRED});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromSecondaryPreferredfunc query completed!");
  });

De leesvoorkeur kan ook worden ingesteld door als een parameter in de verbindingsreeks URI-opties door te gevenreadPreference:

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017?ssl=true&replicaSet=globaldb&readPreference=nearest';

// Database Name
const dbName = 'myproject';

// Use connect method to connect to the Server
MongoClient.connect(url, function(err, client) {
  console.log("Connected correctly to server");

  const db = client.db(dbName);

  client.close();
});

Raadpleeg de bijbehorende opslagplaatsen voor voorbeeldtoepassingen voor andere platforms, zoals .NET en Java.

Lezen met behulp van tags

Naast de modus Leesvoorkeur kan het MongoDB-protocol tags gebruiken om leesbewerkingen door te voeren. In de API van Azure Cosmos DB voor MongoDB wordt de region tag standaard opgenomen als onderdeel van het isMaster antwoord:

"tags": {
         "region": "West US"
      }

MongoClient kan daarom de region tag samen met de regionaam gebruiken om leesbewerkingen door te geven aan specifieke regio's. Voor Azure Cosmos DB-accounts vindt u regiobenamingen in Azure Portal aan de linkerkant onder Instellingen - Replica gegevens wereldwijd. Deze instelling is handig voor het bereiken van leesisolatie : gevallen waarin clienttoepassing alleen leesbewerkingen naar een specifieke regio wil doorsturen. Deze instelling is ideaal voor niet-productie- of analysetypescenario's, die op de achtergrond worden uitgevoerd en geen kritieke services voor productie zijn.

Het volgende codefragment uit de voorbeeldtoepassing laat zien hoe u de leesvoorkeur configureert met tags in NodeJS:

 var query = {};
  var readcoll = client.db('regionDB').collection('regionTest',{readPreference: new ReadPreference(ReadPreference.SECONDARY_PREFERRED, {"region": "West US"})});
  readcoll.find(query).toArray(function(err, data) {
    assert.equal(null, err);
    console.log("readFromRegionfunc query completed!");
  });

Raadpleeg de bijbehorende opslagplaatsen voor voorbeeldtoepassingen voor andere platforms, zoals .NET en Java.

In dit artikel hebt u geleerd hoe u leesbewerkingen wereldwijd distribueert met behulp van leesvoorkeur met de API van Azure Cosmos DB voor MongoDB.

De hulpbronnen opschonen

Als u deze app niet meer gaat gebruiken, verwijdert u alle resources die zijn gemaakt door dit artikel in Azure Portal met de volgende stappen:

  1. Klik in het linkermenu in Azure Portal op Resourcegroepen en klik vervolgens op de naam van de resource die u hebt gemaakt.
  2. Klik op de pagina van uw resourcegroep op Verwijderen, typ de naam van de resource die u wilt verwijderen in het tekstvak en klik vervolgens op Verwijderen.

Volgende stappen