Ćwiczenie: migrowanie obciążeń bazy danych MongoDB do usługi Cosmos DB

Ukończone

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 zapiszesz dane w bazie danych. Użyjesz również drugiej aplikacji, która umożliwia użytkownikowi wykonywanie zapytań dotyczących informacji statystycznych dotyczących każdego urządzenia. Po przeprowadzeniu migracji bazy danych z bazy danych MongoDB do usługi Cosmos DB skonfigurujesz obie aplikacje pod kątem nawiązywania połączenia z usługą Cosmos DB i sprawdź, czy nadal działają prawidłowo.

W tym ćwiczeniu przejmiesz istniejącą bazę danych MongoDB i zmigrujesz ją do usługi Cosmos DB. Użyjesz usługi 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 we 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 sieci wirtualnej

  1. Za pomocą przeglądarki internetowej otwórz nową kartę i przejdź do witryny Azure Portal.

  2. W witrynie Azure Portal wybierz pozycję Grupy zasobów, a następnie wybierz pozycję +Dodaj.

  3. Na stronie Tworzenie grupy zasobów wprowadź następujące szczegóły:

    Właściwości Wartość
    Subskrypcja <Twoja subskrypcja>
    Grupa zasobów mongodbrg
    Region Wybierz najbliższą lokalizację
  4. Wybierz pozycję Przejrzyj i utwórz , a następnie wybierz pozycję Utwórz. Poczekaj na utworzenie grupy zasobów.

  5. W menu witryny Azure Portal wybierz pozycję + Utwórz zasób.

  6. Na stronie Nowy w polu Wyszukaj w witrynie Marketplace wpisz Virtual Network i naciśnij klawisz Enter.

  7. Na stronie Sieć wirtualna wybierz pozycję Utwórz.

  8. Na stronie Tworzenie sieci wirtualnej wprowadź następujące szczegóły, a następnie wybierz pozycję Dalej: Adresy IP:

    Właściwości Wartość
    Grupa zasobów mongodbrg
    Nazwisko databasevnet
    Region Wybierz tę samą lokalizację, która została określona dla grupy zasobów
  9. Na stronie Adresy IP ustaw przestrzeń adresową IPv4 na 10.0.0.0/24.

  10. Wybierz domyślną podsieć, a następnie wybierz pozycję Usuń podsieć.

  11. 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.

  12. Na stronie Adresy IP wybierz pozycję Dalej: Zabezpieczenia.

  13. Na stronie Zabezpieczenia sprawdź, czy usługa Azure DDoS Network Protection jest ustawiona na Wartość Wyłącz, a zapora ma wartość Wyłącz. Wybierz pozycję Przejrzyj i utwórz.

  14. Na stronie Tworzenie sieci wirtualnej wybierz pozycję Utwórz. Przed kontynuowaniem poczekaj na utworzenie sieci wirtualnej.

