SlideShare une entreprise Scribd logo
1  sur  34
palais des
congrès
Paris




7, 8 et 9
février 2012
SQL Server et les développeurs


7 février 2012
Jean-Pierre Riehl   Hugues Moore
MVP SQL Server          Architecte
AZEO                       AZEO
AZEO, LE PARTENAIRE MICROSOFT
incubateur de talents

 Pure-Player innovant focalisé sur la création de valeur

 Infrastructure, Collaboratif, Développement, Communication

 Gold Partner dans toutes nos Practices

                           AZEO ACCOMPAGNE DURABLEMENT
                           l’évolution de votre système d’informations

                           AZEO ENRICHIT LA CREATION DE VALEUR
                           grâce à un réseau de partenaires sélectionnés

                           AZEO DEVELOPPE VOTRE TALENT
                           et accélère votre réussite
Au programme

 Objectifs : l’intérêt d’utiliser SQL Server dans un projet
 de développement

 Les sujets :
   Pourquoi une base de données
   La modélisation
   Le requêtage
                                        La base de données
   L’indexation
   L’accès aux données
   Sécurité
Pourquoi une base de données ?
Pourquoi une base de données ?

 Les contres :

   Il faut installer un serveur
   Il faut l’administrer
   C’est compliqué
   Je préfère le 100% objet
   L’important c’est mon application
   Je ferai de l’abstraction
Pourquoi une base de données ?

 Mais avez-vous pensé ?

   Aux accès multiples : 2 applications distinctes
   Aux accès concurrents : 2 écritures en même temps
   A l’intégrité : dépendances d’objets
   A la volumétrie : plusieurs Tera-octets
   A la disponibilité : 24/7, reprise sur incident


 Parallélisme                           RTO/RPO
                      Verrous
         ACID
                      Backup Mission Critical
Pourquoi une base de données ?

 C’est pourquoi :

   En architecture de SI, la base de données est une brique
   incontournable



 Quelques faits :
   11 millions de licences SQL Server
   N°2 en part de marché (source IDC)
C’est quoi une base de données ?

  Des tables (= lignes / colonnes) + Des relations
    Avec des contraintes garantissant l’intégrité

    On parle de SGBD-Relationnelles



  Du processing : capable de traiter des requêtes en parallèle

  Du stockage : capable de gérer des volumes importants
    600To pour SQL Server

    Importance des IOPS
Et les autres bases de données ?

 NoSQL
   Not only SQL
   Schéma Flexible
   Pas de transaction
   Cohérence non garantie
   Requêtage complexe

 C’est un changement de paradigme qui vient en complément
 des bases de données « classiques »
    HADOOP vs. PDW pour le Big Data
    Tous les 2 supportés par Microsoft
La modélisation
Normalisation

 Retour à l’école :
   1NF, 2NF, 3NF ?
                            > DEMO
 Comment choisir l’un ou l’autre ?
   En fonction de l’usage et des contraintes
     Ex : optimisation de la mise à jour des données



 A retenir :
    Trop normaliser entraîne des problèmes de requêtage
    Trop dénormaliser entraîne des problèmes de mises à jour
    Modéliser pour répondre au besoin, pas à une règle
Les relations


 Les relations sont modélisées avec des clés étrangères
       Foreign Key = FK

 Elles permettent
    De garantir l’intégrité
    D’éviter des « données mortes »
    De documenter le schéma



 En mettre ou pas ? Le débat est ouvert entre OLTP ou OLAP
Où modéliser ?

 Quel outil ?
  Visio
  Visual Studio
  Management Studio



  Et le Code-First ?
      Fonctionnalité offerte par les « frameworks » (ex : EF)
Quelques bonnes pratiques

  Le bon choix des types
  Ex : ID, Name, BirthDate, FK1, FK2
      Bigint, nvarchar(20), datetime, guid, guid
      8 + 40 + 8 + 16 + 16 = 88o / ligne
         10M lignes = 880 Mo

      Int, varchar(20), date, int, int
      4 + 20 + 3 + 4 + 4 = 35o / ligne
         10M lignes = 350 Mo  60% de gain




  Posez vous les bonnes questions
      Avez-vous besoin de 264 valeurs pour vos ID ?
      Avez-vous besoin d’une précision à la milliseconde sur 8000 ans ?
      Etc..
