Soddisfare i requisiti dei database moderni con il database SQL di Azure

Completato

Dopo aver configurato l'ambiente, è possibile iniziare ad analizzare e testare determinati componenti di una possibile architettura della soluzione. Nello scenario di intercettazione del bus, e per molte altre applicazioni moderne, serve un database moderno per archiviare, elaborare e fornire i dati. Verrà esaminato il modo in cui il database SQL di Azure soddisfa le esigenze delle applicazioni moderne.

Eseguire il dimensionamento per soddisfare la domanda con opzioni flessibili di database SQL di Azure

Uno degli elementi principali di un'applicazione moderna è la possibilità di aumentare o ridurre facilmente le prestazioni per rispondere correttamente all'utilizzo del carico di lavoro. Anche la possibilità di aggiornare e far evolvere facilmente una soluzione, insieme alla distribuzione automatica e deterministica, è un elemento fondamentale dello sviluppo di applicazioni moderne. Questo principio consente inoltre alle applicazioni di pagare solo per le risorse necessarie, quando servono.

Il database SQL di Azure fornisce un supporto sicuro a tutte queste funzionalità necessarie. Se è necessario un database adatto al futuro, scalabile, sicuro e dalle prestazioni elevate, Azure SQL Hyperscale offre tutto ciò che serve e altro ancora. Può aumentare le prestazioni fino a 100 TB e la sua architettura distribuita semplifica l'aumento delle prestazioni e delle istanze. È il database ideale per carichi di lavoro di analisi transazionale ibridi e transazionali.

Per supportare lo sviluppo e gli sviluppatori, è possibile usare il livello Elaborazione serverless del Database SQL di Azure, le cui prestazioni possono essere aumentate e ridotte entro un intervallo definito e che può essere messo automaticamente in pausa quando non è in uso per garantire il modo più conveniente per sviluppare e testare la soluzione. Dato che il motore su cui si basa il Database SQL di Azure è lo stesso, il passaggio al livello Elaborazione serverless del Database SQL di Azure e Azure SQL Hyperscale non richiederà modifiche al codice e alcun impegno aggiuntivo.

Supportare i flussi di lavoro di sviluppo con GitHub Actions

Poiché le procedure DevOps sono ora molto diffuse, è importante che una soluzione moderna supporti correttamente e abbia una pipeline di integrazione continua e recapito continuo/distribuzione continua (CI/CD) integra. Il Database SQL di Azure supporta in modo nativo GitHub Actions, che è possibile usare per distribuire le modifiche al database di sviluppo per i database di test e sviluppo, quando sono pronti. Le azioni del Database SQL di Azure usano un approccio basato sullo stato. DevOps per i dati è un argomento interessante. Altre informazioni sono disponibili negli episodi Dati esposti, a cui si fa riferimento alla fine del modulo.

Un altro requisito chiave di un database moderno è la possibilità di gestire e supportare le più recenti tendenze e innovazioni di sviluppo. Il Database SQL di Azure offre molte funzionalità, quindi è possibile usare la tecnologia o il modello più indicati a un determinato caso d'uso. Un post di blog alla fine del modulo offre una panoramica di tutte le funzionalità disponibili.

Applicazioni adatte al futuro con Database SQL di Azure

Per tutta la durata dell'applicazione, è necessario usare tecnologie diverse per ottenere la maggiore efficienza possibile. Ad esempio, si può usare un modello Graph per tenere facilmente traccia di una relazione di rete complessa, come una rete di contatti o una rete elettrica, e modellarla. Oppure, potrebbe essere necessario aggregare rapidamente una grande quantità di dati per calcolare il tasso di crescita di un determinato valore. Il Database SQL di Azure permette di affrontare tutte queste situazioni e molte altre. Supporta i modelli Graph, gli indici columnstore e anche le tabelle ottimizzate per la memoria per la massima velocità effettiva. Queste tabelle sono strutture di dati compilati che vengono quindi caricate In-Process per ottenere prestazioni elevate.

Per lo scenario della fermata del bus, si userà il livello Elaborazione serverless del Database SQL di Azure in modo da pagare solo per le risorse necessarie e usate, per via del supporto per la scalabilità automatica e la sospensione automatica. Si userà GitHub Actions per creare una pipeline di distribuzione per aggiornare il database in base alle esigenze. Per lo scenario sono necessarie alcune altre funzionalità, che verranno ora esaminate in dettaglio. Nell'esercizio successivo si farà pratica con queste funzionalità.

Elaborare dati JSON con funzionalità JSON native

Il Database SQL di Azure consente agli sviluppatori di usare JSON per lo scambio di dati con il database e l'archiviazione di documenti JSON. In questo modo, è possibile usare JSON come meccanismo di trasporto efficiente per inviare set di dati, ad esempio matrici e oggetti, a una stored procedure da elaborare. Dopo aver creato il documento JSON, è possibile modificarlo facilmente usando funzioni JSON native, ad esempio JSON_VALUE, JSON_MODIFY o OPENJSON. Ecco un esempio:

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'
    )

Altri esempi che mostrano come usare JSON nel Database SQL di Azure sono disponibili alla fine del modulo.

Analizzare i dati geospaziali con il motore geospaziale nativo

Il Database SQL di Azure ha un motore geospaziale nativo che può essere usato per eseguire query geospaziali senza installare librerie esterne o spostare dati, operazioni che potrebbero rivelarsi costose per volumi di dati significativi. Il Database SQL di Azure supporta completamente lo standard Open Geospatial Consortium (OGC), quindi i dati esportati sono utilizzabili da librerie come OpenLayers.

L'esempio riportato di seguito mostra come creare un poligono che fungerà da recinto virtuale nello scenario della fermata del bus e controllare se un punto, che fungerà da punto dati del bus in tempo reale, si trova all'interno del poligono.

-- 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)

Dato che il formato del testo per le posizioni, ad esempio POINT(-122.13315058040392 47.64101193601368), è uno standard noto come formato WKT (Well-Known Text), è possibile visualizzare la forma proiettata su una mappa semplicemente copiando e incollando la stringa. Nel prossimo esercizio si eseguirà un test pratico con OpenStreetMap WKT Playground.