SlideShare ist ein Scribd-Unternehmen logo
1 von 35
palais des
congrès
Paris




7, 8 et 9
février 2012
Vous êtes dans la salle 221M-222M
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
Agenda de la session


  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
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
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é
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
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
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
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
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
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]
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]
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
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
Central et Reference Tables



    Central Table
                    Reference Tables
Federated Tables




    Federated Key
DEMO

Création et utilisation d’une Federation
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
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) 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
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
Agenda de la session


  Introduction au concept SQL Azure Federation

  Démonstrations

  Retour d’expérience terrain
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
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 ?
La Solution implémentée
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)
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
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)
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
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
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt? (8)

Intro SQL
Intro SQL Intro SQL
Intro SQL
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnelles
 
Bd relationnelles
Bd relationnellesBd relationnelles
Bd relationnelles
 
Bases de donnees fondamentaux
Bases de donnees fondamentauxBases de donnees fondamentaux
Bases de donnees fondamentaux
 
cours base de données
cours base de donnéescours base de données
cours base de données
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Introduction aux bases de données
Introduction aux bases de donnéesIntroduction aux bases de données
Introduction aux bases de données
 
Patterns azure cloud
Patterns azure cloudPatterns azure cloud
Patterns azure cloud
 

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

Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)
Microsoft
 
Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)
Microsoft Technet France
 
Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...
Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...
Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...
Microsoft Technet France
 
SQL Azure, la base de données dans le cloud
SQL Azure, la base de données dans le cloudSQL Azure, la base de données dans le cloud
SQL Azure, la base de données dans le cloud
Microsoft Technet France
 

Ähnlich wie Construire des bases de données qui montent en charge avec SQL Azure Database Federations (20)

Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)
 
Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)Construire des applications supportant la montée en charge avec SQL Azure (300)
Construire des applications supportant la montée en charge avec SQL Azure (300)
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)
 
Reduisez vos couts simplifiez votre informatique et accelerez vos deploiement...
Reduisez vos couts simplifiez votre informatique et accelerez vos deploiement...Reduisez vos couts simplifiez votre informatique et accelerez vos deploiement...
Reduisez vos couts simplifiez votre informatique et accelerez vos deploiement...
 
MS Days 2011 - Windows Azure
MS Days 2011 - Windows AzureMS Days 2011 - Windows Azure
MS Days 2011 - Windows Azure
 
ShortUrlApp-iis-like
ShortUrlApp-iis-likeShortUrlApp-iis-like
ShortUrlApp-iis-like
 
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
SQL Azure Data Sync ou comment synchroniser vos données avec le Cloud ?
 
Migration des PME vers Windows 2012 R2 Essentials et Office 365
Migration des PME vers Windows 2012 R2 Essentials et Office 365Migration des PME vers Windows 2012 R2 Essentials et Office 365
Migration des PME vers Windows 2012 R2 Essentials et Office 365
 
myLittleAdmin and myLittleBackup Presentation
myLittleAdmin and myLittleBackup PresentationmyLittleAdmin and myLittleBackup Presentation
myLittleAdmin and myLittleBackup Presentation
 
Les données on-premise et dans le cloud. Quelles options ?
Les données on-premise et dans le cloud. Quelles options ?Les données on-premise et dans le cloud. Quelles options ?
Les données on-premise et dans le cloud. Quelles options ?
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
 
Exchange / Office 365 comment faire un déploiement hybride
Exchange / Office 365 comment faire un déploiement hybrideExchange / Office 365 comment faire un déploiement hybride
Exchange / Office 365 comment faire un déploiement hybride
 
Exchange / Office 365 comment faire un déploiement hybride
Exchange / Office 365 comment faire un déploiement hybrideExchange / Office 365 comment faire un déploiement hybride
Exchange / Office 365 comment faire un déploiement hybride
 
Ms days rdi - session cloud
Ms days rdi - session cloudMs days rdi - session cloud
Ms days rdi - session cloud
 
Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...
Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...
Windows Azure Active Directory, SSO étendu et services d’annuaire pour les ap...
 
Introduction à mule esb
Introduction à mule esbIntroduction à mule esb
Introduction à mule esb
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Services de bureaux distants dans Windows Server 2012 R2 et Azure
Services de bureaux distants dans Windows Server 2012 R2 et AzureServices de bureaux distants dans Windows Server 2012 R2 et Azure
Services de bureaux distants dans Windows Server 2012 R2 et Azure
 