Tworzenie serwera bazy danych MongoDB

  1. W menu witryny Azure Portal wybierz pozycję + Utwórz zasób.

  2. W polu Wyszukaj w witrynie Marketplace wpisz Ubuntu, a następnie naciśnij klawisz Enter.

  3. Na stronie Marketplace wybierz pozycję Ubuntu Server 18.04 LTS.

  4. Na stronie Ubuntu Server 18.04 LTS wybierz pozycję Utwórz.

  5. Na stronie Tworzenie maszyny wirtualnej wprowadź następujące szczegóły:

    Właściwości Wartość
    Grupa zasobów mongodbrg
    Virtual machine name mongodbserver
    Region Wybierz tę samą lokalizację, która została określona dla grupy zasobów
    Opcje dostępności Nie jest wymagana nadmiarowość infrastruktury
    Image Ubuntu Server 18.04 LTS - Gen1
    Wystąpienie usługi Azure Spot Niezaznaczone
    Size A1_v2 w warstwie Standardowa
    Authentication type Password
    Nazwa użytkownika użytkownik_azure
    Password Pa55w.rdPa55w.rd
    Potwierdź hasło Pa55w.rdPa55w.rd
    Publiczne porty ruchu przychodzącego Zezwalaj na wybrane porty
    Wybierz porty wejściowe SSH (22)
  6. Wybierz pozycję Dalej: Dyski >.

  7. Na stronie Dyski pozostaw ustawienia domyślne, a następnie wybierz pozycję Dalej: Sieć>.

  8. Na stronie Sieć wprowadź następujące szczegóły:

    Właściwości Wartość
    Sieć wirtualna databasevnet
    Podsieć wartość domyślna (10.0.0.0/28)
    Publiczny adres IP (nowy) mongodbserver-ip
    Sieciowa grupa zabezpieczeń karty sieciowej Zaawansowani
    Konfigurowanie sieciowej grupy zabezpieczeń (nowy) mongodbserver-nsg
    Przyspieszona sieć Niezaznaczone
    Równoważenie obciążenia Niezaznaczone
  9. Wybierz pozycję Przejrzyj i utwórz>.

  10. Na stronie walidacji wybierz pozycję Utwórz.

  11. Przed kontynuowaniem poczekaj na wdrożenie maszyny wirtualnej

  12. W menu witryny Azure Portal wybierz pozycję Wszystkie zasoby.

  13. Na stronie Wszystkie zasoby wybierz pozycję mongodbserver-nsg.

  14. Na stronie mongodbserver-nsg w obszarze Ustawienia wybierz pozycję Reguły zabezpieczeń dla ruchu przychodzącego.

  15. Na stronie mongodbserver-nsg — Reguły zabezpieczeń dla ruchu przychodzącego wybierz pozycję + Dodaj.

  16. W okienku Dodawanie reguły zabezpieczeń dla ruchu przychodzącego wprowadź następujące szczegóły:

    Właściwości Wartość
    Lokalizacja źródłowa Dowolne
    Zakresy portów źródłowych *
    Element docelowy Dowolne
    Zakresy portów docelowych 8080
    Protokół Dowolne
    Akcja Zezwalaj
    Priorytet 1030
    Nazwisko Port bazy danych Mongodb
    opis Port używany przez klientów do nawiązywania połączenia z bazą danych MongoDB
  17. Wybierz pozycję Dodaj.

Uwaga