Le requêtage
Le requêtage
 Un réel paradigme

    Row by Row                         Logique ensembliste

 for (int i=0; i++; i<maCol.Count)
 {
                                     Update maTable
   if (maCol[i].PropertyB = "val")   Set colonneA = 1
   {
                                     Where colonneB = 'val'
     maCol[i].PropertyA = 1;
     maCol[i].Update();
   }
 }
Le langage SQL

  Des mots-clés spécifiques
      SELECT
      FROM
      WHERE
      GROUP BY, ORDER BY, OVER, etc.


  Une traduction en opérations physiques
L’exécution de la requête

   Phases d’exécution



        Parsing     Binding      Optim.   Exec.


                         Compilation




   1 requête = 1 plan d’exécution ?    > DEMO
ANNONCE

L’option WITH (PERFORMANCE=ON)
Le plan d’exécution
   Comment travaille l’optimiseur ?
     Schéma physique de la base

     Statistiques sur les données

     Parallélisation



   Est-il fiable ?
     Oui et Non



   Aidez l’optimiseur :
     Complexité cyclomatique de la requête

     On cherche la linéarité

     Pensez volume
L’indexation
La métaphore de l’annuaire

 Imaginez l’annuaire d’Ile de France
   Si je vous demande
       De me trouver M. Dubois à Créteil
       De me trouver toutes les personnes habitants au 12 rue
        des acacias


   Un annuaire est indexé sur Ville / Nom

   En SQL Server, on parle de Seeks et de Scans
     La conséquence est le nombre de lectures (IO)
C’est quoi un index ?

 Composition :
   B-Tree : Balanced Tree
   Ordre de rangement : clé

 CLUSTERED vs NON-CLUSTERED
   CLUSTERED = contient l’ensemble des données
      Ex : notre annuaire lui-même
   NON-CLUSTERED = contient juste la clé et un
   pointeur vers les données
      Ex : un sommaire ou un index dans un livre
Règle d’indexation

   Pas de surindexation
     Trop de combinaisons

     Impact sur la taille

     Lenteur au calcul du plan d’exécution

     Lenteur aux insertions



   Connaître l’usage véritable de la base de données

   Utilisation des features de SQL Server
     Index filtrés

     Colonnes incluses

     Vues indexées
L’accès aux données
Le grand débat…

 Procédures Stockées ou code SQL
   •   Les DBA préfèrent les procédures stockées
   •   Les Dev préfèrent le code SQL

   La différence va se faire sur
     L’abstraction

     La sécurité

     Les performances



   Personnellement, je préfère les procédures stockées
   (mais ce n’est qu’un avis perso)
Les ORM

 C’est une extension au débat sur les procédures stockées

 Avantages :
   Rapidité de développement
   Outillage
   Code-First

 Inconvénients :
    Pas de souplesse pour le DBA
      Requêtage

      Modélisation

    Code-First
Quelques bonnes pratiques

  Fermez vos connexions !
      Le ConnectionPool ne le fera pas à votre place



  Mettez l’application name dans vos
  chaînes de connexion
          data source=.;initial catalog=AW;integrated
          security=SSPI;application name=MonAppli




  Bannissez le WITH (NOLOCK)
La sécurité
L’importance de la sécurité

   Le besoin en sécurité est présent partout dans le SI
   Principe du moindre-privilège



 Points de vigilance
   Utilisation du compte SA (sysadmin) et DBO
   SQL Injection
En conclusion
En conclusion

  Paradigme différent

  Contraintes propres

  Compétences particulières


        > Adoptez un DBA
