Ćwiczenie — wdrażanie i konfigurowanie usługi Azure SQL Database

Ukończone

Usługa Azure SQL Database to doskonały wybór dla obciążeń operacyjnych, transakcyjnych i hybrydowych analitycznych.

W scenariuszu przechwytywania magistrali wybraliśmy usługę Azure SQL Database, ponieważ jest to baza danych przedsiębiorstwa z nowoczesnymi możliwościami, takimi jak JSON i obsługa geoprzestrzenna.

W tym miejscu wdrożysz usługę Azure SQL Database przy użyciu skryptów, połączysz się z nią w narzędziu Azure Data Studio i skonfigurujesz bazę danych na potrzeby scenariusza przy użyciu języka T-SQL. Następnie zapoznasz się z obsługą JSON i geoprzestrzenną w odniesieniu do przechwytywania magistrali.

Wdrażanie usługi Azure SQL Database przy użyciu programu PowerShell

Aby skonfigurować bazę danych dla scenariusza przechwytywania magistrali, należy najpierw wdrożyć bazę danych do pracy. W tym celu użyjesz usługi Azure Cloud Shell. Usługa Cloud Shell jest również dostępna za pośrednictwem witryny Azure Portal i umożliwia tworzenie zasobów platformy Azure i zarządzanie nimi. Jest ona wstępnie zainstalowana przy użyciu różnych narzędzi, w tym interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell i narzędzia sqlcmd. W tym ćwiczeniu użyjesz programu Azure PowerShell, ale możesz wykonać te same zadania za pomocą interfejsu wiersza polecenia platformy Azure. W skrypcie zostanie wyświetlony monit o podanie hasła dla nowej bazy danych i lokalnego adresu IP, aby umożliwić urządzeniu nawiązywanie połączenia z bazą danych.

Wykonanie tych skryptów powinno zająć od trzech do pięciu minut. Pamiętaj, aby zanotować hasło, unikatowy identyfikator i region, ponieważ nie zostaną one wyświetlone ponownie.

Napiwek

