Consultant indépendant basé en France, je suis spécialisé dans le domaine des bases de données relationnelle avec une expertise Microsoft SQL Server depuis plus de vingt ans. Je fournis également conseil, et mise en œuvre de moteurs non relationnels (NoSQL). Mes coordonnées sont disponibles sur la page de contact.
Working as a freelance and consultant in Paris, I am specialized in relational database, mainly MS SQL Server (MVP SQL Server (Most Valuable Professional), MCDBA 2000, MCITP 2005, MCSA 2012 certification) and non-relational solutions. I offer my services and expertise for modeling, administration and tuning, of both server and SQL code. I am the author of several books in French and in English.
Prestations
- Audits de performances et de bonnes pratiques;
- Architecture de données, modélisation et migrations;
- Formation aux développeurs et aux administrateurs;
- TMA (Tierce maintenance applicative), et administration à distance de vos serveurs SQL.
Optimisation : ma façon de travailler
La version résumée
- les SGBDR comme SQL Server sont des outils exigeants qui nécessitent un certain niveau de connaissance;
- il est important de modéliser et de développer correctement pour avoir de bonnes performances;
- il faut connaître le moteur, faire des tests de charge, bref prendre le sujet au sérieux;
- Je suis spécialisé dans l’audit, le diagnostic, l’optimisation, la formation autour des problèmes de performance avec SQL Server.
- Je privilégie l’accompagnement : accompagnement du DBA, coaching des développeurs.
- Je réalise des audits argumentés, et je peux vous accompagner sur le suivi de la mise en place;
- Je réalise des formations ciblées, avec mes propres supports de cours, de base comme avancées. J’ai notamment des formations d’optimisation pour développeurs, et des formations de diagnostic et de résolution de problèmes.
La version longue
Depuis une quinzaine d’années j’interviens pour auditer et améliorer les performances de serveurs MS SQL Server.
Même si Microsoft ne le dit pas toujours, Les SGBDR (Systèmes de gestion de bases de données relationnelles) comme SQL Server sont des outils exigeants. Pour en obtenir le meilleur, il faut avoir un certain niveau de connaissance, non seulement sur le moteur lui-même, mais aussi sur le langage SQL. C’est un langage particulier, déclaratif et ensembliste, il requiert une façon de penser différente des langages orientés objet. Malheureusement, ces connaissances manquent souvent et cela induit une utilisation sous optimale de SQL Server.
Résumons le pattern le plus souvent rencontré : une entreprise développe une application qui stocke ses données sur SQL Server. La phase de développement se passe sans problème, sur un serveur où seuls les développeurs se connectent, et qui contient un jeu de données limité. le programme est testé, une démo est organisée pour montrer au management que tout fonctionne bien et que les temps de réponse sont bons, et le programme est mis en production sans test de charge. Au début, tout se passe bien, mais les performances se dégradent avec l’augmentation de la volumétrie et de la concurrence d’accès, et deviennent critiques au pire moment : lors des périodes de fortes activité. On se met alors à chercher des solutions, on ajoute de la RAM, on sépare les tables sur différentes partitions, on ajoute des processeurs, sans savoir précisément d’où vient le problème et sans pouvoir prédire que cela va débloquer la situation. Ces solutions amènent quelques améliorations, mais à une échelle assez décevante, et le problème perdure.
Un SGBDR comme SQL Server n’est pas un entrepôt un peu bête qu’on optimise en lui dédiant une machine plus puissante. Cette forme de résolution de problème par les muscles n’est jamais une bonne idée en première instance. La vraie optimisation d’un moteur SQL passe par le cerveau, et par l’amélioration des structures, du code et de l’indexation.
De plus, la difficulté d’accès du SGBDR et du langage SQL amène de nombreuses équipes de développement à passer par des couches d’abstraction comme les ORM (frameworks de mapping relationnel-objet). Même Microsoft recommande l’utilisation d’Entity Framework pour l’accès à SQL Server. Si c’est compréhensible pour les besoins élémentaires avec une volumétrie raisonnable, cela pose par contre des problèmes là où la rapidité des traitements sur des volumes importants est essentielle. Un générateur de code comme EF est aujourd’hui incapable d’utiliser au mieux les subtilités du langage SQL pour obtenir des requêtes optimisées, et il lui est aussi très difficile de traiter des opérations en mode ensembliste, comme par exemple une mise à jour de données sur un ensemble de lignes en une seule instruction.
Je connais ces problématiques, aussi bien du coté de SQL Server que du côté du développement client. J’ai fait du développement durant plusieurs années, et je continue à développer parfois pour des clients, en ce moment sur un environnement .NET and EF. et je vois bien comment la manipulation de EF nous entraîne à nous poser des questions purement .NET et purement objet en oubliant les exigences de SQL Server.
Je suis spécialisé dans l’audit, le diagnostic, l’optimisation, la formation autour des problèmes de performance avec SQL Server. Ma façon de travailler – en tout cas celle que je privilégie – est basée sur l’accompagnement : accompagnement du DBA, coaching des développeurs. Je me base sur deux points forts : l’identification précise et argumentée des problématiques de performance, et la mise en place suivie de stratégies et de bonnes pratiques pour améliorer les choses, en prenant sérieusement en compte les besoins des deux parties : DBA et développeurs. Dans les cas où mes clients ont installés des logiciels tiers d’éditeurs et sont insatisfaits des performances, j’établis un audit précis et argumenté des problématiques réelles, de façon à démontrer la source du problème et permettre un dialogue constructif avec l’éditeur.
J’ai développé mes propres supports de cours pour des formations données dans des centres de formation, et j’ai donc à disposition un support permettant de faire d’abord une mise au point théorique, pour ensuite diriger mon accompagnement sur une approche coaching que je privilégie pour son aspect concret et pratique, de préférence sous la forme d’un accompagnement étalé dans le temps, de façon à ce que les préconisations soient mises en place et ajustées au besoin.