Découvrez dans cette session comment utiliser au mieux les SQL Azure Database Federations pour une montée en charge linéaire de vos bases de données SQL Azure. Les Federations vont notamment vous permettre de repenser vos architectures applicatives afin de tirer pleinement parti des capacités d’élasticité quasi-illimitée offertes par l’offre Cloud de Microsoft, et tout ceci en vous garantissant le meilleur rapport qualité-prix possible.
3. 8 février 2012 – 17H30 - DAT211
Construire des bases de données qui
montent en charge avec SQL Azure
Database Federations
Pascal Belaud - Architecte SQL Server
Division Grandes Entreprises - Microsoft France
http://belaud.fr
Pascal Mercier - Consultant Senior
Division Services - Microsoft France
pascal.mercier@microsoft.com
4. Agenda de la session
Introduction au concept SQL Azure Federation
Démonstrations
Retour d’expérience terrain
5. Agenda de la session
Introduction au concept SQL Azure Federation
Démonstrations
Retour d’expérience terrain
6. SQL Azure Federations
Les Federations sont des objets SQL Azure !
au même titre que les tables, triggers…
Permettent d’augmenter la quantité de vos données grâce à
Une montée en charge illimitée avec le meilleur rapport
prix/performance
Une élasticité matérielle dynamique et accessible en ligne
Une simplification de l’approche Multi-Services
7. Montée en charge illimitée
Assurer une montée en charge applicative horizontale
Ne jamais être à court en stockage
Aller au delà de la limite des 150 Go d’une base de
données SQL Azure
Aller au delà de la limite d’un nœud pour vos capacités de
calcul
Augmenter de manière linéaire les capacités de calcul
Utiliser un stockage virtuellement illimité
8. Un modèle élastique
Une exploitation complète du “paiement à l’usage”
Etendre et réduire la plateforme utilisée sans arrêt* de
production
Construire des applications qui grossissent en même
temps que leurs activités au fil du temps
Gérer les activités en forte croissance ou en dents de scie
Quelques nœuds Beaucoup de nœuds
9. Des modèles de services efficaces
Modèle de service classique « On Premise »
Un service par base de données
Les modèles de services Cloud
Une base de données par service ne peut marcher pour
de grosses activités
Utilisent plusieurs services par base de données et
plusieurs bases de données par service pour une flexibilité
complète
Les modèles de services:
Un service par base de données
Plusieurs services par base de données
Plusieurs bases de données par service
10. Architecture SQL Azure Federations
Federations:
Sont contenues dans une base de données utilisateur
Plusieurs fédérations possibles dans une même base de
données
Federation Members:
Une Federation utilise des bases de données (systèmes) SQL
Azure pour assurer le stockage des données réparties
Ces bases de données s’appellent des membres de Federation
Les membres de Federation couvrent la totalité des données
d’une Federation et sont gérés dynamiquement et
automatiquement par leur Federation
Federations
CustomerFederationeration
ClientFederation
CustomerFederationeration
Ventes
Federation Root Membres de Federation
11. Architecture SQL Azure Federations
Federation Distribution Key
est la clé utilisée pour distribuer la donnée. Elle est définie par
un label, un type de données et un type de distribution
Atomic Unit
représente une instance de la Federation Key. Une Atomic Unit
contient tous les enregistrements associés à la clé de Federation
Federation Root
est la base de données qui héberge
la Federation et toutes les Membre: Range [1000, 2000)
informations de distribution
Federations
AU PK=1605 AU PK=1615 AU PK=1625
AU PK=1305 AU PK=1315 AU PK=1325
AU PK=1005 AU PK=1015 AU PK=1025
CustomerFederationeration
ClientFederation
CustomerFederationeration
Ventes
Federation Root Membres de Federation
Atomic Units
12. Architecture SQL Azure Federations
Federated Tables
Ce sont les tables hébergeant les données distribuées
Reference Tables
Ce sont les tables contenant des données de référence.
Elles sont dupliquées sur tous les membres de Federation
Central Table
Ce sont les tables créées dans la Federation Root pour
des informations peu accédées comme des metadata.
Central Tables Federations Federated Tables
Reference Tables
CustomerFederationeration
CustomerFederationeration
ClientFederation
Ventes
Federation Root Membres de Federation
13. Architecture SQL Azure Federations
Operations de repartitionnement:
Les Federations autorisent un repartitionnement des
données en ligne sans arrêt* de la production ce qui
permet une montée de capacité dynamique sereine
alter federation ClientFederation split at (CID=7000)
CustomerFederationeration
ClientFederation
CustomerFederationeration
Ventes
Range Distribution [min,1000, 2000, 3000 ….. 5000, 6000, Max]
14. Architecture SQL Azure Federations
Le routage en fonction des données :
Les applications se connectent toujours à la Federation
Root puis exécute une commande use federation pour se
connecter à l’Atomic Unit recherchée
Alors que les données sont repartitionnées, les Atomic
Unit se déplacent physiquement mais pour autant le
routage garantit une connexion au bon membre de
Federation systématiquement
use federation ClientFederation (CID=5105)
CustomerFederationeration
ClientFederation
CustomerFederationeration
Ventes
Range Distribution [min,1000, 2000, 3000 ….. 5000, 6000, Max]
15. Architecture SQL Azure Federations
Filtrer les connexions FILTERING=ON
Permet de se connecter à l’ tomic Unit recherchée
A
uniquement
Les données de référence restent visible
Aucun changement possible de l’état global du
membre : pas de DDL, pas de DML sur les données de
référence
Très utile pour la plupart des scénarios applicatifs
Aucun risque de dispersion des données : le moteur
injecte le bon predicat permettant de les éviter
use federation ClientFederation (CID=5105) with FILTERING=ON
16. Architecture SQL Azure Federations
Filtrer les connexions FILTERING=OFF
Permet d’accéder à la totalité du membre
Accès non restreint au membre : identique à se
connecter directement à la base de données système
Les ordres DDL, DML et l’accès à tous les Atomic Units
du membre autorisés
Très utile pour les tâches d’administration comme le
déploiement de nouveaux schémas
Permet les requêtes « fan-out », cad les requêtes
simultanées sur de multiples Atomic Units
use federation ClientFederation (CID=5105) with FILTERING=OFF
20. Code
CREATE FEDERATION ClientFederation(CID INT RANGE)
GO
USE FEDERATION ClientFederation(CID = 0) WITH
FILTERING=OFF, RESET
GO
SELECT * FROM sys.federations
SELECT * FROM sys.federation_members
SELECT * FROM sys.federation_member_distributions
GO
22. Code
USE FEDERATION ClientFederation(CID = 1342) WITH
FILTERING=OFF, RESET
GO
-- Renvoie tous les clients du membre contenant le client
1342
SELECT * FROM [dbo].[Client]
GO
USE FEDERATION ClientFederation(CID = 1342) WITH
FILTERING=ON, RESET
GO
-- Renvoie le client 1342 uniquement
SELECT * FROM [dbo].[Client]
GO
23. Code
USE FEDERATION ROOT WITH RESET
GO
ALTER FEDERATION ClientFederation SPLIT AT(CID = 20000)
GO
ALTER FEDERATION ClientFederation SPLIT AT(CID = 40000)
GO
ALTER FEDERATION ClientFederation SPLIT AT(CID = 60000)
GO
ALTER FEDERATION ClientFederation SPLIT AT(CID = 80000)
GO
24. Agenda de la session
Introduction au concept SQL Azure Federation
Démonstrations
Retour d’expérience terrain
25. Contexte Projet
Site web marchand
Croissance de 100% par an
1 000+ connexions simultanées (pic)
200 000 visites / jour
Bases de données
300 000 articles
Bases de données de 1 Go à 10 Go
Objectifs
Migrer les bases de données vers SQL Azure + Federation
Rester compatible avec le backoffice
26. Etapes de Migration
1. Déterminer les fédérations
Identifier les entités atomiques
Identifier les tables liées
Identifier les tables de références
2. Déterminer les clés de fédérations
PK = FedKey ?
Algorithme de calcul de la FedKey ?
3. Identifier les propriétés dépendantes des bases de données non
supportées dans les tables fédérées
Identity
Timestamp
4. Mesurer les impacts dans le code
Transact-SQL
Client .Net
Framework d’accès aux données ?
28. Fédérations
Deux Fédérations
Une fédération pour les Clients, adresses, code postaux
Une fédération pour les Paniers
Clés de fédérations
Une colonne indépendante pour la clé
Type int
Compatible avec les PK existantes
Deux algorithmes de calcul
Distribution (clients)
Composé distribution + aléatoire (paniers)
29. Remplacement des types Identity
Utiliser pour les n° de commande
Suppression des propriétés Identity dans les tables
Génération de séquences transverses aux web roles
Identity pool / web role
Garantie sans doublon
Développement d’un framework spécifique
La table des meta-données des pools d’identities sont
dans la base de données Root
30. Code Transact-SQL
Scripts de création du schéma
Base de données Root
Créer la base
Créer la fédération
Créer le schéma
Bases de données fédérées
Créer le schéma
Script de Split (optionnel)
31. Code Client
Enterprise Library 5.0
Le block Data des EntLib a été étendu pour créer un héritage
de bases fédérées
Enterprise
Library
Database
Développement
SqlAzureDatabase
Spécifique
ClientFederatedDatabase BasketFederatedDatabase
32. Points clés à retenir
Une analyse fonctionnelle et technique des bases de données est
indispensable
Optionnellement, conserver une base de données non fédérée
Identifier les entités éligibles à la fédération
Détourage fonctionnel
Autant que possible, éviter les requêtes ventilées (fan out request)
Sinon, optimiser les requêtes en utilisant Task Parallel Library
(TPL)
Une analyse d’impact sur le code de l’application client est
inévitable
l’impact peut-être limité en utilisant
Une technique d’Ioc (MEF, Unity)
Des switchs logiciels
33. Conclusion
Les Federations v1 permettent des applications orientées données
avec
Une montée en charge illimitée
Le meilleur rapport prix-performance avec une élasticité
dynamique et en ligne
Une simplification des modèles multi services
Les Federations enrichissent l’expérience des développeurs
Une gestion robuste des connexions avec un routage des
connections grâce à l’annuaire des Federations
Des connexions filtrées pour simplifier les modèles de
programmation
Une expérience de l’administration enrichie
Opération de redistribution des données en ligne
34. Les Federations v2
Les requêtes “Fan-out” sur plusieurs membres
Un versionning des schémas pour permettre un contrôle plus
fin sur les mises à jour de schéma
35. Liens utiles
Blog Cihan Biyikoglu - SQL Azure
http://blogs.msdn.com/b/cbiyikoglu
SQL Azure Federation Data Migration Wizard
http://sqlazurefedmw.codeplex.com
Federations Utility for SQL AZURE
http://federationsutility-weu.cloudapp.net/Default.aspx