Aby wkleić polecenia w usłudze Cloud Shell, możesz użyć klawiszy CTRL + Shift + V. Ctrl + V nie będzie działać.

  1. Zacznij od uzyskania lokalnego publicznego adresu IP. Upewnij się, że odłączono się od wszelkich usług sieci VPN i otwarto lokalny terminal programu PowerShell na urządzeniu. Uruchom następujące polecenie i zanotuj wynikowy adres IP.

    (Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
    

    Napiwek

    Jeśli nie korzystasz z urządzenia z systemem Windows, musisz zlokalizować swój adres IP przy użyciu innej metody. W terminalu możesz uruchomić polecenie curl ifconfig.co.

  2. Uruchom następujące polecenia w usłudze Cloud Shell. Wprowadź złożone hasło, a po wyświetleniu monitu wprowadź lokalny publiczny adres IP uzyskany w poprzednim kroku.

    Uwaga

    Złożone hasło musi składać się z następujących elementów:

    • Maksymalnie 8 znaków i 16 znaków
    • Wymaga 3 na 4 z następujących:
      • Małe litery
      • Wielkie litery
      • Liczby ( 0–9 )
      • Symbole ( @ # $ % ^ & * - _  + = [ ] { } | \ : ' , . ? / ' ~ " ( ) ; )
    # Collect password 
    $adminSqlLogin = "cloudadmin"
    $password = Read-Host "Your username is 'cloudadmin'. Please enter a password for your Azure SQL Database server that meets the password requirements"
    # Prompt for local ip address
    $ipAddress = Read-Host "Disconnect your VPN, open PowerShell on your machine and run '(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content'. Please enter the value (include periods) next to 'Address': "
    Write-Host "Password and IP Address stored"
    
  3. Uzyskaj dane wyjściowe i zapisz w pliku tekstowym informacje, które będą potrzebne w całym module, uruchamiając następujący kod w usłudze Cloud Shell. Prawdopodobnie trzeba będzie nacisnąć klawisz Enter po wklejeniu kodu, ponieważ ostatni wiersz nie będzie domyślnie uruchamiany.

    # Get resource group and location and random string
    $resourceGroupName = "<rgn>[sandbox resource group name]</rgn>"
    $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like $resourceGroupName
    $uniqueID = Get-Random -Minimum 100000 -Maximum 1000000
    $location = $resourceGroup.Location
    # The logical server name has to be unique in the system
    $serverName = "bus-server$($uniqueID)"
    # The sample database name
    $databaseName = "bus-db"    
    Write-Host "Please note your unique ID for future exercises in this module:"  
    Write-Host $uniqueID
    Write-Host "Your resource group name is:"
    Write-Host $resourceGroupName
    Write-Host "Your resources were deployed in the following region:"
    Write-Host $location
    Write-Host "Your server name is:"
    Write-Host $serverName
    

    Pamiętaj o zanotowaniu hasła, unikatowego identyfikatora i regionu. Będziesz ich używać w całym module.

  4. Uruchom następujący skrypt, aby wdrożyć puste wystąpienie usługi Azure SQL Database i serwer logiczny. Skrypt doda również swój adres IP jako regułę zapory, aby można było uzyskać dostęp do bazy danych.

    # Create a new server with a system wide unique server name
    $server = New-AzSqlServer -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -Location $location `
        -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
    # Create a server firewall rule that allows access from the specified IP range and all Azure services
    $serverFirewallRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -FirewallRuleName "AllowedIPs" `
        -StartIpAddress $ipAddress -EndIpAddress $ipAddress 
    $allowAzureIpsRule = New-AzSqlServerFirewallRule `
        -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -AllowAllAzureIPs
    # Create a database
    $database = New-AzSqlDatabase  -ResourceGroupName $resourceGroupName `
        -ServerName $serverName `
        -DatabaseName $databaseName `
        -Edition "GeneralPurpose" -Vcore 4 -ComputeGeneration "Gen5" `
        -ComputeModel Serverless -MinimumCapacity 0.5
    Write-Host "Database deployed."
    

    Wykonanie skryptu potrwa kilka minut. W poprzednim bloku znajdują się cztery główne polecenia; podzielmy je. Pierwsze polecenie tworzy serwer logiczny usługi Azure SQL Database, który służy jako wystąpienie do nawiązywania połączenia i jako sposób grupowania metadanych i ustawień zasad dla wszystkich baz danych przypisanych do tego serwera. Dwa następne polecenia tworzą dwie reguły zapory: jedną, aby zezwolić adresowi IP na łączenie, a drugi na łączenie się z innymi usługami platformy Azure. To ustawienie będzie szczególnie przydatne podczas konfigurowania potoków ciągłej integracji/ciągłego wdrażania przy użyciu usługi Azure DevOps i/lub funkcji GitHub Actions.

    Ostatnie polecenie wdraża bazę danych na tym serwerze logicznym. Z poziomu poleceń można stwierdzić, że baza danych znajduje się w warstwie usługi Ogólnego przeznaczenia z czterema rdzeniami wirtualnymi, a w warstwie obliczeniowej Bezserwerowej z zakresem rdzeni wirtualnych z zakresu od 0,5 do 4. Warstwa obliczeniowa bezserwerowa jest przeznaczona do sporadycznych, nieprzewidywalnych użycia z niższym średnim użyciem obliczeniowym w czasie. Warstwa obliczeniowa Bezserwerowa zapewnia automatyczne skalowanie obliczeniowe, aby uprościć zarządzanie wydajnością i jest rozliczana tylko za ilość używanej mocy obliczeniowej. Warstwa obliczeniowa bezserwerowa obsługuje również automatyczne wstrzymanie i wznawianie w celu ułatwienia dalszej optymalizacji cen. Gdy baza danych jest wstrzymana, płacisz tylko za magazyn. Warstwa obliczeniowa bezserwerowa jest doskonałym rozwiązaniem dla scenariusza przechwytywania magistrali, ponieważ jest w fazie programowania (nie jest używana 24/7) i nie jest znana, jak popularna będzie podczas uruchamiania (ile zasobów obliczeniowych będzie potrzebować).

    Jeśli masz jakiekolwiek problemy lub chcesz potwierdzić, że zasoby zostały wdrożone, możesz przejrzeć je w witrynie Azure Portal.

Połączenie do usługi Azure SQL Database za pomocą narzędzia Azure Data Studio

Po wdrożeniu bazy danych istnieje wiele sposobów łączenia się z nią i interakcji z nią: sqlcmd, Azure Data Studio, SSMS, edytor zapytań w portalu itp. W tym miejscu dowiesz się, jak nawiązać połączenie z bazą danych przy użyciu narzędzia Azure Data Studio.

Uwaga

W zależności od konfiguracji lokalnej (na przykład jeśli korzystasz z sieci VPN), narzędzie Azure Data Studio może monitować o dodanie adresu IP do zapory serwera. Adres IP można dodać do zapory serwera w witrynie Azure Portal, wykonując kroki opisane w tym artykule.

  1. Otwórz program Azure Data Studio i upewnij się, że folder repozytorium kodu jest otwarty, wybierając ikonę Eksploratora na pasku działań. Jeśli nie widzisz plików kodu, wróć do poprzedniego ćwiczenia, aby skonfigurować środowisko.

  2. Wybierz pozycję Połączenie ions na pasku działań. Wszystkie połączenia z bazą danych można tworzyć i przechowywać tutaj.

  3. Obok pozycji Serwery wybierz przycisk Nowy Połączenie ion (wygląda jak serwer z znakiem plus).

  4. W otwartym okienku Szczegóły Połączenie ion wypełnij następujące informacje:
    Typ Połączenie: Microsoft SQL Server
    Serwer: bus-server[uniqueID].database.windows.net
    Typ uwierzytelniania: Identyfikator logowania SQL
    Nazwa użytkownika: cloudadmin
    Hasło: hasło
    Zapamiętaj hasło: pole wyboru
    Baza danych: bus-db
    Grupa serwerów: domyślna
    Nazwa (opcjonalnie): pozostaw puste

  5. Wybierz pozycję Połącz.

  6. Po pomyślnym nawiązaniu połączenia powinno być możliwe nawigowanie po zawartości bazy danych w okienku Połączenie ions.

Konfigurowanie schematu bazy danych przy użyciu języka T-SQL

Po nawiązaniu połączenia z dowolną bazą danych zwykle trzeba wdrożyć schemat bazy danych i dostosować bazę danych do wymagań scenariusza, tworząc tabele. Korzystając z serii skryptów języka T-SQL w notesie SQL w narzędziu Azure Data Studio, skonfigurujesz bazę danych do obsługi aplikacji i załadujesz niektóre początkowe dane związane z magistralą.

  1. W narzędziu Azure Data Studio wybierz ikonę Eksplorator na pasku działań.

  2. W folderze database\notebooksotwórz plik 01-set-up-database.ipynb.

  3. Wykonaj kroki w notesie SQL, aby ukończyć ćwiczenie, a następnie wróć tutaj.

Przetwarzanie danych magistrali za pomocą usługi Azure SQL Database

Teraz, gdy baza danych jest skonfigurowana, nadszedł czas, aby dowiedzieć się więcej o tym, jak usługa Azure SQL Database będzie odbierać dane JSON w czasie rzeczywistym i przechowywać je w bazie danych. Na szczęście usługa Azure SQL Database obsługuje format JSON, dzięki czemu można łatwo zarządzać. Następnie możesz użyć funkcji geoprzestrzennych w usłudze Azure SQL Database, aby znaleźć odległości między autobusami, zdefiniować i przechowywać geofencingi, a nawet określić, czy autobus znajduje się w danym geofencence. Dzięki podstawom takim jak ten tworzenie aplikacji staje się znacznie uproszczone. To ćwiczenie zostanie ukończone w notesie SQL w narzędziu Azure Data Studio, podobnie jak w poprzednim działaniu.

  1. W narzędziu Azure Data Studio wybierz ikonę Eksplorator na pasku działań.

  2. W folderze database\notebooksotwórz plik 02-json-geospatial-sql-db.ipynb.

  3. Wykonaj kroki w notesie SQL, aby ukończyć ćwiczenie, a następnie wróć tutaj.