Jak globalnie dystrybuować odczyty przy użyciu interfejsu API usługi Azure Cosmos DB dla bazy danych MongoDB
DOTYCZY: MongoDB
W tym artykule pokazano, jak globalnie dystrybuować operacje odczytu przy użyciu ustawień preferencji odczytu bazy danych MongoDB przy użyciu interfejsu API usługi Azure Cosmos DB dla bazy danych MongoDB.
Wymagania wstępne
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Alternatywnie można bezpłatnie wypróbować usługę Azure Cosmos DB bez subskrypcji platformy Azure — nie wymaga to opłat ani zobowiązań. Możesz też użyć emulatora usługi Azure Cosmos DB na potrzeby tego samouczka z parametry połączenia:
mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true
Zapoznaj się z tym artykułem Szybki start , aby uzyskać instrukcje dotyczące konfigurowania konta usługi Azure Cosmos DB z dystrybucją globalną, a następnie nawiązywania z nim połączenia za pomocą witryny Azure Portal.
Klonowanie przykładowej aplikacji
Otwórz okno terminalu usługi Git, na przykład git bash, i za pomocą polecenia cd
przejdź do katalogu roboczego.
Uruchom następujące polecenia w celu sklonowania przykładowego repozytorium. Na podstawie interesującej cię platformy użyj jednego z następujących przykładowych repozytoriów:
- Przykładowa aplikacja platformy .NET
- Przykładowa aplikacja nodeJS
- Przykładowa aplikacja Mongoose
- Przykładowa aplikacja Java
- Przykładowa aplikacja SpringBoot
git clone <sample repo url>
Uruchamianie aplikacji
W zależności od używanej platformy zainstaluj wymagane pakiety i uruchom aplikację. Aby zainstalować zależności, postępuj zgodnie z instrukcjami README zawartymi w przykładowym repozytorium aplikacji. Na przykład w przykładowej aplikacji NodeJS użyj następujących poleceń, aby zainstalować wymagane pakiety i uruchomić aplikację.
cd mean
npm install
node index.js
Aplikacja próbuje nawiązać połączenie ze źródłem bazy danych MongoDB i kończy się niepowodzeniem, ponieważ parametry połączenia jest nieprawidłowa. Wykonaj kroki opisane w pliku README, aby zaktualizować parametry połączenia url
. Ponadto zaktualizuj element readFromRegion
do regionu odczytu na koncie usługi Azure Cosmos DB. Poniższe instrukcje znajdują się w przykładzie nodeJS:
* Next, substitute the `url`, `readFromRegion` in App.Config with your Azure Cosmos DB account's values.
Po wykonaniu tych kroków przykładowa aplikacja jest uruchamiana i generuje następujące dane wyjściowe:
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!
Odczyt przy użyciu trybu preferencji odczytu
Protokół MongoDB udostępnia następujące tryby preferencji odczytu dla klientów do użycia:
- PODSTAWOWE
- PRIMARY_PREFERRED
- WTÓRNY
- SECONDARY_PREFERRED
- NAJBLIŻSZE
Szczegółowe informacje na temat zachowania preferencji odczytu bazy danych MongoDB można znaleźć w dokumentacji dotyczącej zachowania poszczególnych trybów preferencji odczytu. W usłudze Azure Cosmos DB podstawowe mapy do regionu ZAPISU i map pomocniczych do regionu READ.
W oparciu o typowe scenariusze zalecamy użycie następujących ustawień:
- Jeśli wymagana jest wysoka dostępność i odczyty o małym opóźnieniu, użyj trybu preferencji NAJBLIŻSZY odczyt. To ustawienie kieruje operacje odczytu do najbliższego dostępnego regionu. Należy pamiętać, że jeśli najbliższy region jest regionem WRITE, te operacje są kierowane do tego regionu.
- Jeśli wymagana jest wysoka dostępność i geograficzna dystrybucja odczytów (opóźnienie nie jest ograniczeniem), użyj trybu preferencji PREFEROWANY PODSTAWOWY lub POMOCNICZY PREFEROWANY odczyt. To ustawienie kieruje operacje odczytu do dostępnego regionu ZAPISU lub ODCZYTU odpowiednio. Jeśli region jest niedostępny, żądania są kierowane do następnego dostępnego regionu zgodnie z zachowaniem preferencji odczytu.
Poniższy fragment kodu z przykładowej aplikacji pokazuje, jak skonfigurować najbliższą preferencję odczytu w środowisku 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!");
});
Podobnie poniższy fragment kodu pokazuje, jak skonfigurować SECONDARY_PREFERRED preferencji odczytu w środowisku 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!");
});
Preferencje odczytu można również ustawić, przekazując readPreference
jako parametr w opcjach identyfikatora URI parametry połączenia:
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();
});
Zapoznaj się z odpowiednimi repozytoriami przykładowych aplikacji dla innych platform, takich jak .NET i Java.
Odczytywanie przy użyciu tagów
Oprócz trybu preferencji odczytu protokół MongoDB umożliwia używanie tagów do kierowania operacji odczytu. W interfejsie API usługi Azure Cosmos DB dla bazy danych MongoDB region
tag jest domyślnie dołączany jako część isMaster
odpowiedzi:
"tags": {
"region": "West US"
}
W związku z tym klient MongoClient może użyć tagu region
wraz z nazwą regionu, aby kierować operacje odczytu do określonych regionów. W przypadku kont usługi Azure Cosmos DB nazwy regionów można znaleźć w witrynie Azure Portal po lewej stronie w obszarze Dane repliki ustawień> globalnie. To ustawienie jest przydatne do osiągnięcia izolacji odczytu — przypadków, w których aplikacja kliencka chce kierować operacje odczytu tylko do określonego regionu. To ustawienie jest idealne dla scenariuszy typu nieprodukcyjnego/analitycznego, które działają w tle i nie są usługami krytycznymi w środowisku produkcyjnym.
Poniższy fragment kodu z przykładowej aplikacji pokazuje, jak skonfigurować preferencję odczytu z tagami w środowisku 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!");
});
Zapoznaj się z odpowiednimi repozytoriami przykładowych aplikacji dla innych platform, takich jak .NET i Java.
W tym artykule przedstawiono sposób globalnego dystrybuowania operacji odczytu przy użyciu preferencji odczytu z interfejsem API usługi Azure Cosmos DB dla bazy danych MongoDB.
Czyszczenie zasobów
Jeśli nie zamierzasz nadal korzystać z tej aplikacji, usuń wszystkie zasoby utworzone w tym artykule w witrynie Azure Portal, wykonując następujące czynności:
- W menu znajdującym się po lewej stronie w witrynie Azure Portal kliknij pozycję Grupy zasobów, a następnie kliknij nazwę utworzonego zasobu.
- Na stronie grupy zasobów kliknij pozycję Usuń, wpisz w polu tekstowym nazwę zasobu do usunięcia, a następnie kliknij pozycję Usuń.