Upload
microsoft-technet-france
View
422
Download
1
Embed Size (px)
Citation preview
Pascal Belaud - Architecte SQL ServerDivision Grandes Entreprises - Microsoft Francehttp://belaud.fr
Pascal Mercier - Consultant SeniorDivision Services - Microsoft [email protected]
Construire des bases de données qui
montent en charge avec SQL Azure
Database Federations
8 février 2012 – 17H30 - DAT211
Introduction au concept SQL Azure Federation
Démonstrations
Retour d’expérience terrain
Agenda de la session
Introduction au concept SQL Azure Federation
Démonstrations
Retour d’expérience terrain
Agenda de la session
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
SQL Azure Federations
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é
Montée en charge illimitée
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
Un modèle élastique
Quelques nœuds Beaucoup de nœuds
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
Des modèles de services efficaces
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
Architecture SQL Azure Federations
Ventes
CustomerFederationerationCustomerFederationerationClientFederation
Membres de FederationFederation Root
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
informations de distribution
Architecture SQL Azure Federations
Ventes
CustomerFederationerationCustomerFederationerationClientFederation
Membres de FederationFederation Root
Federations
Membre: Range [1000, 2000)
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
Atomic Units
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.
Architecture SQL Azure Federations
Ventes
CustomerFederationerationCustomerFederationerationClientFederation
Membres de FederationFederation Root
Federations Federated Tables
Reference TablesCentral Tables
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
Architecture SQL Azure Federations
Ventes
CustomerFederationerationCustomerFederationerationClientFederation
Range Distribution [min,1000, 2000, 3000 ….. 5000, 6000, Max]
alter federation ClientFederation split at (CID=7000)
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
Architecture SQL Azure Federations
Ventes
CustomerFederationerationCustomerFederationerationClientFederation
Range Distribution [min,1000, 2000, 3000 ….. 5000, 6000, Max]
use federation ClientFederation (CID=5105)
Filtrer les connexions FILTERING=ON
Permet de se connecter à l’Atomic Unit recherchée
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
Architecture SQL Azure Federations
use federation ClientFederation (CID=5105) with FILTERING=ON
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
Architecture SQL Azure Federations
use federation ClientFederation (CID=5105) with FILTERING=OFF
CREATE FEDERATION ClientFederation(CID INT RANGE)
GO
USE FEDERATION ClientFederation(CID = 0) WITHFILTERING=OFF, RESET
GO
SELECT * FROM sys.federations
SELECT * FROM sys.federation_members
SELECT * FROM sys.federation_member_distributions
GO
Code
CREATE TABLE [dbo].[Client] (
[Client_ID] [int] NOT NULL,
[Client_Prenom] [nvarchar](50) NULL,
[Client_Nom] [nvarchar](50) NULL,
[Client_DateNaissance] [date] NULL,
[Client_Commune] [nvarchar](50) NULL,
[Client_CodePostal] [nvarchar](5) NULL,
CONSTRAINT [PK_Client] PRIMARY KEY CLUSTERED
([Client_ID] ASC) WITH
(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF)
) FEDERATED ON (CID = [Client_ID])
GO
Code
USE FEDERATION ClientFederation(CID = 1342) WITHFILTERING=OFF, RESET
GO
-- Renvoie tous les clients du membre contenant le client 1342
SELECT * FROM [dbo].[Client]
GO
USE FEDERATION ClientFederation(CID = 1342) WITHFILTERING=ON, RESET
GO
-- Renvoie le client 1342 uniquement
SELECT * FROM [dbo].[Client]
GO
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
Code
Introduction au concept SQL Azure Federation
Démonstrations
Retour d’expérience terrain
Agenda de la session
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
Contexte Projet
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 ?
Etapes de Migration
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)
Fédérations
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
Remplacement des types Identity
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)
Code Transact-SQL
Enterprise Library 5.0
Le block Data des EntLib a été étendu pour créer un héritage
de bases fédérées
Code Client
Database
SqlAzureDatabase
ClientFederatedDatabase BasketFederatedDatabase
Enterp
rise
Library
Dévelo
pp
em
ent
Spé
cifiqu
e
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
Points clés à retenir
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
Conclusion
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
Les Federations v2