Pour aller plus loin…

   Venez nous voir sur le stand SQL Server
     Retrouvez les experts Microsoft et MVP

     Assistez à des présentations des offres de nos partenaires



   Inscrivez-vous au « Virtual Launch Event » du 8 mars :
   http://aka.ms/vlefrance

   Visitez notre nouveau site : http://www.microsoft.fr/sql

   Evaluez dès aujourd’hui SQL Server 2012
     En téléchargeant la RC0 : http://aka.ms/sql2012

     En suivant nos « Virtual Labs » : http://aka.ms/sqllabs

Contenu connexe

Similaire à SQL Server et les développeurs

Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010JUG Lausanne
 
Paris Tug - Session d'octobre
Paris Tug - Session d'octobreParis Tug - Session d'octobre
Paris Tug - Session d'octobreGeoffrey Felix
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
Panorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data PlatformPanorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data PlatformPhilippe Geiger
 
DevOps Day - Monitoring
DevOps Day - MonitoringDevOps Day - Monitoring
DevOps Day - MonitoringRadoine Douhou
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerMicrosoft
 
J1 T1 1 - Azure Data Platform, quelle solution pour quel usage - Charles-Hen...
J1 T1 1 - Azure Data Platform, quelle solution pour quel usage  - Charles-Hen...J1 T1 1 - Azure Data Platform, quelle solution pour quel usage  - Charles-Hen...
J1 T1 1 - Azure Data Platform, quelle solution pour quel usage - Charles-Hen...MS Cloud Summit
 
24HOP French 2017 - Azure Data Lake, le Big Data 2.0
24HOP French 2017 - Azure Data Lake, le Big Data 2.024HOP French 2017 - Azure Data Lake, le Big Data 2.0
24HOP French 2017 - Azure Data Lake, le Big Data 2.0Jean-Pierre Riehl
 
La BI, Power BI, et SQL Server 2014
La BI, Power BI, et SQL Server 2014La BI, Power BI, et SQL Server 2014
La BI, Power BI, et SQL Server 2014SCALA
 
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)Aymeric Weinbach
 
Normation solutions linux automatisation si complexes
Normation solutions linux automatisation si complexesNormation solutions linux automatisation si complexes
Normation solutions linux automatisation si complexesRUDDER
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
L’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleL’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleManon PERNIN
 
BUSINESS INTELIGENCE : Exploitation d'un Datamart
BUSINESS INTELIGENCE : Exploitation d'un DatamartBUSINESS INTELIGENCE : Exploitation d'un Datamart
BUSINESS INTELIGENCE : Exploitation d'un DatamartFalitokiniaina Rabearison
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 

Similaire à SQL Server et les développeurs (20)

Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012La sécurité avec SQL Server 2012
La sécurité avec SQL Server 2012
 
Paris Tug - Session d'octobre
Paris Tug - Session d'octobreParis Tug - Session d'octobre
Paris Tug - Session d'octobre
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Panorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data PlatformPanorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data Platform
 
DevOps Day - Monitoring
DevOps Day - MonitoringDevOps Day - Monitoring
DevOps Day - Monitoring
 
Dev ops Monitoring
Dev ops   MonitoringDev ops   Monitoring
Dev ops Monitoring
 
Deep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL ServerDeep Dive Performance , le In-Memory dans SQL Server
Deep Dive Performance , le In-Memory dans SQL Server
 
J1 T1 1 - Azure Data Platform, quelle solution pour quel usage - Charles-Hen...
J1 T1 1 - Azure Data Platform, quelle solution pour quel usage  - Charles-Hen...J1 T1 1 - Azure Data Platform, quelle solution pour quel usage  - Charles-Hen...
J1 T1 1 - Azure Data Platform, quelle solution pour quel usage - Charles-Hen...
 
24HOP French 2017 - Azure Data Lake, le Big Data 2.0
24HOP French 2017 - Azure Data Lake, le Big Data 2.024HOP French 2017 - Azure Data Lake, le Big Data 2.0
24HOP French 2017 - Azure Data Lake, le Big Data 2.0
 
La BI, Power BI, et SQL Server 2014
La BI, Power BI, et SQL Server 2014La BI, Power BI, et SQL Server 2014
La BI, Power BI, et SQL Server 2014
 
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)
 
