SQL Server 2016 CTP2.1 : “Stretch Database”
SQL Server 2016 CTP2.1 est disponible en téléchargement et apporte son lot de nouveautés. Dans cet article, je vais traiter de la fonctionnalité “Stretch Database” qui suscitait mon intérêt depuis un petit moment déjà.
SQL Server 2016 CTP2.1 est téléchargeable ici : https://www.microsoft.com/en-us/evalcenter/evaluate-sql-server-2016
Les nouveautés de la version 2016 sont détaillées ici : https://msdn.microsoft.com/en-us/library/bb500435.aspx
Principe du « Stretch Database »
L’idée est d’avoir une base de données configurée pour permettre l’extension d’une ou plusieurs de ses tables vers une base Azure SQL. Cette extension vers Azure permet d’archiver de manière transparente les données « froides », sans modifier les conditions d’accès à l’information lorsque la table est requêtée. Et cela, tout en profitant du coût de stockage très avantageux proposé par Azure.
Le schéma ci-dessous illustre ce principe :
On aura donc un serveur sur site et un serveur Azure SQL database :
- Local database : la base de données se trouvant sur site (SQL Server 2016 CTP2)
- Remote endpoint : aujourd’hui, c’est une base de donnée Azure (PaaS) de niveau S3. Ceci peut être amené à changer
Puis une base de données qui contiendra au moins une table paramétrée en mode « Stretch ». Cette table verra ses données réparties de la manière suivante :
- Local data : les données de la table se trouvant sur site qui ne bougeront pas !
- Eligible data : les données de la table qui n’ont pas encore bougées, mais qui bougeront à un moment ou un autre
- Remote data : les données qui ont déjà bougées vers Azure SQL Database
Il va exister 2 modes de mouvement :
- Archive table : toutes les données de la table vont bouger vers le Cloud
- Archive row : seules les données issues d’une requête contenant une clause WHERE bougeront
Aujourd’hui, seule le mode « Archive table » est disponible.
Mise en place
Configuration de l’instance SQL Server
Afin de pouvoir utiliser la fonctionnalité “Stretch database”, il faut la paramétrer au niveau de l’instance.
Dans SQL Server Management Studio (SSMS), cliquez sur le bouton « New Query » et exécutez le script suivant :
- EXEC sp_configure 'remote data archive' , '1';
- RECONFIGURE;
Dans le cas où vous oubliez cette étape, l’assistant ne manquera pas de vous le rappeler .
Configuration de la base de données
Toujours dans SSMS, faîtes un clic droit sur votre base de données. Sélectionnez « Task », « Enable Database for Stretch… »
L’assistant démarre. Passez la page d’introduction en cliquant que le bouton “Next”.
La seconde étape vous demande de vous authentifier sur votre compte Azure. Cliquez sur « Sign In.. ».
La fenêtre d’authentification apparaît. Entrez vos informations de connexion. Puis cliquez sur « Sign in ».
Sélectionnez votre compte Azure. Cliquez sur « Next ».
Renseignez les informations de zone Azure et les informations de connexion pour la création du serveur Azure SQL.
Lors de mes premiers essais, j’ai sélectionné « North Europe » pour être cohérent avec ma machine virtuelle hébergeant SQL Server 2016 CTP2.1.
Or j’ai eu une erreur indiquant que la version du serveur Azure SQL que je voulais créer n’était pas supportée : « Location \u0027North Europe\u0027 is not accepting creation of new Azure SQL Database Servers of version \u002712.0\u0027 at this time”
Par contre, cela a fonctionné avec une localisation au Brésil.
Cliquez sur « Next ».
Dans la fenêtre « Summary », cliquez sur « Finish ».
Configuration de la table
Après avoir configuré la base de données, faîtes un clic droit dessus et cliquez sur « Refresh » (Afin d’éviter d’avoir la fonction « Stretch » de grisée).
Au niveau de la table que vous souhaitez étendre dans Azure, faîtes un clic droit sur cette table puis cliquez sur « Stretch », « Enable Stretch.. »
Sur la fenêtre d’avertissement, cliquez sur “Yes”.
Une fois la configuration réalisée, la table est maintenant étendue vers Azure.
Si on regarde un peu plus en détail dans SSMS, on peut voir qu’un nouveau « Credential » a été créé ainsi qu’un serveur lié.
Jetons un œil dans Azure
Si on se connecte sur le portail Azure, on peut voir qu’un nouveau serveur a été créé.
Et si on clique sur ce serveur, on peut voir la base associée à notre serveur sur site. Par défaut cette base de données est de niveau S3.
Accès à la base de données Azure SQL
Même si ce n’est pas prévu dans la philosophie de cette fonctionnalité, je me suis dit, comme c’est une base de données Azure, je vais essayer de m’y connecter avec mon management studio
Une fois connecté, il est possible de naviguer dans la base de données tout à fait normalement :
Ajout de lignes dans la table
Afin de tester la fonctionnalité, j’ai rajouté une ligne dans la table sur serveur local.
Pour cet exemple, je rajoute la ligne « Violon ».
Côté Azure SQL, on récupère la nouvelle ligne avec une information supplémentaire dans la colonne batchID. On note que la ligne « Violon » fait partie un autre transfert que les lignes d’origines. D’où le chiffre 2 dans la Colonne « Batch ».
Dans le cas d’une plus grande volumétrie qu’une seule ligne , le transfert vers Azure SQL se fera par paquet de 10 000 lignes. Donc si je rajoute 10 000 lignes dans ma table locale, ces 10 000 lignes auront pour BatchID le chiffre 3.
Par exemple, ci-dessous je rajoute 5 nouvelles lignes dans ma base locale
Voici ce que je retrouve côté Azure SQL
Pour info, la colonne BatchID comporte dans son titre l’ID de la table qui a été étendue. Pour illustrer ce qui vient d’être écrit, voici une requête sur la base en local :
Aujourd’hui, toutes les lignes sont identifiées comme devant être archivées dans la table se trouvant dans la base Azure SQL. A terme, il sera possible de définir les lignes qui devront bouger ou pas.
Pour plus d’information sur cette fonctionnalité, vous pouvez consulter le site msdn : https://msdn.microsoft.com/en-us/library/dn935011.aspx
Backup
Attention, le backup d’une base en mode « Strech table », ne contient pas les données se trouvant dans Azure. Seul le point de terminaison est renseigné dans le backup.
Le process du backup des tables en mode « Stretch table » est détaillé ici : https://msdn.microsoft.com/en-us/library/dn934993.aspx
Arrêter le mode étendue d’une table
Aujourd’hui, pour arrêter le mode Stretch, il faut suivre la procédure suivante détaillé dans l’article MSDN : https://msdn.microsoft.com/en-us/library/dn935010.aspx
Limitations
Il existe aujourd’hui encore des limitations dans l’usage de cette fonctionnalité. Ces limitations sont détaillées ici : https://msdn.microsoft.com/en-us/library/dn935016.aspx
Sessions de formation gratuites :
-
- Microsoft Virtual Academy : https://www.microsoftvirtualacademy.com/
Pour tester Windows Server 2012, Windows 8, SQL Server 2012 et SQL Server 2014 CTP2, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :
Windows Server 2012 :
-
- d'une image ISO : https://aka.ms/jeveuxwindows2012
- d'un fichier VHD avec un système préinstallé : https://aka.ms/jeveuxwindows2012
Evaluation SQL Server 2014 :
Evaluation SQL Server 2016 CTP2 :
Evaluation Power BI :
Testez Azure gratuitement pendant un mois :