Fonctionnalités de SQL Server sur Linux

Effectué

Pour justifier une migration SQL Server auprès des responsables du budget, il est utile de savoir quelles fonctionnalités de SQL Server peuvent offrir un avantage concurrentiel à vos systèmes.

Supposons que, après avoir étudié SQL Server sur Linux, vous souhaitiez vérifier que les fonctionnalités actuelles disponibles satisfont aux exigences de Wide World Importers pour le traitement des données existantes et futures.

Ici, vous allez découvrir les principales fonctionnalités de SQL Server sur Linux.

Performances

SQL Server sur Linux prend en charge les besoins concurrents du débit transactionnel rapide et de l’analytique réactive, en offrant une solution de traitement analytique transactionnelle hybride. Ce type de traitement utilise certaines des technologies performantes de base de SQL Server :

Traitement transactionnel en ligne (OLTP) en mémoire

En combinant des tables à mémoire optimisée et des procédures stockées compilées, Wide World Importers pourrait constater des gains de performances substantiels sur ses tables transactionnelles, par exemple l’écriture et la lecture de l’état de session pour le site web d’e-commerce.

Index columnstore

SQL Server prend en charge les données de ligne et les données en colonnes compressées. Les tables transactionnelles peuvent également avoir un index columnstore qui peut être utilisé à la place du magasin de lignes lors de l’écriture de requêtes analytiques. L’utilisation d’index columnstore permettrait à la suite analytique actuelle de préserver les performances transactionnelles tout en exécutant des requêtes de rapports en temps réel sur les données opérationnelles.

Magasin des requêtes

Votre équipe DBA effectue tous les mois une tâche d’optimisation des performances pour faire en sorte que les plans de requête corrects sont utilisés. L’équipe supervise les performances des requêtes et restaure les plans de requête dans lesquels des modifications des plans d’exécution ont affecté les performances. L’équipe produit aussi un rapport sur les 10 requêtes les plus longues à destination du responsable du développement, et elle vérifie la présence éventuelle de verrous sur les ressources. Le Magasin des requêtes prend en charge toutes ces tâches et vous pouvez l’activer avec Transact-SQL :

ALTER DATABASE <database name>
SET QUERY_STORE (OPERATION_MODE = READ_WRITE);

Réglage automatique et traitement intelligent des requêtes

Vous pouvez activer la correction automatique du choix de plan après l’activation du Magasin des requêtes. Lorsque le réglage automatique est activé, SQL Server supervise les performances des requêtes. Si un nouveau plan de requête est pire que le précédent, le réglage automatique peut remplacer le nouveau plan par la version précédente qui avait permis d’obtenir les meilleurs résultats. Cette option est disponible au niveau de la base de données, avec une instruction ALTER :

ALTER DATABASE <database name>
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );

Le traitement intelligent des requêtes est un ensemble de fonctionnalités, dont la plupart sont nouvelles dans SQL Server 2019. Celles-ci améliorent et optimisent automatiquement les performances de votre charge de travail. Les principales fonctionnalités sont les suivantes :

  • Jointures adaptatives : SQL Server sélectionne dynamiquement un type de jointure au moment de l’exécution, en fonction du nombre réel des lignes d’entrée.
  • Nombre approximatif de résultats distincts : SQL Server fournit un nombre approximatif de résultats distincts pour les scénarios Big Data, afin d’exécuter des requêtes de ce type avec des performances élevées et une faible charge de mémoire.
  • Adaptation de l’allocation de mémoire : si une requête effectue des opérations qui débordent sur le disque, SQL Server peut ajouter de la mémoire pour les opérations suivantes. De même, si une requête gaspille plus de la moitié de la mémoire qui lui est allouée, SQL Server peut réduire la mémoire qui lui a été assignée.
  • Compilation différée des variables de table : SQL Server utilise la cardinalité réelle d’une variable de table lors de sa première compilation, au lieu d’une estimation fixe.

Le traitement intelligent des requêtes ne vous oblige pas à réécrire du code ni à modifier votre schéma de base de données pour tirer parti des meilleures performances. Il vous suffit de mettre à niveau une base de données vers le niveau de compatibilité 150 ou ultérieur :

ALTER DATABASE <database name> SET COMPATIBILITY_LEVEL = 150;

Sécurité

