Le DBA

Le DBA est principalement chargé de :
  • La mise en place de standards, préconisation et bonnes pratiques : il décide des normes de nommage des objets pour les bases créées en interne, édicte les bonnes pratiques que les développeurs devront suivre, documente les procédures de maintenance afin que d'autres acteurs puissent intervenir en son absence.
  • D'évaluer les besoins et la qualité : certaines bases de données n'étant pas développées de manière interne, il est important qu'il soit consulté afin de dimensionner les serveurs devant héberger une solution applicative d'éditeur, tant sur le plan des ressources (volumétrie, nombre d'accès), que sur le plan de la maintenance (maintien des performances, fréquence des sauvegardes…).
  • La modélisation de la base : bien qu'elle incombe normalement à l'analyste ou au concepteur (parfois au développeur), les principes de modélisation de bases de données doivent être parfaitement maitrisés par le DBA. En effet, les facteurs de dégradation des performances étant en premier lieu liés à la structuration des données (respects des principes de modélisation, relationnel ou décisionnel…), le DBA se doit de bien connaître les principes de modélisation et les problématiques en jeu afin de conseiller les analystes et développeurs ou bien pour résoudre les problèmes de performance à ce niveau par refactoring.
  • La définition et la gestion des espaces de stockage : comme une base de données a besoin de beaucoup de place pour les données et le journal de transaction, il doit dimensionner les espaces de stockage physiques (storage : tablespace, groupes de fichiers…) et logiques (partitionnement), et choisir les disques ou SAN de manière préventive, et les auditer régulièrement afin de décider de l'ajout ou du basculement de certains objets logiques sur de nouveaux espaces (croissance de la volumétrie des données et "capacity planning").
  • L'intégrité des données : il vérifie ou aide à vérifier la cohérence des données de la base afin qu'elles ne rentrent pas en conflit avec les principes du système réel. Pour cela, il est chargé de la mise en œuvre de contraintes d'intégrité (intégrité de domaine, clef primaires et subrogées, clefs étrangères et leur mode de gestion, validation des données, assertions…) ;
  • La sécurité d'accès aux données : il définit ou implémente l'accès aux données en autorisant des profils de connexion ayant faculté d'exécuter certaines commandes dans certaines bases (gestion des privilèges) ;
  • La récupération de données : il doit s'assurer que le plan de sauvegarde mis en place est opérationnel et recouvrant. Pour ce faire il doit auditer la fréquence de changement des données sensibles afin, par ses sauvegardes, de pouvoir remonter une base à un point particulier du calendrier, à la suite d'une erreur fonctionnelle. Il doit aussi et très régulièrement vérifier la consistance des sauvegardes et la faisabilité de la restauration en expérimentant celle-ci dans des conditions proches de la réalité (gestion de désastre).
  • La maintenance de base : il doit vérifier que les espaces de stockage sont en bon état et dans le cas contraire les réparer. Il doit défragmenter les structures de stockage et les index afin d'assurer un temps de réponse linéaire. Il doit s'assurer de la bonne gestion des fichiers (données et journaux de transactions) afin que ces derniers ne saturent pas les disques.
  • La gestion des désastres (disaster recovery) : il doit créer et tester des solutions de maintien de la continuité de la production (clusterisation, mise en miroir, log shipping…) afin qu'en cas de sinistre matériel la production puisse redémarrer dans un temps imparti prédéfini (quelques secondes pour les meilleures solutions);
  • Le maintien de la performance : il assure que l'accès aux données se fasse dans un temps raisonnable et que cette performance soit maintenue dans le temps. Il doit donc mettre en œuvre une veille sur les statistiques d'exécution et réagir sur des allongements de temps de réponse en diagnostiquant le problème et en le résolvant si celui-ci est de son ressort (procédures de maintenance, ajout de ressources physique, refactoring du modèle de données…). Pour cela il dispose d'outils qui lui donnent des informations sur les objets les plus utilisés et leur consommation de ressource lors des traitements (lecture, écritures, temps CPU…).
  • l'optimisation : il doit régulièrement et de manière pro-active faire des campagnes de mesure afin de débusquer les problèmes de contention ou de temps de réponse avant qu'ils ne deviennent handicapants pour l'exploitation et proposer les mesures nécessaires à les éradiquer : meilleurs gestion des transactions, études d'indexation, statistiques, réécritures de requêtes.
  • L'aide au développement et aux tests : il doit fournir un support aux équipes de développement. Par exemple, il peut fournir des jeux de données en vue de tests (pris sur des bases en production), conseiller les développeurs sur les techniques à utiliser afin d'obtenir les meilleurs performances d'emblée, voir participer à la structuration de la base afin notamment d'implémenter les nouvelles fonctions. En dernier ressort, il valide les demandes de modifications ou modification du schéma de la base;
  • La gestion des flux de données : il est responsable des problématiques d'import et d'export des données tant sur le plan des ressources à y allouer que de la sécurité à mettre en œuvre.
  • Migration et mises à jour : il doit régulièrement appliquer les mises à jour préconisées (système et SGBD) et assurer la migration des bases par exemple dans le cas d'un changement de serveur.
NOTA : la plupart des opérations de maintenance qu'un DBA doit réaliser s'effectuent en production, c'est-à-dire sans interrompre le service des données. Les exigences en matière de disponibilité visant bien souvent 99,999 % du temps (soit 5 minutes d'interruption par an), les SGBD sont conçus pour ne jamais devoir être arrêtés quelles que soient les opérations à effectuer, et certains serveurs physiques d'aujourd'hui permettent d'ajouter de la mémoire ou du CPU à chaud.
Le DBA doit être en mesure de bien connaître les systèmes de production ou de services existant (physiques, c'est-à-dire OS et réseau, et logiques, c'est-à-dire sur le plan fonctionnel) sur les sites d'utilisation de la base de données. Il est en général spécialisé sur un type de moteur de base de données particulier (MySQL, Oracle Database, DB2, Microsoft SQL Server, Sybase, Informix, PostgreSQL, Ingres,…) commercial ou non.
On distingue plusieurs sous-catégories de DBA :
  • L'administrateur de bases de données développement ou études : Il travaille conjointement avec les équipes de développement et est responsable du modèle logique et physique de la base de données. Il a souvent à charge l'administration des bases pendant la durée du projet. Il peut être amené à développer les procédures ou scripts SQL, et participe à la validation et aux tests. Il est très souvent responsable du contenu et du contenant (les données et le serveur lui-même).
  • L'administrateur de bases de données production : Il assure la disponibilité et le bon fonctionnement des systèmes de bases de données. Il travaille en environnement haute disponibilité 24h/24h 7/7j. Cette fonction s'accompagne presque systématiquement d'astreintes. La volumétrie peut ici être très importante, quelques dizaines à quelques milliers de bases de données par DBA, soit au maximum une centaine de serveurs à surveiller. Il est en général responsable du contenant mais pas du contenu : le système de bases de données, mais pas les données elles-mêmes. Cependant il doit toujours être en mesure de récupérer les données, et de restaurer une image valide des systèmes. Il est mieux rémunéré que l'administrateur développement principalement à cause des risques et des responsabilités qu'il assume : une panne majeure pouvant aller jusqu'à la faillite de la compagnie.

