Exercício – Implantar e configurar o Banco de Dados SQL do Azure

Concluído

O Banco de Dados SQL do Azure é uma ótima opção para cargas de trabalho analíticas operacionais, transacionais e híbridas.

No cenário de uso de ônibus, selecionamos o Banco de Dados SQL do Azure por ser um banco de dados empresarial com funcionalidades modernas, como suporte ao JSON e ao mecanismo geoespacial.

Aqui, você vai implantar o Banco de Dados SQL do Azure usando scripts, se conectar com ele no Azure Data Studio e configurar o banco de dados para o cenário usando T-SQL. Depois, você vai explorar o suporte ao JSON e ao mecanismo geoespacial em relação ao uso de ônibus.

Implantar um Banco de Dados SQL do Azure usando o PowerShell

A fim de configurar o banco de dados para o cenário de uso de ônibus, primeiro você precisa implantar o banco de dados com o qual trabalhará. Para fazer isso, você usará o Azure Cloud Shell. O Cloud Shell também está disponível por meio do portal do Azure e permite que você crie e gerencie recursos do Azure. Ele tem várias ferramentas pré-instaladas, incluindo a CLI do Azure, o Azure PowerShell e o sqlcmd. Neste exercício, você usará o Azure PowerShell, mas poderá realizar as mesmas tarefas com a CLI do Azure. No script, será solicitado que você insira uma senha para o novo banco de dados e o endereço IP local para permitir que o dispositivo se conecte ao banco de dados.

Esses scripts deverão levar de três a cinco minutos para serem concluídos. Anote a sua senha, a ID exclusiva e a região, porque elas não serão mostradas novamente.

Dica