SQL Azure, la base de données dans le cloud
SQL Azure, la base de données dans le cloudSQL Azure, la base de données dans le cloud
SQL Azure, la base de données dans le cloud
 
la session Patterns azure cloud au Gwab 2014
la session Patterns azure cloud au Gwab 2014la session Patterns azure cloud au Gwab 2014
la session Patterns azure cloud au Gwab 2014
 

Mehr von Microsoft Technet France

Mehr von Microsoft Technet France (20)

Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
Automatisez, visualisez et améliorez vos processus d’entreprise avec Nintex
 
Comment réussir votre déploiement de Windows 10
Comment réussir votre déploiement de Windows 10Comment réussir votre déploiement de Windows 10
Comment réussir votre déploiement de Windows 10
 
OMS log search au quotidien
OMS log search au quotidienOMS log search au quotidien
OMS log search au quotidien
 
Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
 Fusion, Acquisition - Optimisez la migration et la continuité des outils col... Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
Fusion, Acquisition - Optimisez la migration et la continuité des outils col...
 
Wavestone déploie son portail Powell 365 en 5 semaines
Wavestone déploie son portail Powell 365 en 5 semainesWavestone déploie son portail Powell 365 en 5 semaines
Wavestone déploie son portail Powell 365 en 5 semaines
 
Retour d’expérience sur le monitoring et la sécurisation des identités Azure
Retour d’expérience sur le monitoring et la sécurisation des identités AzureRetour d’expérience sur le monitoring et la sécurisation des identités Azure
Retour d’expérience sur le monitoring et la sécurisation des identités Azure
 
Scénarios de mobilité couverts par Enterprise Mobility + Security
Scénarios de mobilité couverts par Enterprise Mobility + SecurityScénarios de mobilité couverts par Enterprise Mobility + Security
Scénarios de mobilité couverts par Enterprise Mobility + Security
 
SharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle générationSharePoint Framework : le développement SharePoint nouvelle génération
SharePoint Framework : le développement SharePoint nouvelle génération
 
Stockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le mondeStockage Cloud : il y en aura pour tout le monde
Stockage Cloud : il y en aura pour tout le monde
 
Bien appréhender le concept de Windows As a Service
Bien appréhender le concept de Windows As a ServiceBien appréhender le concept de Windows As a Service
Bien appréhender le concept de Windows As a Service
 
Protéger vos données avec le chiffrement dans Azure et Office 365
Protéger vos données avec le chiffrement dans Azure et Office 365Protéger vos données avec le chiffrement dans Azure et Office 365
Protéger vos données avec le chiffrement dans Azure et Office 365
 
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
Protéger votre patrimoine informationnel dans un monde hybride avec Azure Inf...
 
Comprendre la stratégie identité de Microsoft
Comprendre la stratégie identité de MicrosoftComprendre la stratégie identité de Microsoft
Comprendre la stratégie identité de Microsoft
 
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...Vous avez dit « authentification sans mot de passe » : une illustration avec ...
Vous avez dit « authentification sans mot de passe » : une illustration avec ...
 
Sécurité des données
Sécurité des donnéesSécurité des données
Sécurité des données
 
Déploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloudDéploiement hybride, la téléphonie dans le cloud
Déploiement hybride, la téléphonie dans le cloud
 
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
Supervisez la qualité des appels Skype for Business Online à l'aide de Call Q...
 
SharePoint 2016 : architecture, déploiement et topologies hybrides
SharePoint 2016 : architecture, déploiement et topologies hybridesSharePoint 2016 : architecture, déploiement et topologies hybrides
SharePoint 2016 : architecture, déploiement et topologies hybrides
 
Gestion de Windows 10 et des applications dans l'entreprise moderne
Gestion de Windows 10 et des applications dans l'entreprise moderneGestion de Windows 10 et des applications dans l'entreprise moderne
Gestion de Windows 10 et des applications dans l'entreprise moderne
 
Office 365 dans votre Système d'Informations
Office 365 dans votre Système d'InformationsOffice 365 dans votre Système d'Informations
Office 365 dans votre Système d'Informations
 

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

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. Vous êtes dans la salle 221M-222M
  • 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
  • 17. Central et Reference Tables Central Table Reference Tables
  • 18. Federated Tables Federated Key
  • 19. DEMO Création et utilisation d’une Federation
  • 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
  • 21. 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
  • 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