Serveur d'impression

Comment Microsoft construit la plus grande base de données en nuage – Redmondmag.com – Bien choisir son serveur d impression

Le 1 novembre 2019 - 8 minutes de lecture

Joey sur SQL Server

Comment Microsoft construit la plus grande base de données cloud

Microsoft a innové en matière d’évolutivité en lançant Azure SQL Database Hyperscale. Voici ce qu'il a fallu pour que la vision à très grande échelle de Microsoft fonctionne avec l'infrastructure Azure existante.

Lorsque Microsoft a introduit SQL Azure (initialement appelé SQL Data Services) en 2008, la taille de la base de données était limitée à 1 Go ou à 5 Go, en fonction de votre niveau de service.

Même à l'époque, il s'agissait d'une limite extrêmement basse pour les volumes de données moyens de l'époque. À mesure que le service évoluait – et changeait parfois de nom – le service Azure SQL Database a été créé pour aider les utilisateurs à stocker jusqu'à 4 To dans une seule base de données.

Mais bien que 4 To représente beaucoup de données pour la plupart des gens, de nombreuses charges de travail nécessitent beaucoup plus de données que cela. Afin de répondre aux besoins de ces ensembles de données volumineux, Microsoft a introduit Azure SQL Database Hyperscale, précédemment appelé "Socrates". Azure SQL Database Hyperscale est devenu généralement disponible en mai lors de la conférence Microsoft Build.

Il est difficile de modifier l’infrastructure cloud sous-jacente. Microsoft exploite Azure dans plus de 54 régions du monde, chaque région comprenant un ou (dans la plupart des cas) plusieurs centres de données. Essayer de déployer du nouveau matériel à travers le monde est un défi pour toute organisation. Vous pouvez donc imaginer les difficultés que Microsoft rencontre avec la gestion d'Azure. Cela signifie que les équipes de produits doivent introduire des fonctionnalités de cette taille, mais horizontalement, plutôt que de simplement acheter une boîte plus grande.

La limite actuelle de 4 To de la base de données SQL Azure est basée sur la taille maximale du lecteur SSD local sur un serveur physique donné. Azure SQL Database Hyperscale a pour objectif de créer un service prenant en charge les bases de données allant jusqu'à 100 To et au-delà. Pour atteindre ces objectifs, Microsoft a dû adopter une approche novatrice pour faire évoluer l'infrastructure sous-jacente.

Si vous avez déjà travaillé avec des bases de données relationnelles, vous reconnaîtrez probablement que concevoir une solution de base de données évolutive est une proposition intéressante. La tactique de conception commune pour parvenir à la cohérence transactionnelle, l'un des principes fondamentaux du modèle relationnel, a consisté en un seul fichier journal qui enregistre toutes les transactions, mieux connu sous le nom de journal des transactions.

Un autre essai auquel Microsoft a été confronté lors de la construction de ce modèle est le manque de stockage hautement performant sur sa plate-forme cloud. Azure Storage est entièrement connecté au réseau et utilise une conception basée sur les objets, ce qui signifie qu'il a des latences légèrement supérieures à celles des réseaux de stockage spécialisés (SAN). Cela, combiné aux limites de la taille globale et du matériel disponible dans les machines virtuelles basées sur le cloud, impliquait l'adoption d'une nouvelle approche.

Dans l'architecture de base de données SQL Azure existante, Microsoft a utilisé une technologie similaire aux groupes de disponibilité Toujours actif pour offrir à la fois haute disponibilité et durabilité. Cette opération nécessitait quatre copies des données, qui étaient synchronisées via des enregistrements de journal envoyés à tous les réplicas.

Même s’il s’agissait d’une solution robuste, elle comportait quelques limitations principales. La taille d'une base de données ne peut dépasser la capacité de stockage d'une seule machine, et les coûts de performance des opérations de stockage importantes, telles que la sauvegarde et la restauration ou l'ensemencement d'un nouveau réplica de disponibilité, augmentent de manière linéaire avec la taille de la base de données. Ces raisons sont la raison pour laquelle la limite actuelle de 4 To existe.