Normation solutions linux automatisation si complexes
Normation solutions linux automatisation si complexesNormation solutions linux automatisation si complexes
Normation solutions linux automatisation si complexes
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
L’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleL’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitale
 
BUSINESS INTELIGENCE : Exploitation d'un Datamart
BUSINESS INTELIGENCE : Exploitation d'un DatamartBUSINESS INTELIGENCE : Exploitation d'un Datamart
BUSINESS INTELIGENCE : Exploitation d'un Datamart
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

SQL Server et les développeurs

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. SQL Server et les développeurs 7 février 2012 Jean-Pierre Riehl Hugues Moore MVP SQL Server Architecte AZEO AZEO
  • 3. AZEO, LE PARTENAIRE MICROSOFT incubateur de talents Pure-Player innovant focalisé sur la création de valeur Infrastructure, Collaboratif, Développement, Communication Gold Partner dans toutes nos Practices AZEO ACCOMPAGNE DURABLEMENT l’évolution de votre système d’informations AZEO ENRICHIT LA CREATION DE VALEUR grâce à un réseau de partenaires sélectionnés AZEO DEVELOPPE VOTRE TALENT et accélère votre réussite
  • 4. Au programme Objectifs : l’intérêt d’utiliser SQL Server dans un projet de développement Les sujets : Pourquoi une base de données La modélisation Le requêtage La base de données L’indexation L’accès aux données Sécurité
  • 5. Pourquoi une base de données ?
  • 6. Pourquoi une base de données ? Les contres : Il faut installer un serveur Il faut l’administrer C’est compliqué Je préfère le 100% objet L’important c’est mon application Je ferai de l’abstraction
  • 7. Pourquoi une base de données ? Mais avez-vous pensé ? Aux accès multiples : 2 applications distinctes Aux accès concurrents : 2 écritures en même temps A l’intégrité : dépendances d’objets A la volumétrie : plusieurs Tera-octets A la disponibilité : 24/7, reprise sur incident Parallélisme RTO/RPO Verrous ACID Backup Mission Critical
  • 8. Pourquoi une base de données ? C’est pourquoi : En architecture de SI, la base de données est une brique incontournable Quelques faits : 11 millions de licences SQL Server N°2 en part de marché (source IDC)
  • 9. C’est quoi une base de données ? Des tables (= lignes / colonnes) + Des relations  Avec des contraintes garantissant l’intégrité  On parle de SGBD-Relationnelles Du processing : capable de traiter des requêtes en parallèle Du stockage : capable de gérer des volumes importants  600To pour SQL Server  Importance des IOPS
  • 10. Et les autres bases de données ? NoSQL Not only SQL Schéma Flexible Pas de transaction Cohérence non garantie Requêtage complexe C’est un changement de paradigme qui vient en complément des bases de données « classiques » HADOOP vs. PDW pour le Big Data Tous les 2 supportés par Microsoft
  • 12. Normalisation Retour à l’école : 1NF, 2NF, 3NF ? > DEMO Comment choisir l’un ou l’autre ? En fonction de l’usage et des contraintes  Ex : optimisation de la mise à jour des données A retenir : Trop normaliser entraîne des problèmes de requêtage Trop dénormaliser entraîne des problèmes de mises à jour Modéliser pour répondre au besoin, pas à une règle
  • 13. Les relations Les relations sont modélisées avec des clés étrangères  Foreign Key = FK Elles permettent De garantir l’intégrité D’éviter des « données mortes » De documenter le schéma En mettre ou pas ? Le débat est ouvert entre OLTP ou OLAP
  • 14. Où modéliser ? Quel outil ? Visio Visual Studio Management Studio Et le Code-First ?  Fonctionnalité offerte par les « frameworks » (ex : EF)
  • 15. Quelques bonnes pratiques Le bon choix des types Ex : ID, Name, BirthDate, FK1, FK2  Bigint, nvarchar(20), datetime, guid, guid  8 + 40 + 8 + 16 + 16 = 88o / ligne  10M lignes = 880 Mo  Int, varchar(20), date, int, int  4 + 20 + 3 + 4 + 4 = 35o / ligne  10M lignes = 350 Mo  60% de gain Posez vous les bonnes questions  Avez-vous besoin de 264 valeurs pour vos ID ?  Avez-vous besoin d’une précision à la milliseconde sur 8000 ans ?  Etc..
  • 17. Le requêtage Un réel paradigme Row by Row Logique ensembliste for (int i=0; i++; i<maCol.Count) { Update maTable if (maCol[i].PropertyB = "val") Set colonneA = 1 { Where colonneB = 'val' maCol[i].PropertyA = 1; maCol[i].Update(); } }
  • 18. Le langage SQL Des mots-clés spécifiques  SELECT  FROM  WHERE  GROUP BY, ORDER BY, OVER, etc. Une traduction en opérations physiques
  • 19. L’exécution de la requête Phases d’exécution Parsing Binding Optim. Exec. Compilation 1 requête = 1 plan d’exécution ? > DEMO
  • 21. Le plan d’exécution Comment travaille l’optimiseur ?  Schéma physique de la base  Statistiques sur les données  Parallélisation Est-il fiable ?  Oui et Non Aidez l’optimiseur :  Complexité cyclomatique de la requête  On cherche la linéarité  Pensez volume
  • 23. La métaphore de l’annuaire Imaginez l’annuaire d’Ile de France Si je vous demande  De me trouver M. Dubois à Créteil  De me trouver toutes les personnes habitants au 12 rue des acacias Un annuaire est indexé sur Ville / Nom En SQL Server, on parle de Seeks et de Scans  La conséquence est le nombre de lectures (IO)
  • 24. C’est quoi un index ? Composition : B-Tree : Balanced Tree Ordre de rangement : clé CLUSTERED vs NON-CLUSTERED CLUSTERED = contient l’ensemble des données  Ex : notre annuaire lui-même NON-CLUSTERED = contient juste la clé et un pointeur vers les données  Ex : un sommaire ou un index dans un livre
  • 25. Règle d’indexation Pas de surindexation  Trop de combinaisons  Impact sur la taille  Lenteur au calcul du plan d’exécution  Lenteur aux insertions Connaître l’usage véritable de la base de données Utilisation des features de SQL Server  Index filtrés  Colonnes incluses  Vues indexées
  • 27. Le grand débat… Procédures Stockées ou code SQL • Les DBA préfèrent les procédures stockées • Les Dev préfèrent le code SQL La différence va se faire sur  L’abstraction  La sécurité  Les performances Personnellement, je préfère les procédures stockées (mais ce n’est qu’un avis perso)
  • 28. Les ORM C’est une extension au débat sur les procédures stockées Avantages : Rapidité de développement Outillage Code-First Inconvénients : Pas de souplesse pour le DBA  Requêtage  Modélisation Code-First
  • 29. Quelques bonnes pratiques Fermez vos connexions !  Le ConnectionPool ne le fera pas à votre place Mettez l’application name dans vos chaînes de connexion data source=.;initial catalog=AW;integrated security=SSPI;application name=MonAppli Bannissez le WITH (NOLOCK)
  • 31. L’importance de la sécurité Le besoin en sécurité est présent partout dans le SI Principe du moindre-privilège Points de vigilance Utilisation du compte SA (sysadmin) et DBO SQL Injection
  • 33. En conclusion Paradigme différent Contraintes propres Compétences particulières > Adoptez un DBA
  • 34. Pour aller plus loin… Venez nous voir sur le stand SQL Server  Retrouvez les experts Microsoft et MVP  Assistez à des présentations des offres de nos partenaires Inscrivez-vous au « Virtual Launch Event » du 8 mars : http://aka.ms/vlefrance Visitez notre nouveau site : http://www.microsoft.fr/sql Evaluez dès aujourd’hui SQL Server 2012  En téléchargeant la RC0 : http://aka.ms/sql2012  En suivant nos « Virtual Labs » : http://aka.ms/sqllabs