Você pode usar CTRL + Shift + V para colar comandos no Cloud Shell. CTRL + V não funcionará.

  1. Comece obtendo o endereço IP público local. Verifique se você está desconectado de qualquer serviço de VPN e abra um terminal do PowerShell local no dispositivo. Execute o comando a seguir e anote o endereço IP resultante.

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

    Dica

    Se você não estiver em um dispositivo Windows, precisará localizar o seu endereço IP com outro método. No terminal, execute curl ifconfig.co.

  2. Execute os comandos a seguir no Cloud Shell. Insira uma senha complexa e, no prompt, insira o seu endereço IP público local, que você obteve na etapa anterior.

    Observação

    Uma senha complexa deve consistir em:

    • Mínimo de 8 caracteres e no máximo 16 caracteres
    • Requer 3 de 4 dos seguintes:
      • Caracteres minúsculos
      • Caracteres maiúsculos
      • Números (0 a 9)
      • Símbolos (@ # $ % ^ & * - _  + = [ ] { } | \ : ‘ , . ? / ` ~ “ ( ) ; )
    # 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. Gere e armazene em um arquivo de texto as informações que serão necessárias em todo o módulo, executando o código a seguir no Cloud Shell. Provavelmente, você precisará pressionar ENTER depois de colar o código, pois a última linha não será executada por padrão.

    # 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
    

    Lembre-se de anotar a senha, a ID exclusiva e a região. Elas serão usadas em todo o módulo.

  4. Execute o script a seguir para implantar uma instância do Banco de Dados SQL do Azure vazia e um servidor lógico. O script também adicionará seu endereço IP como uma regra de firewall para que você possa acessar o banco de dados.

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

    O script levará vários minutos para ser concluído. Há quatro comandos principais no bloco anterior, vamos examinar cada um deles. O primeiro comando cria um servidor lógico do Banco de Dados SQL do Azure, que funciona como a instância de conexão e também como uma forma de agrupar metadados e configurações de política de todos os bancos de dados atribuídos a ele. Os próximos dois comandos criam duas regras de firewall: uma para permitir que o endereço IP se conecte e outra para permitir que outros serviços do Azure se conectem. Essa configuração será útil principalmente quando você configurar pipelines de CI/CD usando o Azure DevOps e/ou o GitHub Actions.

    O comando final implanta um banco de dados nesse servidor lógico. Nos comandos, você pode concluir que o banco de dados está na camada de serviço de Uso Geral com quatro vCores e na camada de computação sem servidor com um intervalo de núcleos virtuais entre 0,5 e 4. A camada de computação sem servidor é destinada ao uso intermitente e imprevisível com menor utilização média de computação ao longo do tempo. A camada de computação sem servidor fornece a colocação em escala automática de computação para simplificar o gerenciamento de desempenho e é cobrada apenas pela quantidade de computação usada. A camada de computação sem servidor também dá suporte à pausa e à retomada automáticas para ajudar a otimizar o preço. Quando o seu banco de dados estiver em pausa, você só pagará o armazenamento. A camada de computação sem servidor é ótima para o cenário de uso de ônibus durante a fase de desenvolvimento (não utilizado 24h por dia, 7 dias por semana), enquanto ainda não se sabe qual será o grau de popularidade do serviço após ser lançado (a quantidade de computação que será necessária).

    Se você tiver problemas ou quiser confirmar se os recursos foram implantados, poderá examiná-los no portal do Azure.

Conectar-se com o Banco de Dados SQL do Azure usando o Azure Data Studio

Depois que o banco de dados é implantado, há várias maneiras de se conectar e interagir com ele: usando o sqlcmd, o Azure Data Studio, o SSMS, o editor de consultas no portal etc. Aqui, você aprenderá a se conectar com o banco de dados usando o Azure Data Studio.

Observação

Dependendo da configuração local (por exemplo, se você estiver em uma VPN), o Azure Data Studio poderá solicitar que você adicione seu endereço IP ao firewall do servidor. Você pode adicionar seu endereço IP ao firewall do servidor no portal do Azure seguindo as etapas deste artigo.

  1. Abra o Azure Data Studio e confirme se a pasta do repositório de código está aberta selecionando o ícone do Explorer na Barra de Atividades à esquerda. Se os arquivos de código não aparecem, retorne ao exercício anterior para configurar o ambiente.

  2. Selecione Conexões na Barra de Atividades. Todas as conexões de banco de dados podem ser criadas e armazenadas aqui.

  3. Ao lado de Servidores, selecione o botão Nova Conexão (ele parece um servidor com um sinal de mais).

  4. No painel Detalhes da Conexão que é aberto, preencha as seguintes informações:
    Tipo de conexão: Microsoft SQL Server
    Servidor: bus-server[uniqueID].database.windows.net
    Tipo de autenticação: logon do SQL
    Nome de usuário: cloudadmin
    Senha: sua-senha
    Lembrar senha: caixa de seleção
    Banco de dados: bus-db
    Grupo de servidores: padrão
    Nome (opcional): deixe em branco

  5. Selecione Conectar.

  6. Depois que uma conexão bem-sucedida for feita, você poderá navegar no conteúdo do banco de dados no painel Conexões.

Configurar o esquema do banco de dados com T-SQL

Depois de se conectar com um banco de dados, normalmente você precisa implantar o esquema de banco de dados e personalizar o banco de dados para atender aos requisitos do cenário criando tabelas. Usando uma série de scripts T-SQL em um notebook SQL no Azure Data Studio, você vai configurar o banco de dados para dar suporte ao aplicativo e carregar alguns dados iniciais relacionado ao ônibus.

  1. No Azure Data Studio, selecione o ícone do Explorer na Barra de Atividades.

  2. Na pasta database\notebooks, abra 01-set-up-database.ipynb.

  3. Siga as etapas do notebook SQL para concluir o exercício, depois retorne aqui.

Processar os dados de ônibus com o Banco de Dados SQL do Azure

Agora que o banco de dados está configurado, é hora de detalhar como o Banco de Dados SQL do Azure receberá os dados JSON em tempo real e os armazenará no banco de dados. Felizmente, o Banco de Dados SQL do Azure conta com o suporte para JSON, o que facilita esse processo. Depois, você poderá usar as funcionalidades geoespaciais no Banco de Dados SQL do Azure para encontrar as distâncias entre os ônibus, definir e armazenar as cercas geográficas e determinar se um ônibus está dentro de uma determinada cerca geográfica. Com uma base como essa, o desenvolvimento do aplicativo fica muito mais simples. Este exercício será concluído em um notebook SQL no Azure Data Studio, como na atividade anterior.

  1. No Azure Data Studio, selecione o ícone do Explorer na Barra de Atividades.

  2. Na pasta database\notebooks, abra 02-json-geospatial-sql-db.ipynb.

  3. Siga as etapas do notebook SQL para concluir o exercício, depois retorne aqui.