Atender aos requisitos de banco de dados moderno com o Banco de Dados SQL do Azure
Depois de configurar o ambiente, você estará pronto para começar a analisar e testar determinados componentes de uma possível arquitetura da solução. No cenário de uso de ônibus, assim como em muitas outras aplicações modernas, você precisa de um banco de dados moderno para armazenar, processar e fornecer dados. Vamos explorar como o Banco de Dados SQL do Azure atende às necessidades dos aplicativos modernos.
Dimensionar-se para atender à demanda com opções flexíveis do Banco de Dados SQL do Azure
Um dos principais elementos de um aplicativo moderno é a capacidade de escalar ou reduzir verticalmente com facilidade para responder corretamente ao uso da carga de trabalho. A capacidade de atualizar e desenvolver uma solução com facilidade, juntamente com a implantação determinística e automática, também são pilares fundamentais do desenvolvimento de aplicativos modernos. Esse princípio também permite que os aplicativos paguem apenas por aquilo que precisam, no momento em que precisam.
O Banco de Dados SQL do Azure oferece um suporte sólido a todos esses recursos necessários. Se você precisa de um banco de dados escalonável, seguro, com alto desempenho e preparado para o futuro, a Hiperescala do SQL do Azure oferece tudo isso e muito mais. Ela pode ser escalada verticalmente até 100 TB e conta com uma arquitetura distribuída que facilita os processos de escalar verticalmente e horizontalmente. É o banco de dados ideal para cargas de trabalho transacionais e híbridas (transacionais/analíticas).
Para dar suporte ao desenvolvimento e aos desenvolvedores, você pode usar a camada de computação sem servidor do Banco de Dados SQL do Azure, que pode escalar/reduzir verticalmente automaticamente dentro de um intervalo definido e pode ser pausada automaticamente quando não estiver sendo usada para fornecer a maneira mais econômica de desenvolver e testar sua solução. Considerando que o mecanismo por trás do Banco de Dados SQL do Azure é o mesmo, mover para a camada de computação sem servidor do Banco de Dados SQL do Azure e a Hiperescala do SQL do Azure não exigirá nenhuma alteração de código e nenhum esforço adicional.
Dar suporte a fluxos de trabalho de desenvolvimento com o GitHub Actions
Como a prática de DevOps agora é onipresente, é importante que uma solução moderna tenha um pipeline de CI/CD (integração contínua e entrega contínua/implantação contínua) íntegro e dê um suporte adequado a ele. O Banco de Dados SQL do Azure dá suporte nativo ao GitHub Actions, que você pode usar para implantar alterações no banco de dados de desenvolvimento para bancos de dados de teste e produção quando estiver pronto. As ações do Banco de Dados SQL do Azure usam uma abordagem baseada em estado. O DevOps para dados é um tópico interessante e você pode saber mais sobre ele nos episódios do Data Exposed mencionados no final do módulo.
Outro requisito importante de um banco de dados moderno é a capacidade de lidar com as últimas tendências e inovações de desenvolvimento e dar suporte a elas. O Banco de Dados SQL do Azure fornece muitos recursos para que você possa usar a melhor tecnologia ou modelo para um determinado caso de uso. Fornecemos uma visão geral de todos os recursos disponíveis em uma postagem no blog, ao final deste módulo.
Prepare os seus aplicativos para o futuro usando o Banco de Dados SQL do Azure
Durante o tempo de vida do aplicativo, você precisa usar diferentes tecnologias para conseguir o máximo de eficiência possível. Por exemplo, você pode usar um modelo do Graph para acompanhar e modelar facilmente uma relação de rede complexa, como uma rede social ou uma rede elétrica. Ou talvez você precise agregar rapidamente uma grande quantidade de dados para calcular a taxa de crescimento de um determinado valor. Em todos esses casos e em muitos outros, o Banco de Dados SQL do Azure pode ajudar. Ele dá suporte a modelos do Graph, índices Columnstore e até mesmo tabelas com otimização de memória para a maior taxa de transferência (essas tabelas são estruturas de dados compiladas que são carregadas em processo para obter alto desempenho).
Para o cenário de alcançar o ônibus, você usará a camada de computação sem servidor do Banco de Dados SQL do Azure para pagar apenas pelo que precisa e usa, devido ao suporte para dimensionamento automático e pausa automática. Você deve usar o GitHub Actions para criar um pipeline de implantação a fim de atualizar o banco de dados sempre que necessário. Há outras funcionalidades necessárias para o cenário. Vamos examiná-las em mais detalhes. No próximo exercício, você usará essas funcionalidades na prática.
Processar dados JSON com funcionalidades JSON nativas
O Banco de Dados SQL do Azure permite que os desenvolvedores usem JSON para trocar dados com o banco de dados e armazenar documentos JSON. Dessa forma, você pode usar o JSON como um mecanismo de transporte eficiente para enviar conjuntos de dados, como matrizes e objetos, a um procedimento armazenado para que sejam processados. Quando o documento JSON estiver pronto, você poderá manipulá-lo facilmente usando funções JSON nativas, como JSON_VALUE, JSON_MODIFY ou OPENJSON. Veja um exemplo:
DECLARE @json NVARCHAR(MAX) = '[{"user":{"id": 1, "name": "Anna"}},{"user":{"id": 2, "name": "Davide"}}]'
SELECT * FROM
OPENJSON(@json) WITH (
[Id] INT '$.user.id',
[Name] NVARCHAR(100) '$.user.name'
)
Mais exemplos mostrando como você pode usar o JSON no Banco de Dados SQL do Azure estão disponíveis no final do módulo.
Analisar dados geoespaciais com o mecanismo geoespacial nativo
O Banco de Dados SQL do Azure tem um mecanismo geoespacial nativo que você pode usar para executar consultas geoespaciais sem instalar bibliotecas externas ou mover dados, o que pode ser caro para volumes significativos de dados. O Banco de Dados SQL do Azure dá suporte total ao padrão Open Geospatial Consortium (OGC), portanto, os dados exportados são utilizáveis por bibliotecas como OpenLayers.
O exemplo a seguir mostra como criar um polígono (que funcionará como sua cerca geográfica no cenário de uso de ônibus) e verificar se um ponto (que funcionará como os pontos de dados de ônibus em tempo real) está dentro desse polígono.
-- Microsoft Building 44
declare @bldg44 as geography = geography::STGeomFromText('POLYGON((-122.13403149305233 47.64136608877112,-122.13398769073248 47.64058891712273,-122.13319924946629 47.64011342667547,-122.13285369830483 47.640106868176076,-122.13254221532335 47.640834858789844,-122.13257628383073 47.6410086568205,-122.13334039023833 47.64144150986729,-122.13403149305233 47.64136608877112))', 4326)
-- A point you want to check
declare @p as geography = geography::STPointFromText('POINT(-122.13315058040392 47.64101193601368)', 4326)
-- Is the point within the perimeter?
select @p.STWithin(@bldg44)
Como o formato de texto das localizações (por exemplo, POINT(-122.13315058040392 47.64101193601368)
) é um formato padrão, conhecido como WKT (Texto Bem Conhecido), é possível ver a forma projetada no mapa apenas copiando e colando a cadeia de caracteres. No próximo exercício, você testará isso por conta própria com o OpenStreetMap WKT Playground.