Delen via


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

VAN TOEPASSING OP: MongoDB

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.

Vereisten

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

U kunt ook Azure Cosmos DB gratis uitproberen zonder Azure-abonnement, zonder kosten en zonder verplichtingen. U kunt de Azure Cosmos DB Emulator ook gebruiken voor deze zelfstudie 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 git-terminalvenster 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 LEESMIJ-bestand om de verbindingsreeks bij te werkenurl. 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. PRIMARY_PREFERRED
  3. SECUNDAIR
  4. SECONDARY_PREFERRED
  5. NAAST

Raadpleeg de gedetailleerde documentatie over leesvoorkeurgedrag van MongoDB voor meer informatie over het gedrag van elk van deze leesvoorkeurmodi. In Azure Cosmos DB worden primaire toewijzingen toegewezen aan de regio WRITE en secundaire toewijzingen aan de LEES-regio.

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

  1. Als leesbewerkingen met hoge beschikbaarheid en lage latentie vereist zijn, gebruikt u de modus DICHTSTBIJZIJNDe 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 respectievelijk naar een beschikbare SCHRIJF- of LEESregio omver leiden. 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 DICHTSTBIJZIJNDe 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 regionamen in azure Portal aan de linkerkant onder Instellingenreplica-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 scenario's met niet-productie-/analysetypen, die op de achtergrond worden uitgevoerd en geen kritieke productieservices 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.

Resources 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 menu aan de linkerkant in Azure Portal op Resourcegroepen en klik vervolgens op 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