Ćwiczenie — wdrażanie i konfigurowanie usługi Azure SQL Database
Usługa Azure SQL Database to doskonały wybór dla obciążeń operacyjnych, transakcyjnych i hybrydowych analitycznych.
W scenariuszu łapania autobusu wybraliśmy usługę Azure SQL Database, ponieważ jest to baza danych klasy korporacyjnej z nowoczesnymi możliwościami, takimi jak obsługa JSON i geo-przestrzenna.
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 kontekście łapania autobusu.
Wdrażanie usługi Azure SQL Database przy użyciu programu PowerShell
Aby skonfigurować bazę danych dla scenariusza łapania autobusu, należy najpierw wdrożyć bazę danych, z którą można pracować. 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 łączenie się z bazą danych.
Wykonanie tych skryptów powinno potrwać od trzech do pięciu minut. Pamiętaj, aby zanotować hasło, unikatowy identyfikator i region, ponieważ nie zostaną one ponownie wyświetlone.
Napiwek
Do wklejania poleceń w usłudze Cloud Shell można użyć CTRL + Shift + V. CTRL + V nie będzie działać.
Zacznij od uzyskania lokalnego publicznego adresu IP. Upewnij się, że odłączono cię od dowolnej usługi sieci VPN i otwórz 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ć
curl ifconfig.co
.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.
Notatka
złożone hasło musi składać się z następujących elementów:
- Od 8 do 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"
Wyprowadź dane i zapisz w pliku tekstowym informacje, które będą potrzebne w całym module, uruchamiając następujący kod w Cloud Shell. Prawdopodobnie po wklejeniu kodu musisz nacisnąć Enter, 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, aby zanotować hasło, unikatowy identyfikator i region. Będą one używane w całym module.
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; przeanalizujmy 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ć na połączenie z twoim adresem IP, a drugą, aby zezwolić na połączenia z innymi usługami Azure. To ustawienie będzie szczególnie przydatne podczas konfigurowania potoków CI/CD przy użyciu Azure DevOps i/lub GitHub Actions.
Ostatnie polecenie wdraża bazę danych na tym serwerze logicznym. Na podstawie poleceń można stwierdzić, że baza danych znajduje się w warstwie ogólnego przeznaczenia z czterema rdzeniami wirtualnymi oraz w warstwie obliczeniowej bezserwerowej z zakresem rdzeni wirtualnych 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 przechowywanie. 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.
Nawiązywanie połączenia z usługą Azure SQL Database przy użyciu programu 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.
Notatka
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. Można dodać adres IP do zapory serwera w portalu Azure, wykonując kroki w tym artykule.
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.
Wybierz pozycję Połączenia na pasku działań. Wszystkie połączenia z bazą danych można tworzyć i przechowywać tutaj.
Obok pozycji Serwery, wybierz przycisk Nowe połączenie (wygląda jak serwer ze znakiem plusa).
W okienku Szczegóły połączenia wpisz następujące informacje:
Typ połączenia: Microsoft SQL Server
Serwer: bus-server[uniqueID].database.windows.net
typ uwierzytelniania: logowania SQL
Nazwa użytkownika: cloudadmin
Hasło: your-password
Zapamiętaj hasło: pole wyboru
Database: bus-db
grupa serwerów: domyślna
nazwa (opcjonalnie): pozostaw pusteWybierz opcję Połącz.
Po pomyślnym nawiązaniu połączenia powinno być możliwe nawigowanie po zawartości bazy danych w okienku Połączenia.
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ą.
W Azure Data Studio wybierz ikonę Eksploratora na pasku działań.
W folderze
database\notebooks
otwórz01-set-up-database.ipynb
.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.
W narzędziu Azure Data Studio wybierz ikonę Eksploratora na pasku działań.
W folderze
database\notebooks
otwórz02-json-geospatial-sql-db.ipynb
.Wykonaj kroki w notesie SQL, aby ukończyć ćwiczenie, a następnie wróć tutaj.