Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

LINQ to SQL : Bonne ou mauvaise chose ?

On n'est pas dans un match développeur contre DBA où l'inverse... Je cherche surtout à mettre en avant les points clefs de l'intérêt ou non de LINQ des 2 côté de la barrière.

Les plus de LINQ

  • Les développeurs n'écriront plus de SELECT * et passerons systématiquement la liste des champs au moteur, de ce point de vue certains cas d'optimisation côté SQL seront mieux traités
  • Les noms d'objets sont totalement qualifié : « schéma.objet » sans que le développeur ai à s'en préoccupé, là aussi c'est un plus important pour des questions de performance et de sécurité.
  • Le format de la requête SQL est géré par LINQ, ainsi que contenu, double avantage permettant de limiter très fortement les risques d'injection SQL et de permettre de meilleures réutilisations de plans basé sur le texte de la requête.
  • Certaines requêtes (de type « renvoie-moi les 20 enregistrements après le 2500 par rapport à tel critères ») sont très simplifiées vue du développeur et ne nécessitent pas de connaissances approfondies du code SQL.
  • C'est une bonne couche d'abstraction de code SQL, cela améliore pas mal l'interopérabilité entre les moteur de base de données. A condition toute fois que les éditeurs d'autres moteurs jouent le jeu.

Les moins de LINQ

  • Le code SQL/LINQ est géré côté application ce qui oblige en cas de patch du schéma à revoir le code de l'application, idem en cas d'optimisation un peu poussé. Forcera-t-on le DBA à mettre le nez dans le code de l'application ?
  • Là où certaines requêtes sont plus simples, d'autres au contraire deviennent vite très complexes, c'est le cas par exemple des jointures externe. Cela force le développeur à résonner à l'aide de sous requête et le code devient alors plus lourd qu'en SQL.
  • Rajouter une couche d'abstraction revient à alourdir l'ensemble de l'accès aux données et à ralentir encore un peu plus l'ensemble. Pas de miracle ici, interopérabilité signifie généralement sacrifier un peu les performances.
  • La gestion des transactions reste pour le moment un peu floue, est ce que le traitement est fait à 100% au niveau du moteur SQL ou un mix .Net / SQL. Rajouter une couche d'abstraction fait un peu perdre de vue cette notion et son contrôle.

Mini-Conclusion non définitive

LINQ est globalement une bonne chose pour des requêtes simples. Les développeurs peu expérimentés en base de données devraient aussi y trouver leur bonheur. Je suis très content par exemple que les requêtes sur des fenêtres de données soient gérés toutes seules, mais la méthode utilisée par LINQ est un bon compromis facilité / maintenance, en aucun cas la méthode la plus rapide dans toutes situations.

Par contre ce qu'il ne faudrait pas oublier c'est que le DBA risque de perdre le contrôle des requête ce qui risque de provoquer des dégradations de performance, et risque d'obliger à patcher de plus en plus l'application.

Pour des tâches complexes de traitement de données personnellement je resterais côté serveur avec mes procédures stockées. L'un n'empêche de toute façon pas l'autre. Dernier point, j'aime beaucoup l'aspect intérop de la chose.

Bon débat…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mercredi 20 juin 2007 19:23 par christian
Classé sous : ,

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [ #Yammer ] From Mailbox to Yammer and back / De votre messagerie vers Yammer et retour ! par Le blog de Patrick [MVP SharePoint] le 09-15-2014, 11:31

- [ #Office 365 ] New service settings panel / Nouveau panneau de paramétrage des services par Le blog de Patrick [MVP SharePoint] le 09-11-2014, 08:50

- Problème de déploiement pour une démo SharePoint/TFS? par Blog de Jérémy Jeanson le 09-10-2014, 21:52

- [ #Office365 ] Delve first impressions / Premières impressions sur Delve par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 16:57

- [ #Office365 ] How to change Administration console language ? / Comment changer la langue de la console d’administration ? par Le blog de Patrick [MVP SharePoint] le 09-09-2014, 08:25

- [ #SharePoint 2013 ] Suppression de bases de données en état “Pas de Réponse” par Le blog de Patrick [MVP SharePoint] le 09-04-2014, 14:10

- Changer l’adresse d’une ferme Office Web Apps associée à SharePoint par Blog de Jérémy Jeanson le 09-01-2014, 22:21

- Une ferme #SharePoint 2013 dans @Azure en quelques clics (1ère partie) ! par Le blog de Patrick [MVP SharePoint] le 08-28-2014, 18:52

- SharePoint 2013: Préparation de la migration - Création des site Templates dans 2010 et 2013 par Blog Technique de Romelard Fabrice le 08-20-2014, 16:31

- [ #Yammer ] How to change interface language ? Comment changer la langue de l’interface ? par Le blog de Patrick [MVP SharePoint] le 08-20-2014, 14:21