Outils du DBA

Les outils utiles au travail du DBA sont les suivants :
  • outils internes (propre au SGBD) : utilitaire de sauvegarde, de vérification des structures d'allocation, de défragmentation des données, outils d'audit ou de tuning, assistants de mise en place de réplications, outils d'intégration de la haute disponibilité au niveau logique.
  • outils externes (propre au SGBDR ou d'éditeurs indépendants) : outils d'intégration ou d'export des données dit ETL (Extract Transform and Load) ou ELT (Extract Load and Transform) comme Talend, Pentaho, Oracle Data Integrator, SQL Server Integration Services - outils de sauvegarde (Herman de Falconstore pour Oracle, Speed Light de Quest Software pour SQL Server…) - outils d'audit divers (Performance Advisor de Sentry pour SQL Server, Toad de Quest Software pour Oracle…) - outils de gestion de la haute disponibilités au niveau physique (Oracle RAC, Microsoft Clustering Services), de vérification des bonnes pratiques (SQL Server Best Practices Analyzer…).
NOTA : certains éditeurs comme Oracle font payer chacun des outils séparément en sus de la licence d'exploitation du serveur. D'autres comme MS SQL Server intègrent tous ces outils en standard dans la licence, certains étant téléchargeables.

Enregistrer un commentaire

0 Commentaires