Skonfigurujesz bazę danych MongoDB do korzystania z 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

  1. W menu witryny Azure Portal wybierz pozycję Wszystkie zasoby.

  2. Na stronie Wszystkie zasoby wybierz pozycję mongodbserver-ip.

  3. Na stronie mongodbserver-ip zanotuj adres IP.

  4. Na pasku narzędzi w górnej części witryny Azure Portal wybierz pozycję Cloud Shell.

  5. Jeśli zostanie wyświetlone pole komunikatu Nie masz zainstalowanego magazynu, wybierz pozycję Utwórz magazyn.

  6. Po uruchomieniu usługi Cloud Shell na liście rozwijanej powyżej okna usługi Cloud Shell wybierz pozycję Bash.

  7. W usłudze 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>
    
  8. W wierszu polecenia wpisz tak , aby kontynuować nawiązywanie połączenia.

  9. Wprowadź hasło Pa55w.rdPa55w.rd.

  10. Aby ponownie załadować bazę danych pakietu, wprowadź następujące polecenie:

    sudo apt-get update
    
  11. Aby zainstalować bazę danych MongoDB, wprowadź następujące polecenie:

    sudo apt-get install -y mongodb
    

    Instalacja powinna kontynuować komunikaty dotyczące 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, za pomocą którego aplikacja testowa może wykonywać zapytania względem bazy danych.

  1. Aby otworzyć plik konfiguracji bazy danych MongoDB, uruchom następujące polecenie:

    sudo nano /etc/mongodb.conf
    
  2. W pliku znajdź ustawienie bind_ip i ustaw je na 0.0.0.0.0.

  3. Znajdź ustawienie portu i ustaw go na wartość 8080.

  4. 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.

  5. Aby ponownie uruchomić usługę MongoDB i zastosować zmiany, wprowadź następujące polecenie:

    sudo service mongodb restart
    
  6. Aby nawiązać połączenie z usługą MongoDB, wprowadź następujące polecenie:

    mongo --host 127.0.0.1:8080
    
  7. > W wierszu polecenia, aby przełączyć się do bazy danych administratora, uruchom następujące polecenie:

    use admin;
    
  8. Aby utworzyć nowego użytkownika o nazwie administrator, uruchom następujące polecenie. Możesz wprowadzić polecenie w jednym wierszu lub w wielu wierszach, aby uzyskać lepszą czytelność. 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"
            ]
        }
    );
    
  9. Aby zamknąć mongo program, wprowadź to polecenie;

    exit;
    
  10. 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
    
  11. Aby przełączyć się do bazy danych DeviceData , wykonaj następujące polecenie:

    use DeviceData;    
    
  12. Aby utworzyć użytkownika o nazwie deviceadmin, którego aplikacja będzie używać do nawiązywania połączenia z bazą danych, uruchom następujące polecenie:

    db.createUser(
        {
            user: "deviceadmin",
            pwd: "Pa55w.rd",
            roles: [ { role: "readWrite", db: "DeviceData" } ]
        }
    );
    
  13. Aby zamknąć mongo program, wprowadź to polecenie;

    exit;
    
  14. 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
    
  15. Uruchom następujące polecenie, aby sprawdzić, czy możesz teraz zalogować się do bazy danych mongodb jako użytkownik deviceadmin:

    mongo DeviceData -u "deviceadmin" -p "Pa55w.rd" --host 127.0.0.1:8080
    
  16. > W wierszu polecenia uruchom następujące polecenie, aby zamknąć powłokę mongo:

    exit;
    
  17. W wierszu polecenia powłoki bash uruchom następujące polecenie, aby odłączyć się od serwera MongoDB i wrócić do usługi Cloud Shell:

    exit
    

Wypełnianie i wykonywanie zapytań względem bazy danych MongoDB

Utworzono serwer i bazę danych MongoDB. Następnym krokiem jest zademonstrowanie przykładowych aplikacji, które mogą wypełniać dane w tej bazie danych i wykonywać względem ich zapytania.

Kompilowanie i uruchamianie aplikacji w celu wypełnienia bazy danych MongoDB

  1. W usłudze Azure Cloud Shell 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
    
  2. Przejdź do folderu migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceCapture :

    cd ~/migration-workshop-apps/MongoDeviceDataCapture/MongoDeviceDataCapture
    
  3. Użyj edytora kodu, aby zbadać 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 zapisując je w bazie danych MongoDB. Używa biblioteki MongoDB dla programu .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.

  4. 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. 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.
  5. 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.

  6. Ustaw wartość klucza adresu na adres IP zarejestrowanego wcześniej serwera MongoDB.

  7. Zmień port używany przez aplikację na 8080.

  8. Zapisz plik i zamknij edytor przy użyciu klawiszy CTRL s, a następnie naciśnij klawisze CTRL + + q.

  9. Uruchom następujące polecenie, aby ponownie skompilować aplikację:

    dotnet build
    

    Może to potrwać około 5 minut.

  10. 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

  1. 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.

  2. Użyj edytora kodu , aby zbadać plik Program.cs :

    code Program.cs
    

    Aplikacja łączy się z bazą danych (przy użyciu metody Połączenie ToDatabase w dolnej części pliku), a następnie monituje użytkownika o podanie numeru urządzenia. Aplikacja używa biblioteki MongoDB dla programu .NET Framework do utworzenia i uruchomienia potoku agregacji, który oblicza następujące statystyki dla określonego urządzenia:

    • Liczba zarejestrowanych odczytów.
    • Zarejestrowano średnią temperaturę.
    • Najniższy odczyt.
    • Najwyższy odczyt.
    • Najnowsze czytanie.
  3. Zamknij edytor kodu, a następnie otwórz plik App.config :

    code App.config
    
  4. Ustaw wartość klucza adresu na adres IP zarejestrowanego wcześniej serwera MongoDB.

  5. Zmień port używany przez aplikację na 8080.

  6. Zapisz plik i zamknij edytor przy użyciu klawiszy CTRL s, a następnie naciśnij klawisze CTRL + + q.

  7. Skompiluj i uruchom aplikację:

    dotnet build
    dotnet run
    
  8. 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 usługi Cosmos DB.

