Упражнение. Развертывание и настройка Базы данных SQL

Завершено

База данных SQL Azure отлично подходит для рабочих, транзакционных и гибридных аналитических рабочих нагрузок.

В сценарии перехвата шины мы выбрали База данных SQL Azure из-за того, что она является корпоративной базой данных с современными возможностями, такими как JSON и геопространственной поддержки.

Здесь вы развернете Базу данных SQL Azure с помощью сценариев, подключитесь к ней в Azure Data Studio и настроите базу данных для сценария с помощью T-SQL. Затем вы изучите поддержку JSON и обработки геопространственных данных в сценарии отслеживания перемещения автобуса.

Развертывание Базы данных SQL Azure с помощью PowerShell

Чтобы настроить базу данных для сценария перехвата шины, сначала необходимо развернуть базу данных для работы. Для этого вы будете использовать Azure Cloud Shell. Cloud Shell также доступна на портале Azure и позволяет создавать ресурсы Azure и управлять ими. Она поставляется с предустановленными различными инструментами, включая Azure CLI, Azure PowerShell и sqlcmd. В этом упражнении вы будете использовать Azure PowerShell, но вы можете выполнять те же задачи с помощью Azure CLI. При выполнении сценария вам будет предложено ввести пароль для новой базы данных и локальный IP-адрес, чтобы устройство смогло подключиться к базе данных.

Выполнение сценария займет от трех до пяти минут. Обязательно запишите пароль, уникальный идентификатор и регион, так как повторно они отображаться не будут.

Совет