SQL Server sur Linux prend en charge des fonctionnalités de sécurité avancées telles qu’Always Encrypted, la sécurité au niveau des lignes et le masquage dynamique des données pour protéger les données sur disque, en mémoire ou en transit. Ces fonctionnalités sont prises en charge dans toutes les éditions, y compris l’édition Standard :

  • Transparent Data Encryption (TDE) chiffre les données au repos quand elles sont stockées dans des fichiers de base de données. Les données sont protégées contre les utilisateurs malveillants aussi bien dans la base de données que dans les sauvegardes.

  • Always Encrypted garantit que seuls les utilisateurs qui sont propriétaires des données peuvent les voir et les traiter. Les utilisateurs qui gèrent des données, comme les administrateurs de base de données, ne peuvent pas les voir. Si vous utilisez Always Encrypted :

    • Vous pouvez interroger les données chiffrées sans les déchiffrer au préalable.
    • Les données sont protégées au repos, quand elles sont déplacées dans la mémoire du serveur et quand elles sont déplacées du serveur vers l’application cliente approuvée.
    • Le chiffrement et le déchiffrement ont lieu dans le pilote client, ce qui rend le processus transparent pour les applications clientes.
    • Seules les applications et les propriétaires de données de confiance peuvent y accéder. Les développeurs d’applications et les administrateurs de base de données n’ont pas accès à la clé de chiffrement de colonne (la clé CEK).
  • L’audit permet d’effectuer le suivi des événements qui se produisent dans le moteur de base de données, ainsi que les auteurs de ces événements. Les événements audités peuvent être stockés dans des journaux d’événements ou des fichiers d’audit, que vous pouvez utiliser pour examiner des problèmes comme que des attaques ou des violations de données.

  • La sécurité au niveau des lignes contrôle l’accès à certaines lignes d’une table, en fonction de l’utilisateur qui exécute la requête. Vous pouvez contrôler qui a accès aux données, par exemple, en fonction de l’appartenance à un groupe ou d’un contexte d’exécution.

  • Le masquage dynamique des données masque une partie des données. Quatre types différents de masques sont disponibles : le masquage de toutes les données d’une colonne, le masquage des adresses e-mail, le masquage de données numériques à l’aide de nombres aléatoires et le masquage de chaîne personnalisé. Vous pouvez utiliser le masquage de chaîne personnalisé, par exemple, pour masquer tous les chiffres d’un numéro de sécurité sociale à l’exception des quatre derniers.

  • La découverte et la classification des données permettent d’identifier, d’étiqueter et de signaler les données sensibles de vos bases de données, comme les données personnelles. Il s’agit d’un outil SQL Server Management Studio (SSMS) qui facilite la conformité à la législation concernant la confidentialité des données, et qui durcit la sécurité des bases de données qui contiennent les données les plus sensibles. La découverte et la classification des données est un service qui fait partie du package Advanced Data Security (ADS).

  • L’évaluation des vulnérabilités permet d’identifier les vulnérabilités de vos bases de données. Une fois que vous avez pris connaissance des faiblesses que la configuration de votre serveur et la conception de votre base de données peuvent entraîner, vous pouvez éliminer ces faiblesses pour empêcher les attaques courantes. L’évaluation des vulnérabilités est aussi un service ADS.

SQL Server Agent

SQL Server Agent exécute des travaux de maintenance, et des tâches planifiées et automatisées. SQL Server Agent prend en charge les trois charges de travail suivantes :

  • Travaux Transact-SQL
  • Courrier de base de messages
  • Copie des journaux de transaction

Par défaut, SQL Server Agent est désactivé. Cependant, il est installé et peut être activé à l’aide de l’utilitaire en ligne de commande mssql-conf.

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

Haute disponibilité

SQL Server propose de nombreuses façons de spécifier le niveau de tolérance de panne acceptable. SQL Server sur Linux prend en charge les groupes de disponibilité AlwaysOn et les instances de cluster de basculement AlwaysOn. Pour ces deux options, le package mssql-server-ha doit être installé sur chaque serveur. Linux prend en charge le clustering par le biais de Pacemaker, qui est équivalent au clustering de basculement Windows Server (WSFC), bien qu’il ne soit pas aussi étroitement intégré au système d’exploitation hôte.

Si vous avez plus de flexibilité concernant les temps d’arrêt, la copie des journaux de transaction par le biais de SQL Agent peut fournir des secours semi-automatiques, que vous pouvez utiliser pour récupérer après une perte de serveur.

SQL Server sur Linux peut également être exécuté dans des conteneurs qui sont orchestrés avec des outils comme Kubernetes. Les outils d’orchestration garantissent qu’il y a toujours au moins un nœud qui exécute SQL Server. Si ce nœud est défaillant, une autre instance est automatiquement démarrée. Si une disponibilité plus robuste est nécessaire, un groupe de disponibilité AlwaysOn peut être exécuté dans des conteneurs.

Autres fonctionnalités notables

PolyBase

