Construire des bases de données qui montent en charge avec SQL Azure Database Federations

35
palais des congrès Paris 7, 8 et 9 février 2012

Transcript of Construire des bases de données qui montent en charge avec SQL Azure Database Federations

palais des

congrès

Paris

7, 8 et 9

février 2012

Vous êtes dans la salle 221M-222M

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

Central et Reference Tables

Central Table

Reference Tables

Federated Tables

Federated Key

DEMO

Création et utilisation d’une Federation

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

La Solution implémentée

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

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

Liens utiles