Tworzenie konta i bazy danych usługi Cosmos

  1. Wróć do witryny Azure Portal.

  2. W menu wybierz pozycję + Utwórz zasób.

  3. Na stronie Nowy w polu Wyszukaj w witrynie Marketplace wpisz *Azure Cosmos DB, a następnie naciśnij klawisz Enter.

  4. Na stronie Azure Cosmos DB wybierz pozycję Utwórz.

  5. Na stronie Tworzenie konta usługi Azure Cosmos DB wprowadź następujące ustawienia:

    Właściwości Wartość
    Grupa zasobów mongodbrg
    Nazwa konta mongodb*nnn*, gdzie nnn jest liczbą losową wybraną przez Ciebie
    Interfejs API Interfejs API usługi Azure Cosmos DB dla bazy danych MongoDB
    Notesy Wył.
    Lokalizacja Określ tę samą lokalizację, która była używana dla serwera Bazy danych MongoDB i sieci wirtualnej
    Tryb wydajności Aprowizowana przepływność
    Zastosuj rabat w warstwie Bezpłatna Zastosuj
    Typ konta Nieprodukcyjne
    Wersja 3.6
    Nadmiarowość geograficzna Wyłącz
    Zapis w wielu regionach Wyłącz
    Strefy dostępności Wyłącz
  6. Wybierz pozycję Przejrzyj i utwórz.

  7. Na stronie walidacji wybierz pozycję Utwórz i poczekaj na wdrożenie konta usługi Cosmos DB.

  8. W menu witryny Azure Portal wybierz pozycję Wszystkie zasoby, a następnie wybierz nowe konto usługi Cosmos DB (mongodbnnn).

  9. Na stronie nnn bazy danych mongodbwybierz pozycję Eksplorator danych.

  10. W okienku Eksplorator danych wybierz pozycję Nowa kolekcja.

  11. W okienku Dodawanie kolekcji określ następujące ustawienia:

    Właściwości Wartość
    Identyfikator bazy danych Wybierz pozycję Utwórz nową, a następnie wpisz DeviceData
    Aprowizuj przepływność bazy danych Wybrane
    Produktywność 10000
    Identyfikator kolekcji Temperatury
    Pojemność magazynu Unlimited (nieograniczony)
    Klucz fragmentu Deviceid
    Mój klucz fragmentu jest większy niż 100 bajtów pozostaw zaznaczoną opcję
    Tworzenie indeksu wieloznacznych we wszystkich polach pozostaw zaznaczoną opcję
    Magazyn analityczny Wył.
  12. Wybierz przycisk OK.