De nombreuses organisations placent leurs données sur différents systèmes. Cela peut s’expliquer par le fait que chaque équipe avait des exigences différentes lorsqu’elles ont choisi leur système, par le fait que votre entreprise a fusionné avec une autre, ou par tout autre raison historique. Il est généralement difficile pour les données de traverser ces limites système.

Supposons que vous avez des données dans SQL Server qui enregistrent les ventes pour votre catalogue de produits, mais que les données qui enregistrent les coûts de fabrication de vos produits se trouvent dans une base de données SAP HANA. Vous souhaitez créer un rapport qui analyse les marges bénéficiaires. Vous aurez besoin d’informations provenant des deux bases de données. Auparavant, vous pouviez :

  • Utiliser un package d’extraction, de transformation, de chargement (ETL) pour effectuer la migration de données d’un système de base de données vers un autre
  • Interroger les deux bases de données, puis écrire du code personnalisé pour joindre et intégrer les résultats dans un même rapport

Ces deux approches sont complexes et peuvent nécessiter un temps de développement important pour obtenir le résultat souhaité.

Avec PolyBase, vous pouvez créer une table externe dans SQL Server. Une table externe constitue une connexion à un système externe et un jeu de données y est hébergé. Une fois la table externe créée, les clients peuvent lui envoyer des requêtes exactement de la même façon que pour les tables internes. Les requêtes JOIN peuvent intégrer des données provenant de tables externes à des tables internes. Comme vous pouvez le voir, PolyBase peut éliminer les limites qui sont imposées à vos données par différents systèmes, et il peut faciliter les analyses dont vous avez besoin pour vos données d’entreprise, quel que soit leur emplacement.

Notes

Sur les systèmes d’exploitation Linux, PolyBase est pris en charge dans SQL Server 2019 ou version ultérieure. Pour l’utiliser, vous devez installer le package mssql-server-polybase, en plus de SQL Server 2019.

Machine Learning Services

En machine learning, les jeux de données volumineux sont utilisés pour modéliser le comportement d’un système complexe. Lors du développement d’un modèle qui prédit précisément le comportement observé du système, il est utilisé pour prédire comment ce système pourra se comporter à l’avenir. Des bibliothèques de code sophistiquées, souvent open source, ont été développées pour préparer votre jeu de données, y ajouter des fonctionnalités, entraîner un modèle, évaluer la justesse du modèle entraîné et déployer ces modèles pour que d’autres clients puissent les appeler. Ces bibliothèques sont écrites à l’aide des langages R et Python.

SQL Server Machine Learning Services vous permet d’exécuter ces scripts R et Python sur les données de vos bases de données SQL Server. Vous pouvez ajouter des frameworks courants de machine learning et de science des données, comme PyTorch, TensorFlow, SciKit-Learn, etc.

Notes

Sur les systèmes d’exploitation Linux, SQL Server Machine Learning est pris en charge dans SQL Server 2019 ou version ultérieure. Pour l’utiliser, vous devez ajouter des packages supplémentaires. Par exemple, si vous souhaitez utiliser Python pour tout le code de machine learning, installez le package mssql-mlservices-mlm-py-9.4.7. Le package équivalent pour R est install mssql-mlservices-mlm-r-9.4.7.

Prise en charge des graphiques

SQL Server dispose d’une prise en charge native pour le stockage et l’interrogation des données basées sur les graphiques. SQL Server stocke les données sous la forme d’une série d’entités (nœuds) et les relations (arêtes) entre ces dernières.

Les recherches en texte intégral permettent aux utilisateurs d’exécuter des requêtes sur des données texte qui respectent des règles linguistiques. Par exemple, quand vous recherchez le mot « exécuter », une recherche en texte intégral retourne des résultats qui incluent des formes du mot « exécuter », comme « exécuté » et « exécution ».

Cette fonctionnalité n’est pas installée par défaut. Sur Linux, vous l’activez en installant le package mssql-server-fts.

Charges de travail ETL

Les packages SSIS (SQL Server Integration Services) peuvent s’exécuter sur SQL Server sur Linux. Toutefois, ils peuvent être exécutés ailleurs que sur SQL Server sur Linux. Ces packages peuvent également se connecter à une instance Microsoft SQL Server exécutée sur Windows localement ou dans le cloud, et à une instance SQL Server exécutée dans un conteneur.

Vous devez écrire et tenir à jour des packages SSIS sur une machine Windows exécutant SQL Server Data Tools.

Vérifiez vos connaissances

1.

Quelles sont les fonctionnalités offertes par SQL Server sur Linux pour la prise en charge de la continuité des activités ?

2.

Si des données sont chiffrées à l’aide d’Always Encrypted, quand sont-elles déchiffrées ?