Pour surmonter tous ces obstacles, Microsoft a pris quelques décisions architecturales et amélioré ses fonctionnalités. Tout d’abord, concentrons-nous sur les fonctionnalités de SQL Server. Plusieurs améliorations principales apportées à SQL Server conduisent à Azure SQL Database Hyperscale, mais ont probablement été omises ou inutilisées par de nombreux administrateurs de base de données locaux.

Le premier concerne les sauvegardes basées sur des instantanés: SQL Server 2012 introduit la possibilité de stocker des fichiers de données dans Azure Storage en tant que http Les points de terminaison et les avancées ultérieures d'Azure Storage, associés à des améliorations du code, permettaient une sauvegarde constante avec des temps de restauration très rapides, même par centaines de téraoctets.

[Click on image for larger view.] Figure 1: Architecture hyperscale. (Source: document Microsoft)

Les extensions de pool de mémoire tampon (BPE), ou la possibilité d'étendre le pool de mémoire tampon de SQL Server sur un disque SSD local pour simuler davantage de RAM, sont une autre fonctionnalité utilisée depuis peu par la fanfare locale. Dans Azure SQL Database Hyperscale, Microsoft a encore amélioré cette fonctionnalité en utilisant Hekaton, sa structure de base de données en mémoire sans verrouillage, pour rendre les données écrites dans ce fichier récupérables en cas d’échec. BPE, qui s'appelle désormais RBPEX pour "extension de pool de mémoire tampon résiliente", permet finalement de mettre à l'échelle les données via des serveurs de page.

Les serveurs de pages sont un élément clé de cette architecture scale-out. Chaque serveur de page stocke un sous-ensemble des données dans votre base de données, qui se situe entre 128 Go et 1 To. Les serveurs de pages sont tenus à jour par les enregistrements du journal des transactions qui leur sont lus.

La fonctionnalité de récupération accélérée de la base de données de SQL Server 2019 constitue une autre amélioration. Elle accélère considérablement la phase d'annulation de la récupération. Chaque serveur utilise un cache basé sur SSD utilisant RBPEX sur un SSD local. La durabilité des pages de données Azure est fournie par l'infrastructure de stockage Azure sous-jacente.

Le moteur de base de données vit sur ce qu'on appelle des nœuds de calcul. Ces nœuds de calcul ont des caches basés sur SSD conçus pour réduire le nombre de trajets vers les serveurs de pages pour récupérer des données. Tout comme dans une implémentation SQL Server locale, un seul nœud de calcul peut traiter les lectures et les écritures. Cependant, il existe des nœuds secondaires qui prennent en charge le basculement et évitent les charges de travail en lecture.

Le journal des transactions est décomposé en son propre service. Au fur et à mesure que les écritures arrivent dans le nœud de données principal, le service de journalisation les conserve sur les disques SSD Azure Premium Storage et les conserve dans un cache, ce qui transmet les enregistrements de journal pertinents aux nœuds de calcul et au serveur de pages pour les conserver. -à ce jour. Enfin, les enregistrements de journal sont stockés dans Azure Storage pour une conservation à long terme, évitant ainsi à l'administrateur de base de données de tronquer le journal.

Azure SQL Database Hyperscale offre une approche intéressante du service de données évolutif. Vous noterez qu'il n'y a pas d'offre sur site de cette fonctionnalité; le cloud public offre la plate-forme de déploiement cohérente et à l'échelle presque infinie nécessaire pour que le service fonctionne comme prévu.

Compte tenu de la manière dont Microsoft a développé sa plate-forme de données, je ne serais pas surpris de voir que l'hyperscale se glisse dans d'autres offres de services comme PostgreSQL ou MySQL, voire dans l'offre Azure SQL Database Managed Instance.

A propos de l'auteur

Joseph D'Antoni est un architecte et SQL Server MVP avec plus de dix ans d'expérience dans des entreprises du classement Fortune 500 et de petites entreprises. Il est actuellement consultant principal pour Denny Cherry and Associates Consulting. Il est titulaire d'une licence en systèmes informatiques de la Louisiana Tech University et d'un MBA de la North Carolina State University. Joey est le co-président du Philadelphia SQL Server Users Group. Il est un conférencier fréquent aux événements PASS Summit, TechEd, Code Camps et SQLSaturday.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.