Tworzenie usługi Database Migration Service

  1. Wróć do witryny Azure Portal.

  2. Kliknij pozycję Wszystkie usługi, kliknij pozycję Subskrypcje, a następnie kliknij swoją subskrypcję.

  3. Na stronie subskrypcji w obszarze Ustawienia kliknij pozycję Dostawcy zasobów.

  4. W polu Filtruj według nazwy wpisz DataMigration, a następnie kliknij pozycję Microsoft.DataMigration.

  5. Jeśli wartość Microsoft.DataMigration nie jest zarejestrowana, kliknij przycisk Zarejestruj i poczekaj na zmianę stanu na Zarejestrowane. Może być konieczne kliknięcie przycisku Odśwież , aby wyświetlić zmianę stanu.

  6. W menu witryny Azure Portal wybierz pozycję + Utwórz zasób.

  7. Na stronie Nowy w polu Wyszukaj w witrynie Marketplace wpisz Azure Database Migration Service, a następnie naciśnij klawisz Enter.

  8. Na stronie Azure Database Migration Service wybierz pozycję Utwórz.

  9. Na stronie Tworzenie usługi Migration Service wprowadź następujące ustawienia:

    Właściwości 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
  10. Wybierz pozycję Dalej: Sieć.

  11. Na stronie Sieć wybierz pozycję databasevnet/default, a następnie wybierz pozycję Przejrzyj i utwórz.

  12. 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

  1. W menu witryny Azure Portal wybierz pozycję Grupy zasobów.

  2. W oknie Grupy zasobów wybierz pozycję mongodbrg.

  3. W oknie mongodbrg wybierz pozycję MongoDBMigration.

  4. Na stronie MongoDBMigration wybierz pozycję + Nowy projekt migracji.

  5. Na stronie Nowy projekt migracji wprowadź następujące ustawienia:

    Właściwości Wartość
    Nazwa projektu MigrateTemperatureData
    Typ serwera źródłowego MongoDB
    Typ serwera docelowego Cosmos DB (interfejs API bazy danych MongoDB)
    Wybierz typ działania Migracja danych w trybie offline
  6. Wybierz pozycję Utwórz i uruchom działanie.

  7. Po uruchomieniu Kreatora migracji na stronie Szczegóły źródła wprowadź następujące szczegóły:

    Właściwości 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
    Password Pa55w.rd
    Wymagaj protokołu SSL co do zaznaczania
  8. Wybierz pozycję Dalej: wybierz element docelowy.

  9. Na stronie Wybierz element docelowy wprowadź następujące szczegóły:

    Właściwości Wartość
    Tryb Wybieranie miejsca docelowego usługi Cosmos DB
    Wybierz nazwę bazy danych Comos mongodb*nnn*
    Parametry połączenia Zaakceptuj parametry połączenia wygenerowaną dla konta usługi Cosmos DB
  10. Wybierz pozycję Dalej: ustawienie bazy danych.

  11. Na stronie Ustawienia bazy danych wprowadź następujące szczegóły:

    Właściwości Wartość
    Źródłowa baza danych DeviceData
    Docelowa baza danych DeviceData
    Przepływność (RU/s) 1000
    Czyszczenie kolekcji Wyczyść to pole
  12. Wybierz pozycję Dalej: ustawienie Kolekcji.

  13. Na stronie Ustawienia kolekcja wybierz strzałkę listy rozwijanej według bazy danych DeviceData, wprowadź następujące szczegóły:

    Właściwości Wartość
    Imię i nazwisko/nazwa Temperatury
    Kolekcja docelowa Temperatury
    Przepływność (RU/s) 1000
    Klucz fragmentu Deviceid
    Unikatowe Pozostaw puste.
  14. Wybierz pozycję Dalej: Podsumowanie migracji.

  15. Na stronie Podsumowanie migracji w polu Nazwa działania wprowadź mongodb-migration, a następnie wybierz pozycję Rozpocznij migrację.

  16. Na stronie migracji bazy danych mongodb wybierz pozycję Odśwież co 30 sekund, dopóki migracja nie zostanie ukończona. Zwróć uwagę na liczbę przetworzonych dokumentów.

