SQL Server 2016 est disponible depuis le 1er juin dernier. Microsoft estime qu'il s'agit de « l’avancée la plus importante de sa base de données en 27 ans ». Même si le propos peut sembler excessif, cette version apporte effectivement une série d’évolutions séduisantes pour les entreprises. Outre les fonctions intégrées du langage de statistiques R, les capacités de requêtes vers les données externes situées dans Hadoop ou dans le cloud, et des fonctionnalités bien organisées de gestion et de sécurité, Microsoft a également amélioré son moteur OLTP en mémoire et le stockage en colonnes également en mémoire, ainsi que les intégrations avec Azure qu’il a introduites avec SQL Server 2014. Nos confrères d’Infoworld ont passé en revue les nouveautés de cette version.

Plusieurs options s’offrent à qui veut mettre les mains dans le cambouis de SQL Server 2016 : on peut télécharger et installer une version d’évaluation ou développeurs, lancer une VM Azure préconfigurée ou s’atteler à l’un des ateliers du TechNet Virtual Labs. Il convient évidemment de préparer son installation en vérifiant les pré-requis et disposer d’une copie à jour de Windows 8, 10 ou de Windows Server 2012. Même avec une copie à jour de Windows 10, il faut installer un runtime de Visual Studio avant SQL Server 2016 et pour utiliser PolyBase (pour faire des requêtes sur des données situées sur Hadoop ou sur le service de stockage objets Azure Blob), il faut aussi installer Oracle Java 7 (ou une version ultérieure). Une déclinaison de SQL Server 2016 sur Linux a été annoncée, que Red Hat et Canonical ont promis de supporter, mais elle n’est toujours accessible qu’en préversion privée.

Démarrer ses tests avec un niveau de compatibilité inchangé

Les entreprises utilisant SQL Server 2014 qui veulent profiter des nouveautés et des améliorations de performances, de sécurité et d’évolutivité, seront les premières à s'intéresser à SQL Server 2016. Elles le feront par étapes, en commençant par une base de test. Microsoft recommande de démarrer avec un niveau de compatibilité inchangé, puis de le monter à 130 et de tester des requêtes de production. S’il faut corriger des problèmes de régression, on pourra alors réduire temporairement le niveau de compatibilité pour le faire. Ceux qui feront tourner SQL Server 2016 au niveau 130 sans régression devraient voir d’importantes optimisations sur les requêtes et différentes autres améliorations de performances.

Concernant les résultats des benchmarks TPC cités par Microsoft, nos confrères d'InfoWorld ne se disent pas particulièrement impressionnés, estimant qu’il manque certaines précisions pour les comprendre. Des comparaisons entre les versions 2014 et 2016 de SQL Server ont également été fournies par l'éditeur de Redmond. Certaines sont très spécifiques, comme celles portant sur les requêtes avec le logiciel de visualisation de données Tableau. En revanche, on ne sait pas, par exemple, si SQL Server 2016 surpasse Aurora d’Amazon sur ce type de requêtes. De toute façon, le plus important pour les utilisateurs, c’est de déterminer si la nouvelle version de la base de données est plus performante dans leur propre contexte. L’un des terrains sur lesquels les améliorations seront certainement sensibles concernent les traitements OLTP et analytiques en mémoire, mais cela demandera aussi d’investir dans des serveurs plus puissants en augmentant le nombre de cœurs et de mémoire vive.

Tables temporelles pour suivre l'historique des données

La plupart des bases ont deux niveaux de stockage pour les données : d’une part la base elle-même, de l’autre les connexions de transaction. Remonter dans l’historique de logs relevait jusqu’à présent de l’exercice de patience. Avec les tables temporelles (correspondant à la mise en œuvre d’une fonction ANSI SQL 2011), SQL Server 2016 peut automatiquement suivre les modifications dans l’historique des données. Quant à nouvelle fonctionnalité Query Store, elle permet effectivement de résoudre certains problèmes de performances sur les requêtes.

Du côté sécurité, Always Encrypted est l’une des principales améliorations : les données sensibles sont chiffrées dans la base au niveau des colonnes et elles ne sont jamais montrées en clair en dehors des limites sécurisées. Par ailleurs, le masquage dynamique des données qui s’applique aux colonnes permet d’empêcher la lecture des informations sensibles par des utilisateurs non autorisés.

Analyse de données opérationnelles plus rapide

Traditionnellement, les traitements OLTP et décisionnels se faisaient sur des serveurs séparés, obligeant à extraire les données du serveur OLTP pour mettre à jour les cubes OLAP sur le serveur d’analyse, ce qui ralentissait le processus et réduisait la fiabilité. Le nouveau mode d’analyse des données opérationnelles de SQL Server 2016 utilise un index directement mis à jour à partir de la base OLTP.

L’intégration du langage R, particulièrement apprécié des data scientists, est un apport très intéressant dans cette version. La disponibilité de services R parallélisés accessibles directement dans la base de données permettent notamment d'interagir avec des constructions Transact-SQL qui amènent l’analyse vers les données plutôt que l’inverse. C’est non seulement plus rapide, mais c’est aussi plus évolutif et utilise moins de mémoire. Et c’est suffisamment performant pour permettre aux data scientists de développer et tester leurs scripts R dans la base de données. Microsoft fournit aussi un serveur R séparé.

Evolutivité en mode cloud hybride et accès à Hadoop via PolyBase

Enfin, du côté du cloud, les capacités de « Stretch Database » comptent parmi les plus attrayantes de SQL Server 2016. Les administrateurs peuvent déployer certaines tables localement et dans le cloud et les applications accèdent aux données à travers les deux environnements. Stretch Database fait partie des fonctionnalités qualifiées « d’hyper-scale » par Microsoft, facilitant le changement d’échelle dans les traitements. Dans la même catégorie, l'éditeur de Redmond classe la haute disponibilité, les replicas de bases et le backup amélioré sur Azure. Il est aussi possible de migrer de façon entièrement automatique une instance SQL Server sur site vers SQL Azure.

Enfin, la version 2016 fournit avec PolyBase (auparavant Parallel Data Warehouse) une couche d’accès simplifiant la connexion entre le moteur de base de données et des sources externes comme Hadoop ou le stockage objets d’Azure. PolyBase supporte les distributions Cloudera et Hortonworks, ainsi bien sûr que HDInsight. Pour les entreprises qui prévoient de migrer leurs bases Oracle vers SQL Server 2016, Microsoft fournit des outils spécifiques qui automatisent le processus à près de 90%. Cela reste malgré tout un chantier d’importance, surtout si l’on a fait grand usage des fonctionnalités spécifiques à Oracle.

Pour ceux qui exploitent une ancienne version de SQL Server et envisagent de passer à 2016, il convient d’installer une instance de test, localement ou sur Azure, pour y charger ses bases et les tester avec ses applications, afin de voir quels bénéfices la mise à jour pourrait leur apporter.