Répondre aux exigences des bases de données modernes avec Azure SQL Database

Effectué

Une fois que vous avez configuré votre environnement, vous êtes prêt à analyser et à tester certains composants d’une architecture de solution potentielle. Dans le scénario de localisation de bus, mais aussi dans bien d’autres applications modernes, une base de données moderne est nécessaire pour stocker, traiter et fournir les données. Examinons comment Azure SQL Database répond aux besoins des applications modernes.

Mettre à l’échelle pour répondre à la demande avec des options Azure SQL Database flexibles

L’un des principaux éléments d’une application moderne est sa capacité à effectuer un scale-up/scale-down pour répondre correctement à la charge de travail. Parmi les autres piliers fondamentaux du développement d’applications modernes, citons la capacité à mettre facilement à jour une solution, à la faire évoluer et à la déployer de manière déterministe et automatique. Selon ce principe, vous payez uniquement ce dont les applications ont besoin à un moment donné.

Azure SQL Database prend résolument en charge toutes ces fonctionnalités requises. Si vous avez besoin d’une base de données évolutive, scalable, sécurisée et hautement performante, Azure SQL Hyperscale fournit tout ce dont vous avez besoin, et bien plus encore. Vous pouvez effectuer une mise à l’échelle jusqu’à 100 To, et son architecture distribuée facilite le scale-up et le scale-out. C’est la base de données idéale pour les charges de travail transactionnelles et transactionnelles/analytiques hybrides.

Pour prendre en charge le développement et les développeurs, vous pouvez utiliser le niveau de calcul serverless Azure SQL Database, qui peut faire l’objet d’un scale-up et d’un scale-down automatique au sein d’une plage définie et peut être automatiquement mis en pause quand il n’est pas utilisé. Il s’agit de la méthode la plus économique pour développer et tester votre solution. Comme le moteur derrière Azure SQL Database est le même, le passage au niveau de calcul serverless Azure SQL Database et Azure SQL Hyperscale ne nécessite aucun changement de code et aucun effort supplémentaire.

Prendre en charge les workflows de développement avec GitHub Actions

Dans la mesure où les pratiques DevOps sont désormais omniprésentes, il est important pour une solution moderne de prendre en charge correctement un pipeline d’intégration continue et de livraison continue/déploiement continu (CI/CD) sain. Azure SQL Database prend nativement en charge GitHub Actions. Vous pouvez l’utiliser pour déployer les modifications apportées à votre base de données de développement dans des bases de données de test et de production quand vous êtes prêt. Les actions Azure SQL Database utilisent une approche basée sur l’état. DevOps pour les données est un sujet intéressant. Vous trouverez plus d’informations à ce sujet dans les épisodes Data Exposed référencés à la fin du module.

Une autre exigence clé d’une base de données moderne est la capacité à gérer et à prendre en charge les dernières tendances et innovations en matière de développement. Azure SQL Database fournit de nombreuses fonctionnalités vous permettant d’utiliser la meilleure technologie ou le meilleur modèle pour un cas d’usage donné. Nous fournissons une vue d’ensemble de toutes les fonctionnalités disponibles dans un billet de blog à la fin du module.

Pérenniser vos applications avec Azure SQL Database

Pendant la durée de vie de votre application, il est conseillé de faire appel à des technologies différentes pour être le plus efficace possible. Par exemple, vous souhaiterez peut-être utiliser un modèle Graph pour suivre et modéliser facilement une relation réseau complexe, comme un réseau social ou un réseau électrique. Ou bien, vous devrez peut-être agréger rapidement une grande quantité de données pour calculer le taux de croissance d’une certaine valeur. Dans ces cas comme dans bien d’autres, Azure SQL Database a tout ce dont vous avez besoin. Vous disposez en effet de modèles Graph, d’index columnstore et même de tables à mémoire optimisée pour le débit le plus élevé (ces tables sont des structures de données compilées qui sont ensuite chargées in-process pour obtenir des performances élevées).

Dans le scénario de localisation de bus, vous utiliserez le niveau de calcul serverless Azure SQL Database. La mise à l’échelle automatique et la suspension automatique étant prises en charge, vous ne payez que ce dont vous avez besoin et ce que vous utilisez. Vous utiliserez également GitHub Actions pour créer un pipeline de déploiement et mettre à jour la base de données en fonction des besoins. Il existe d’autres fonctionnalités requises pour le scénario. Examinons-les de plus près. Dans l’exercice suivant, vous allez vous familiariser avec ces fonctionnalités.

Traiter des données JSON avec des fonctionnalités JSON natives

Azure SQL Database permet aux développeurs d’utiliser JSON pour l’échange de données avec la base de données et pour le stockage de documents JSON. JSON est un mécanisme de transport efficace pour envoyer des jeux de données, comme des tableaux et des objets, à une procédure stockée à traiter. Une fois que vous avez le document JSON, vous pouvez facilement le manipuler à l’aide de fonctions JSON natives comme JSON_VALUE, JSON_MODIFY ou OPENJSON. Voici un exemple :

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

Vous trouverez d’autres exemples montrant l’utilisation de JSON dans Azure SQL Database à la fin du module.

Analyser des données géospatiales avec le moteur géospatial natif

Azure SQL Database a un moteur géospatial natif que vous pouvez utiliser pour exécuter des requêtes géospatiales sans installer de bibliothèques externes ni déplacer des données, ce qui peut coûter cher si vous avez des volumes importants de données. Azure SQL Database prend entièrement en charge la norme OGC (Open Geospatial Consortium). Les données exportées peuvent donc être utilisées par des bibliothèques comme OpenLayers.

L’exemple suivant montre comment créer un polygone qui sert de limite géographique dans le scénario de localisation de bus et comment vérifier si un point, qui sert de point de données de bus en temps réel, se trouve dans le polygone.

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

Le format texte pour les localisations (par exemple, POINT(-122.13315058040392 47.64101193601368)) étant un format standard appelé WKT (Well-Known Text), vous pouvez voir la forme projetée sur une carte en copiant et en collant simplement la chaîne. Dans l’exercice suivant, vous allez mettre cela en pratique avec le terrain de jeu OpenStreetMap WKT.