Sprawdź, czy migracja zakończyła się pomyślnie

  1. W menu witryny Azure Portal wybierz pozycję Wszystkie zasoby.

  2. Na stronie Wszystkie zasoby wybierz pozycję mongodbnnn.

  3. Na stronie mongodb*nnn wybierz pozycję Eksplorator danych.

  4. W okienku Eksplorator danych rozwiń bazę danych DeviceData, rozwiń kolekcję Temperatures,a następnie wybierz pozycję Dokumenty.

  5. W okienku Dokumenty przewiń listę dokumentów. Powinien zostać wyświetlony identyfikator dokumentu (_id) i klucz fragmentu (/deviceID) dla każdego dokumentu.

  6. 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
    }
    
  7. Na pasku narzędzi w okienku Eksplorator dokumentów wybierz pozycję Nowa powłoka.

  8. 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.

  9. 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 usługi Cosmos DB

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.

  1. W okienku nnn bazy danych mongodbw obszarze Ustawienia wybierz pozycję ciąg Połączenie ion.

  2. Na stronie ciąg Połączenie ion bazy danych mongodb zanotuj następujące ustawienia:

    • Gospodarz
    • Nazwa użytkownika
    • Hasło podstawowe
  3. Wróć do okna usługi 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
    
  4. Otwórz plik App.config w edytorze kodu:

    code App.config
    
  5. W sekcji Ustawienia dla bazy danych MongoDB pliku oznacz jako komentarz istniejące ustawienia.

  6. Usuń komentarz z ustawień w sekcji Ustawienia dla interfejsu API Mongo usługi Cosmos DB i ustaw wartości tych ustawień w następujący sposób:

    Ustawienie Wartość
    Adres HOST ze strony ciągu Połączenie ion bazy danych mongodb
    Port Port ze strony ciągu Połączenie ion bazy danych mongodb
    Nazwa użytkownika Nazwa UŻYTKOWNIKA ze strony ciągu Połączenie ion bazy danych mongodb
    Password HASŁO PODSTAWOWE ze strony ciągu Połączenie ion bazy danych mongodb

    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>
    
  7. Zapisz plik, a następnie zamknij edytor kodu.

  8. Otwórz plik Program.cs przy użyciu edytora kodu:

    code Program.cs
    
  9. Przewiń w dół do metody Połączenie ToDatabase.

  10. 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 na potrzeby nawiązywania połączenia z usługą Cosmos DB. 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 korzystała z połączenia SSL. Usługa Cosmos DB zawsze używa protokołu SSL.

  11. Zapisz plik, a następnie zamknij edytor kodu.

  12. Skompiluj i uruchom aplikację:

    dotnet build
    dotnet run
    
  13. 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 poprzednio, z wyjątkiem tego czasu, że używa danych przechowywanych w bazie danych Cosmos DB.

Zwiększanie wydajności zapytań w usłudze Cosmos DB

Usługa Cosmos DB umożliwia dodawanie kolejnych indeksów w celu zwiększenia wydajności zapytań. W miarę agregacji za pomocą identyfikatora deviceID dodanie tego pola jako indeksu przyspieszy zapytania.

  1. Wróć do witryny Azure Portal.

  2. Po lewej stronie wybierz pozycję Eksplorator danych.

  3. W okienku Eksplorator danych rozwiń bazę danych DeviceData, rozwiń kolekcję Temperatures, a następnie wybierz pozycję Ustawienia.

    Screenshot showing adding a Cosmos DB indexing policy.

  4. Wybierz pozycję Zasady indeksowania.

  5. W obszarze _id dodaj nowy indeks, wprowadź wartość deviceID w polu Definicja, a następnie wybierz pozycję Jedno pole dla pozycji Typ.

  6. Wybierz pozycję Zapisz , aby dodać nowy indeks.

  7. Wróć do usługi Cloud Shell, aby spróbować ponownie wykonać zapytanie i zanotuj ulepszoną odpowiedź w aplikacji.

  8. Przetestuj aplikację przy użyciu innych numerów urządzeń. Wprowadź Q, aby zakończyć.

Pomyślnie przeprowadzono migrację bazy danych MongoDB do usługi 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 pojedynczo lub usunąć grupę zasobów, aby usunąć cały zestaw zasobów. Uruchomione zasoby mogą generować koszty.

  1. Za pomocą usługi Cloud Shell uruchom następujące polecenie, aby usunąć grupę zasobów:

    az group delete --name mongodbrg