Ćwiczenie: migrowanie obciążeń bazy danych MongoDB do bazy danych Cosmos
Pracujesz dla firmy narzędziowej, która ma czujniki IoT, które zbierają dane dotyczące temperatury. Temperatury są rejestrowane w bazie danych MongoDB wraz ze znacznikiem czasu. Każde urządzenie ma unikatowy identyfikator. Uruchomisz aplikację mongoDB, która symuluje te urządzenia i będzie przechowywać dane w bazie danych. Użyjesz również drugiej aplikacji, która umożliwia użytkownikowi wykonywanie zapytań dotyczących informacji statystycznych o każdym urządzeniu. Po przeprowadzeniu migracji bazy danych z bazy danych MongoDB do bazy danych Cosmos skonfigurujesz obie aplikacje pod kątem nawiązywania połączenia z bazą danych Cosmos i sprawdzisz, czy nadal działają prawidłowo.
W tym ćwiczeniu przejmiesz istniejącą bazę danych MongoDB i zmigrujesz ją do bazy danych Cosmos. Użyjesz Azure Database Migration Service. Zobaczysz również, jak ponownie skonfigurować istniejące aplikacje korzystające z bazy danych MongoDB w celu nawiązania połączenia z bazą danych Cosmos DB.
Ważne
Usługa Azure Data Migration Service nie jest obsługiwana w bezpłatnym środowisku piaskownicy platformy Azure. Możesz wykonać te kroki w ramach własnej subskrypcji osobistej lub po prostu postępować zgodnie z instrukcjami, aby dowiedzieć się, jak przeprowadzić migrację bazy danych.
Tworzenie bazy danych MongoDB na platformie Azure
Najpierw utworzysz bazę danych MongoDB do przechowywania danych przechwyconych z urządzeń temperatury.
Tworzenie grupy zasobów i Virtual Network
Za pomocą przeglądarki internetowej otwórz nową kartę i przejdź do Azure Portal.
W Azure Portal wybierz pozycję Grupy zasobów, a następnie wybierz pozycję +Dodaj.
Na stronie Tworzenie grupy zasobów wprowadź następujące szczegóły:
Właściwość Wartość Subskrypcja <Twoja subskrypcja> Grupa zasobów mongodbrg Region (Region) Wybierz najbliższą lokalizację Wybierz pozycję Przejrzyj i utwórz , a następnie wybierz pozycję Utwórz. Poczekaj na utworzenie grupy zasobów.
W menu Azure Portal wybierz pozycję + Utwórz zasób.
Na stronie Nowy w polu Wyszukaj w witrynie Marketplace wpisz Virtual Network i naciśnij klawisz Enter.
Na stronie Virtual Network wybierz pozycję Utwórz.
Na stronie Tworzenie sieci wirtualnej wprowadź następujące szczegóły, a następnie wybierz pozycję Dalej: Adresy IP:
Właściwość Wartość Grupa zasobów mongodbrg Nazwa databasevnet Region (Region) Wybierz tę samą lokalizację, która została określona dla grupy zasobów Na stronie Adresy IP ustaw przestrzeń adresową IPv4 na 10.0.0.0/24.
Wybierz domyślną podsieć, a następnie wybierz pozycję Usuń podsieć.
Wybierz pozycję + Dodaj podsieć. W okienku Dodawanie podsieci ustaw domyślną nazwę podsieci, ustaw zakres adresów podsieci na 10.0.0.0/28, a następnie wybierz pozycję Dodaj.
Na stronie Adresy IP wybierz pozycję Dalej: Zabezpieczenia.
Na stronie Zabezpieczenia sprawdź, czy usługa DDoS Protection w warstwie Standardowa jest ustawiona na wartość Wyłącz, a zapora ma wartość Wyłącz. Wybierz pozycję Przejrzyj i utwórz.
Na stronie Tworzenie sieci wirtualnej wybierz pozycję Utwórz. Przed kontynuowaniem poczekaj na utworzenie sieci wirtualnej.
Tworzenie serwera bazy danych MongoDB
W menu Azure Portal wybierz pozycję + Utwórz zasób.
W polu Wyszukaj w witrynie Marketplace wpisz Ubuntu, a następnie naciśnij klawisz Enter.
Na stronie Marketplace wybierz pozycję Ubuntu Server 18.04 LTS.
Na stronie Ubuntu Server 18.04 LTS wybierz pozycję Utwórz.
Na stronie Tworzenie maszyny wirtualnej wprowadź następujące szczegóły:
Właściwość Wartość Grupa zasobów mongodbrg Nazwa maszyny wirtualnej mongodbserver Region (Region) Wybierz tę samą lokalizację, która została określona dla grupy zasobów Opcje dostępności Nie jest wymagana nadmiarowość infrastruktury Obraz Ubuntu Server 18.04 LTS - Gen1 Wystąpienie usługi Azure Spot Niezaznaczone Rozmiar A1_v2 w warstwie Standardowa Typ uwierzytelniania Hasło Nazwa użytkownika użytkownik_azure Hasło Pa55w.rdPa55w.rd Potwierdź hasło Pa55w.rdPa55w.rd Publiczne porty wejściowe Zezwalaj na wybrane porty Wybierz porty wejściowe SSH (22) Wybierz pozycję Dalej: Dyski >.
Na stronie Dyski pozostaw ustawienia domyślne, a następnie wybierz pozycję Dalej: Sieć >.
Na stronie Sieć wprowadź następujące szczegóły:
Właściwość Wartość Sieć wirtualna databasevnet Podsieć ustawienie domyślne (10.0.0.0/28) Publiczny adres IP (nowy) mongodbserver-ip Sieciowa grupa zabezpieczeń karty sieciowej Zaawansowany Konfigurowanie sieciowej grupy zabezpieczeń (nowy) mongodbserver-nsg Wydajniejsze sieci Niezaznaczone Równoważenie obciążenia Niezaznaczone Wybierz pozycję Przejrzyj i utwórz >.
Na stronie walidacji wybierz pozycję Utwórz.
Poczekaj na wdrożenie maszyny wirtualnej przed kontynuowaniem
W menu Azure Portal wybierz pozycję Wszystkie zasoby.
Na stronie Wszystkie zasoby wybierz pozycję mongodbserver-nsg.
Na stronie mongodbserver-nsg w obszarze Ustawienia wybierz pozycję Reguły zabezpieczeń dla ruchu przychodzącego.
Na stronie mongodbserver-nsg — reguły zabezpieczeń dla ruchu przychodzącego wybierz pozycję + Dodaj.
W okienku Dodawanie reguły zabezpieczeń dla ruchu przychodzącego wprowadź następujące szczegóły:
Właściwość Wartość Źródło Dowolne Zakresy portów źródłowych * Miejsce docelowe Dowolne Zakresy portów docelowych 8080 Protokół Dowolny Akcja Zezwalaj Priorytet 1030 Nazwa Port bazy danych Mongodb Opis Port używany przez klientów do nawiązywania połączenia z bazą danych MongoDB Wybierz pozycję Dodaj.
Uwaga
Skonfigurujesz bazę danych MongoDB do używania portu 8080 w tym ćwiczeniu. Należy to zrobić tylko z powodu ograniczeń zabezpieczeń w tym środowisku. Zwykle należy użyć domyślnego portu bazy danych MongoDB 27017.
Instalowanie bazy danych MongoDB
W menu Azure Portal wybierz pozycję Wszystkie zasoby.
Na stronie Wszystkie zasoby wybierz pozycję mongodbserver-ip.
Na stronie mongodbserver-ip zanotuj adres IP.
Na pasku narzędzi w górnej części Azure Portal wybierz pozycję Cloud Shell.
Jeśli zostanie wyświetlone pole Komunikat Nie masz zainstalowanego magazynu , wybierz pozycję Utwórz magazyn.
Po uruchomieniu Cloud Shell na liście rozwijanej powyżej okna Cloud Shell wybierz pozycję Bash.
W Cloud Shell wprowadź następujące polecenie, aby nawiązać połączenie z maszyną wirtualną mongodbserver. Zastąp <adres> IP wartością adresu IP mongodbserver-ip:
ssh azureuser@<ip address>
W wierszu polecenia wpisz tak , aby kontynuować nawiązywanie połączenia.
Wprowadź hasło Pa55w.rdPa55w.rd.
Aby ponownie załadować bazę danych pakietu, wprowadź następujące polecenie:
sudo apt-get update
Aby zainstalować bazę danych MongoDB, wprowadź następujące polecenie:
sudo apt-get install -y mongodb
Instalacja powinna kontynuować wykonywanie komunikatów dotyczących instalowania, przygotowywania i rozpakowywania pakietów. Ukończenie instalacji może potrwać kilka minut.
Konfigurowanie bazy danych MongoDB
Domyślnie wystąpienie bazy danych Mongo DB jest skonfigurowane do uruchamiania bez uwierzytelniania. W tym zadaniu skonfigurujesz bazę danych MongoDB tak, aby była powiązana z lokalnym interfejsem sieciowym, aby mogła akceptować połączenia z innych komputerów. Włączysz również uwierzytelnianie i utworzysz niezbędne konto użytkownika do przeprowadzenia migracji. Na koniec dodasz konto, którego aplikacja testowa może użyć do wykonywania zapytań względem bazy danych.
Aby otworzyć plik konfiguracji bazy danych MongoDB, uruchom następujące polecenie:
sudo nano /etc/mongodb.conf
W pliku znajdź ustawienie bind_ip i ustaw je na 0.0.0.0.0.
Znajdź ustawienie portu i ustaw go na wartość 8080.
Aby zapisać plik konfiguracji, naciśnij klawisz Esc , a następnie naciśnij klawisze CTRL + X. Naciśnij klawisz y , a następnie klawisz Enter , aby zapisać zmodyfikowany bufor.
Aby ponownie uruchomić usługę MongoDB i zastosować zmiany, wprowadź następujące polecenie:
sudo service mongodb restart
Aby nawiązać połączenie z usługą MongoDB, wprowadź następujące polecenie:
mongo --host 127.0.0.1:8080
> W wierszu polecenia, aby przełączyć się do bazy danych administratora, uruchom następujące polecenie:
use admin;
Aby utworzyć nowego użytkownika o nazwie administrator, uruchom następujące polecenie. Aby uzyskać lepszą czytelność, możesz wprowadzić polecenie w jednym wierszu lub w wielu wierszach. Polecenie jest wykonywane, gdy
mongo
program osiągnie średnik:db.createUser( { user: "administrator", pwd: "Pa55w.rd", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "clusterMonitor", db:"admin" }, "readWriteAnyDatabase" ] } );
Aby zakończyć
mongo
program, wprowadź to polecenie;exit;
Aby nawiązać połączenie z bazą danych MongoDB przy użyciu konta nowego administratora, uruchom następujące polecenie:
mongo admin -u "administrator" -p "Pa55w.rd" --host 127.0.0.1:8080
Aby przełączyć się do bazy danych DeviceData , wykonaj następujące polecenie:
use DeviceData;
Aby utworzyć użytkownika o nazwie deviceadmin, którego aplikacja użyje do nawiązania połączenia z bazą danych, uruchom następujące polecenie:
db.createUser( { user: "deviceadmin", pwd: "Pa55w.rd", roles: [ { role: "readWrite", db: "DeviceData" } ] } );
Aby zakończyć
mongo
program, wprowadź to polecenie;exit;
Uruchom następujące polecenie ponownie uruchom usługę mongodb. Sprawdź, czy usługa jest uruchamiana ponownie bez żadnych komunikatów o błędach:
sudo service mongodb restart
Uruchom następujące polecenie, aby sprawdzić, czy możesz zalogować się do bazy danych mongodb jako użytkownik deviceadmin:
mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080
> W wierszu polecenia uruchom następujące polecenie, aby zamknąć powłokę mongo:
exit;
W wierszu polecenia powłoki bash uruchom następujące polecenie, aby odłączyć się od serwera Bazy danych MongoDB i powrócić do Cloud Shell:
exit
Wypełnianie i wykonywanie zapytań względem bazy danych MongoDB
Utworzono teraz serwer i bazę danych Bazy danych MongoDB. Następnym krokiem jest zademonstrowanie przykładowych aplikacji, które mogą wypełniać dane w tej bazie danych i wykonywać zapytania o nie.
Kompilowanie i uruchamianie aplikacji w celu wypełnienia bazy danych MongoDB
W Cloud Shell platformy Azure uruchom następujące polecenie, aby pobrać przykładowy kod:
git clone https://github.com/MicrosoftLearning/DP-060T00A-Migrating-your-Database-to-Cosmos-DB migration-workshop-apps
Przejdź do folderu migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceCapture :
cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture
Użyj edytora kodu , aby sprawdzić plik TemperatureDevice.cs :
code TemperatureDevice.cs
Kod w tym pliku zawiera klasę o nazwie TemperatureDevice , która symuluje urządzenie temperatury przechwytujące dane i zapisuje je w bazie danych MongoDB. Używa ona biblioteki Bazy danych MongoDB dla .NET Framework. Konstruktor TemperatureDevice łączy się z bazą danych przy użyciu ustawień przechowywanych w pliku konfiguracji aplikacji. Metoda RecordTemperatures generuje odczyt i zapisuje go w bazie danych.
Zamknij edytor kodu, a następnie otwórz plik ThermometerReading.cs :
code ThermometerReading.cs
Ten plik przedstawia strukturę dokumentów przechowywanych w bazie danych przez aplikację. Każdy dokument zawiera następujące pola:
- Identyfikator obiektu. Jest to pole "_id" wygenerowane przez bazę danych MongoDB w celu unikatowego zidentyfikowania każdego dokumentu.
- Identyfikator urządzenia. Każde urządzenie ma liczbę z prefiksem "Urządzenie".
- Temperatura zarejestrowana przez urządzenie.
- Data i godzina zarejestrowania temperatury.
Zamknij edytor kodu, a następnie otwórz plik App.config :
code App.config
Ten plik zawiera ustawienia nawiązywania połączenia z bazą danych MongoDB.
Ustaw wartość klucza adresu na adres IP zarejestrowanego wcześniej serwera MongoDB.
Zmień port używany przez aplikację na 8080.
Zapisz plik i zamknij edytor przy użyciu klawiszy CTRL, a następnie naciśnij klawiszeCTRLq + + .
Uruchom następujące polecenie, aby ponownie skompilować aplikację:
dotnet build
Może to potrwać około 5 minut.
Uruchom aplikację:
dotnet run
Aplikacja symuluje jednocześnie 100 urządzeń. Zezwól aplikacji na uruchomienie przez kilka minut, a następnie naciśnij klawisz Enter, aby ją zatrzymać.
Kompilowanie i uruchamianie innej aplikacji w celu wykonywania zapytań dotyczących bazy danych MongoDB
Przejdź do folderu DP160T00A-Migrating-your-Database-to-Cosmos-DB/MongoDeviceDataCapture/DeviceDataQuery:
cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
Ten folder zawiera inną aplikację, której można użyć do analizowania danych przechwyconych przez każde urządzenie.
Użyj edytora kodu , aby zbadać plik Program.cs :
code Program.cs
Aplikacja łączy się z bazą danych (przy użyciu metody ConnectToDatabase w dolnej części pliku), a następnie monituje użytkownika o numer urządzenia. Aplikacja używa biblioteki MongoDB dla .NET Framework do utworzenia i uruchomienia potoku agregacji, który oblicza następujące statystyki dla określonego urządzenia:
- Liczba zarejestrowanych odczytów.
- Zarejestrowana średnia temperatura.
- Najniższy odczyt.
- Najwyższy odczyt.
- Najnowsze czytanie.
Zamknij edytor kodu, a następnie otwórz plik App.config :
code App.config
Ustaw wartość klucza adresu na adres IP zarejestrowanego wcześniej serwera MongoDB.
Zmień port używany przez aplikację na 8080.
Zapisz plik i zamknij edytor przy użyciu klawiszy CTRL, a następnie naciśnij klawiszeCTRLq + + .
Skompiluj i uruchom aplikację:
dotnet build dotnet run
W wierszu polecenia Wprowadź numer urządzenia wprowadź wartość z zakresu od 0 do 99. Aplikacja będzie wykonywać zapytania dotyczące bazy danych, obliczać statystyki i wyświetlać wyniki. Naciśnij klawisz Q , aby zamknąć aplikację.
Migrowanie bazy danych MongoDB do usługi Cosmos DB
Następnym krokiem jest przeniesienie bazy danych MongoDB do bazy danych Cosmos DB.
Tworzenie konta Cosmos i bazy danych
Wróć do witryny Azure Portal.
W menu wybierz pozycję + Utwórz zasób.
Na stronie Nowy w polu Wyszukaj w witrynie Marketplace wpisz *Azure Cosmos DB, a następnie naciśnij klawisz Enter.
Na stronie Azure Cosmos DB wybierz pozycję Utwórz.
Na stronie Tworzenie konta usługi Azure Cosmos DB wprowadź następujące ustawienia:
Właściwość Wartość Grupa zasobów mongodbrg Nazwa konta mongodb*nnn*, gdzie nnn jest liczbą losową wybraną przez Użytkownika interfejs API Interfejs API usługi Azure Cosmos DB dla bazy danych MongoDB Notebooks Wyłączone Lokalizacja Określ tę samą lokalizację, która była używana dla serwera MongoDB i sieci wirtualnej Tryb wydajności Aprowizowana przepływność Zastosuj rabat na podstawie warstwy Bezpłatna Zastosuj Typ konta Nieprodukcyjne Wersja 3,6 Nadmiarowość geograficzna Wyłącz Moduły zapisujące obsługujące wiele regionów Wyłącz Strefy dostępności Wyłącz Wybierz pozycję Przejrzyj i utwórz.
Na stronie walidacji wybierz pozycję Utwórz i poczekaj na wdrożenie konta usługi Cosmos DB.
W menu Azure Portal wybierz pozycję Wszystkie zasoby, a następnie wybierz nowe konto usługi Cosmos DB (mongodbnnn).
Na stronie mongodbnnn wybierz pozycję Data Explorer.
W okienku Data Explorer wybierz pozycję Nowa kolekcja.
W okienku Dodawanie kolekcji określ następujące ustawienia:
Właściwość Wartość Identyfikator bazy danych Wybierz pozycję Utwórz nową, a następnie wpisz DeviceData Aprowizacja przepływności bazy danych Wybrane Przepływność 10000 Identyfikator kolekcji Temperatury Pojemność magazynu Nieograniczona liczba Klucz fragmentu Deviceid Mój klucz fragmentu jest większy niż 100 bajtów wyjdź z zaznaczonym Tworzenie indeksu wieloznacznych we wszystkich polach wyjdź z zaznaczonym Magazyn analityczny Wyłączone Wybierz przycisk OK.
Tworzenie Database Migration Service
Wróć do witryny Azure Portal.
Kliknij pozycję Wszystkie usługi, kliknij pozycję Subskrypcje, a następnie kliknij swoją subskrypcję.
Na stronie subskrypcji w obszarze Ustawienia kliknij pozycję Dostawcy zasobów.
W polu Filtruj według nazwy wpisz DataMigration, a następnie kliknij pozycję Microsoft.DataMigration.
Jeśli wartość Microsoft.DataMigration nie jest zarejestrowana, kliknij przycisk Zarejestruj i poczekaj na zmianę stanu na Zarejestrowano. Może być konieczne kliknięcie przycisku Odśwież , aby zobaczyć zmianę stanu.
W menu Azure Portal wybierz pozycję + Utwórz zasób.
Na stronie Nowy w polu Wyszukaj w witrynie Marketplace wpisz Azure Database Migration Service, a następnie naciśnij klawisz Enter.
Na stronie Azure Database Migration Service wybierz pozycję Utwórz.
Na stronie Tworzenie usługi Migration Service wprowadź następujące ustawienia:
Właściwość Wartość Grupa zasobów mongodbrg Nazwa usługi MongoDBMigration Lokalizacja Wybierz tę samą lokalizację, której użyto poprzednio Tryb usługi Azure Warstwa cenowa Standardowa: 1 rdzenie wirtualne Wybierz pozycję Dalej: Sieć.
Na stronie Sieć wybierz pozycję databasevnet/default, a następnie wybierz pozycję Przejrzyj i utwórz.
Wybierz pozycję Utwórz i poczekaj na wdrożenie usługi przed kontynuowaniem. Ta operacja może potrwać około 10 minut.
Tworzenie i uruchamianie nowego projektu migracji
W menu Azure Portal wybierz pozycję Grupy zasobów.
W oknie Grupy zasobów wybierz pozycję mongodbrg.
W oknie mongodbrg wybierz pozycję MongoDBMigration.
Na stronie MongoDBMigration wybierz pozycję + Nowa migracja Project.
Na stronie Nowy projekt migracji wprowadź następujące ustawienia:
Właściwość Wartość Project name (Nazwa projektu) MigrateTemperatureData Source server type (Typ serwera źródłowego) MongoDB Target server type (Typ serwera docelowego) Cosmos DB (interfejs API bazy danych MongoDB) Wybierz typ działania Migracja danych w trybie offline Wybierz pozycję Utwórz i uruchom działanie.
Po uruchomieniu Kreatora migracji na stronie Szczegóły źródła wprowadź następujące szczegóły:
Właściwość Wartość Tryb Tryb standardowy Nazwa serwera źródłowego Określ wartość zarejestrowanego wcześniej adresu IP mongodbserver-ip Port serwera 8080 Nazwa użytkownika Administratora Hasło Pa55w.rd Wymagaj protokołu SSL wyrejestrowane Wybierz pozycję Dalej: wybierz element docelowy.
Na stronie Wybierz element docelowy wprowadź następujące szczegóły:
Właściwość Wartość Tryb Wybierz docelową bazę danych Cosmos Wybierz nazwę bazy danych comos mongodb*nnn* Parametry połączenia Zaakceptuj parametry połączenia wygenerowane dla konta usługi Cosmos DB Wybierz pozycję Dalej: ustawienie bazy danych.
Na stronie Ustawienia bazy danych wprowadź następujące szczegóły:
Właściwość Wartość Źródłowa baza danych DeviceData Docelowa baza danych DeviceData Przepływność (RU/s) 1000 Czyszczenie kolekcji Wyczyść to pole Wybierz pozycję Dalej: Ustawienie kolekcji.
Na stronie Ustawienia kolekcja wybierz strzałkę listy rozwijanej według bazy danych DeviceData, wprowadź następujące szczegóły:
Właściwość Wartość Nazwa Temperatury Kolekcja docelowa Temperatury Przepływność (RU/s) 1000 Klucz fragmentu Deviceid Unikatowe Pozostaw puste. Wybierz pozycję Dalej: Podsumowanie migracji.
Na stronie Podsumowanie migracji w polu Nazwa działania wprowadź mongodb-migration, a następnie wybierz pozycję Rozpocznij migrację.
Na stronie migracji bazy danych mongodb wybierz pozycję Odśwież co 30 sekund, aż migracja zakończy się. Zanotuj liczbę przetworzonych dokumentów.
Sprawdź, czy migracja zakończyła się pomyślnie
W menu Azure Portal wybierz pozycję Wszystkie zasoby.
Na stronie Wszystkie zasoby wybierz pozycję mongodbnnn.
Na stronie mongodb*nnn wybierz pozycję Data Explorer.
W okienku Data Explorer rozwiń bazę danych DeviceData, rozwiń kolekcję Temperatures (Temperatury), a następnie wybierz pozycję Dokumenty.
W okienku Dokumenty przewiń listę dokumentów. Powinien zostać wyświetlony identyfikator dokumentu (_id) i klucz fragmentu (/deviceID) dla każdego dokumentu.
Wybierz dowolny dokument. Powinny zostać wyświetlone szczegóły dokumentu. Typowy dokument wygląda następująco:
{ "_id" : ObjectId("5ce8104bf56e8a04a2d0929a"), "deviceID" : "Device 83", "temperature" : 19.65268837271849, "time" : 636943091952553500 }
Na pasku narzędzi w okienku Eksplorator dokumentów wybierz pozycję Nowa powłoka.
W okienku >Powłoka 1 w wierszu polecenia wprowadź następujące polecenie, a następnie naciśnij klawisz Enter:
db.Temperatures.count()
To polecenie wyświetla liczbę dokumentów w kolekcji Temperatures. Powinna być zgodna z liczbą zgłoszoną przez Kreatora migracji.
Wprowadź następujące polecenie, a następnie naciśnij klawisz Enter:
db.Temperatures.find({deviceID: "Device 99"})
To polecenie pobiera i wyświetla dokumenty dla urządzenia 99.
Ponowne konfigurowanie i uruchamianie istniejących aplikacji w celu korzystania z bazy danych Cosmos
Ostatnim krokiem jest ponowne skonfigurowanie istniejących aplikacji MongoDB w celu nawiązania połączenia z usługą Cosmos DB i sprawdzenie, czy nadal działają. Wymaga to zmodyfikowania sposobu, w jaki aplikacje łączą się z bazą danych, ale logika aplikacji powinna pozostać niezmieniona.
W okienku mongodbnnn w obszarze Ustawienia wybierz pozycję Parametry połączenia.
Na stronie parametrów połączenia mongodbnnn zanotuj następujące ustawienia:
- Host
- Nazwa użytkownika
- Hasło podstawowe
Wróć do okna Cloud Shell (ponownie połącz się, jeśli upłynął limit czasu sesji) i przejdź do folderu migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery:
cd ~/migration-workshop-apps/MongoDeviceDataCapture/DeviceDataQuery
Otwórz plik App.config w edytorze kodu:
code App.config
W sekcji Ustawienia dla bazy danych MongoDB w pliku oznacz istniejące ustawienia jako komentarz.
Usuń komentarz ustawień w sekcji Ustawienia dla interfejsu API mongo usługi Cosmos DB i ustaw wartości dla tych ustawień w następujący sposób:
Ustawienie Wartość Adres Host ze strony parametrów połączenia mongodbnnn Port Port ze strony parametrów połączenia mongodbnnn Nazwa użytkownika Nazwa UŻYTKOWNIKA ze strony parametrów połączenia mongodbnnn Hasło HASŁO PODSTAWOWE ze strony parametrów połączenia mongodbnnn Ukończony plik powinien wyglądać podobnie do następującego:
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="Database" value="DeviceData" /> <add key="Collection" value="Temperatures" /> <!-- Settings for MongoDB <add key="Address" value="nn.nn.nn.nn" /> <add key="Port" value="27017" /> <add key="Username" value="deviceadmin" /> <add key="Password" value="Pa55w.rd" /> End of settings for MongoDB --> <!-- Settings for CosmosDB Mongo API --> <add key="Address" value="mongodbnnn.documents.azure.com"/> <add key="Port" value="10255"/> <add key="Username" value="mongodbnnn"/> <add key="Password" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="/> <!-- End of settings for CosmosDB Mongo API --> </appSettings> </configuration>
Zapisz plik, a następnie zamknij edytor kodu.
Otwórz plik Program.cs przy użyciu edytora kodu:
code Program.cs
Przewiń w dół do metody ConnectToDatabase .
Oznacz jako komentarz wiersz, który ustawia poświadczenia na potrzeby nawiązywania połączenia z bazą danych MongoDB i usuń komentarz instrukcji określających poświadczenia służące do nawiązywania połączenia z bazą danych Cosmos. Kod powinien wyglądać następująco:
// Connect to the MongoDB database MongoClient client = new MongoClient(new MongoClientSettings { Server = new MongoServerAddress(address, port), ServerSelectionTimeout = TimeSpan.FromSeconds(10), // // Credential settings for MongoDB // // Credential = MongoCredential.CreateCredential(database, azureLogin.UserName, azureLogin.SecurePassword), // // Credential settings for CosmosDB Mongo API // UseTls = true, Credential = new MongoCredential("SCRAM-SHA-1", new MongoInternalIdentity(database, azureLogin.UserName), new PasswordEvidence(azureLogin.SecurePassword)) // End of Mongo API settings });
Te zmiany są niezbędne, ponieważ oryginalna baza danych MongoDB nie używała połączenia SSL. Cosmos DB zawsze używa protokołu SSL.
Zapisz plik, a następnie zamknij edytor kodu.
Skompiluj i uruchom aplikację:
dotnet build dotnet run
W wierszu polecenia Wprowadź numer urządzenia wprowadź numer urządzenia z zakresu od 0 do 99. Aplikacja powinna działać dokładnie tak, jak wcześniej, z wyjątkiem tego czasu używa danych przechowywanych w bazie danych Cosmos DB.
Zwiększanie wydajności zapytań w bazie danych Cosmos
Cosmos DB umożliwia dodanie większej liczby indeksów w celu zwiększenia wydajności zapytań. Ponieważ agregujemy dane dotyczące identyfikatora deviceID, dodając to pole jako indeks, przyspieszy wykonywanie zapytań.
Wróć do witryny Azure Portal.
Po lewej stronie wybierz pozycję Data Explorer.
W okienku Data Explorer rozwiń bazę danych DeviceData, rozwiń kolekcję Temperatures (Temperatury), a następnie wybierz pozycję Ustawienia.
Wybierz pozycję Zasady indeksowania.
W obszarze _id dodać nowy indeks, wprowadź wartość deviceID w polu Definicja i wybierz pozycję Jedno pole dla pozycji Typ.
Wybierz pozycję Zapisz , aby dodać nowy indeks.
Wróć do Cloud Shell, aby spróbować ponownie wykonać zapytanie i zanotuj ulepszoną odpowiedź w aplikacji.
Przetestuj aplikację przy użyciu innych numerów urządzeń. Wprowadź wartość Q , aby zakończyć.
Pomyślnie przeprowadzono migrację bazy danych MongoDB do bazy danych Cosmos DB i ponownie skonfigurowano istniejącą aplikację Bazy danych MongoDB w celu nawiązania połączenia z nową bazą danych Cosmos DB.
Czyszczenie utworzonych zasobów
Ważne
Jeśli wykonano te kroki we własnej subskrypcji osobistej, możesz usunąć zasoby indywidualnie lub usunąć grupę zasobów, aby usunąć cały zestaw zasobów. Uruchomione zasoby mogą generować koszty.
Za pomocą Cloud Shell uruchom następujące polecenie, aby usunąć grupę zasobów:
az group delete --name mongodbrg
Potrzebujesz pomocy? Zobacz nasz przewodnik po rozwiązywaniu problemów lub prześlij szczegółową opinię, zgłaszając problem.