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

- L’application des MiniDrones Parrot est aussi disponible pour Windows 8.1 par Blog de Jérémy Jeanson le 10-28-2014, 15:01

- L’application des MiniDrones Parrot est enfin disponible pour Windows Phone par Blog de Jérémy Jeanson le 10-27-2014, 09:49

- Mise à jour Samsung 840 EVO sur core server par Blog de Jérémy Jeanson le 10-27-2014, 05:59

- MVP Award 2014 ;) par Blog de Jérémy Jeanson le 10-27-2014, 05:42

- « Naviguer vers le haut » dans une librairie SharePoint par Blog de Jérémy Jeanson le 10-07-2014, 13:21

- PowerShell: Comment mixer NAGIOS et PowerShell pour le monitoring applicatif par Blog Technique de Romelard Fabrice le 10-07-2014, 11:43

- ReBUILD 2014 : les présentations par Le blog de Patrick [MVP Office 365] le 10-06-2014, 09:15

- II6 Management Compatibility présente dans Windows Server Technical Preview avec IIS8 par Blog de Jérémy Jeanson le 10-05-2014, 17:37

- Soft Restart sur Windows Server Technical Preview par Blog de Jérémy Jeanson le 10-03-2014, 19:43

- Non, le certificat public du CA n’est pas un certificat client !!! par Blog de Jérémy Jeanson le 10-03-2014, 00:08