Для вставки команд в Cloud Shell можно использовать CTRL + SHIFT + V. CTRL + V не будет работать.

  1. Начните с получения локального общедоступного IP-адреса. Убедитесь, что вы отключены от всех служб VPN и открыли на устройстве локальный терминал PowerShell. Выполните следующую команду и запишите полученный IP-адрес.

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

    Совет

    Если вы не используете устройство Windows, вам необходимо определить свой IP-адрес другим способом. В терминале можно выполнить команду curl ifconfig.co.

  2. В Cloud Shell выполните следующие команды. Введите сложный пароль и в командной строке введите локальный общедоступный IP-адрес, полученный на предыдущем шаге.

    Примечание.

    Сложный пароль должен включать следующие символы:

    • Минимум 8 символов, максимум 16 символов
    • Требуется 3 из 4 из следующих:
      • Строчные буквы
      • Прописные буквы
      • Числа (0–9)
      • Символы ( @ # $ % ^ & * - _  + = [ ] } | \ : ' , . ? / ' ~ " ( ) ; )
    # 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. Выведите и сохраните в текстовом файле сведения, которые понадобятся на протяжении модуля, запустив следующий код в Cloud Shell. После вставки кода, скорее всего, нужно будет нажать клавишу ВВОД, так как последняя строка по умолчанию не выполняется.

    # 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
    

    Не забудьте записать свой пароль, уникальный идентификатор и регион. Вы будете использовать их на протяжении модуля.

  4. Выполните следующий сценарий, чтобы развернуть пустой экземпляр базы данных SQL Azure и логический сервер. Сценарий также добавляет ваш IP-адрес в качестве правила брандмауэра, чтобы можно было получить доступ к базе данных.

    # 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."
    

    Выполнение скрипта может занять несколько минут. В предыдущем блоке есть четыре основных команды; Давайте разберем их. Первая команда создает логический сервер Базы данных SQL Azure, к которому будет осуществляться подключение и который представляет собой способ группирования метаданных и параметров политики для всех баз данных, назначенных этому серверу. Следующие две команды создают два правила брандмауэра: одно — чтобы разрешить подключение с вашего IP-адреса, а другое — чтобы разрешить подключаться другим службам Azure. Этот параметр будет особенно полезен при настройке конвейеров CI/CD с помощью Azure DevOps и (или) GitHub Actions.

    Последняя команда развертывает базу данных на этом логическом сервере. Из команд можно сообщить, что база данных находится на уровне служб общего назначения с четырьмя виртуальными ядрами, а в бессерверном уровне вычислений с диапазоном виртуальных ядер от 0,5 до 4. Уровень бессерверных вычислений предназначен для периодических непредсказуемых операций использования с более низким средним использованием вычислительных ресурсов с течением времени. Уровень бессерверных вычислений обеспечивает автоматическое масштабирование вычислений для упрощения управления производительностью и взимается только за объем используемых вычислений. Уровень бессерверных вычислений также поддерживает автоматическое приостановку и возобновление работы, чтобы помочь в дальнейшей оптимизации цен. Когда база данных приостановлена, вы платите только за хранилище. Уровень бессерверных вычислений — это отличное решение для сценария перехвата шины, так как он находится на этапе разработки (не используется 24/7), и неизвестно, насколько популярным будет при запуске (сколько вычислительных ресурсов потребуется).

    Если возникают какие-либо проблемы или требуется проверить, что ресурсы были развернуты, их можно просмотреть на портале Azure.

Подключение к Базе данных SQL Azure с помощью Azure Data Studio

После развертывания базы данных существует множество способов подключиться и взаимодействовать с ней: sqlcmd, Azure Data Studio, SSMS, редактор запросов на портале и т. д. Здесь вы узнаете, как подключиться к базе данных с помощью Azure Data Studio.

Примечание.

В зависимости от локальной конфигурации (например, если вы используете VPN), Azure Data Studio может предложить добавить IP-адрес в брандмауэр сервера. Ip-адрес можно добавить в брандмауэр сервера в портал Azure, выполнив действия, описанные в этой статье.

  1. Откройте Azure Data Studio и убедитесь, что папка репозитория кода открыта, выбрав значок Обозреватель на панели действий. Если вы не видите файлы кода, вернитесь к предыдущему упражнению, чтобы настроить среду.

  2. Выберите Подключение ions на панели действий. Все подключения к базе данных можно создать и сохранить здесь.

  3. Рядом с пунктом Серверы нажмите кнопку Создать подключение (она выглядит как сервер со знаком плюса).

  4. В открывшейся области Сведения о подключении введите следующие сведения:
    Тип подключения: Microsoft SQL Server
    Сервер: bus-server[уникальный_ИД].database.windows.net
    Тип проверки подлинности: Имя входа SQL
    Имя пользователя: cloudadmin
    Пароль: ваш пароль
    Запомнить пароль: флажок установлен
    База данных: bus-db
    Группа серверов: по умолчанию
    Имя (необязательно): оставьте пустым

  5. Нажмите Подключиться.

  6. После успешного подключения вы сможете перемещаться по содержимому базы данных в области подключений.

Настройка схемы базы данных с помощью T-SQL

После подключения к любой базе данных, как правило, необходимо развернуть схему базы данных и настроить базу данных в соответствии с требованиями сценария, создав таблицы. Используя серию сценариев T-SQL в записной книжке SQL в Azure Data Studio, вы настроите базу данных для поддержки приложения и загрузите некоторые исходные данные, связанные с автобусом.

  1. В Azure Data Studio выберите значок Обозреватель на панели действий.

  2. В папке database\notebooks откройте файл 01-set-up-database.ipynb.

  3. Выполните действия, описанные в записной книжке SQL, чтобы завершить упражнение, а затем вернитесь сюда.

Обработка данных автобуса с помощью Базы данных SQL Azure

Теперь, когда ваша база данных настроена, пришло время подробнее узнать, как база данных SQL Azure будет принимать данные JSON в реальном времени и хранить их в базе данных. К счастью, База данных SQL Azure имеет поддержку JSON, поэтому управлять ею не составит никакого труда. Затем можно использовать возможности Базы данных SQL Azure по работе с геопространственными данными, чтобы найти расстояния между автобусами, определить и сохранить геозоны и даже определить, находится ли автобус в границах заданной геозоны. Наличие таких основных сведений значительно упрощает разработку приложений. Это упражнение будет выполнено в записной книжке SQL в Azure Data Studio, аналогично предыдущему действию.

  1. В Azure Data Studio выберите значок Обозреватель на панели действий.

  2. В папке database\notebooks откройте файл 02-json-geospatial-sql-db.ipynb.

  3. Выполните действия, описанные в записной книжке SQL, чтобы завершить упражнение, а затем вернитесь сюда.