Mercredi 15 septembre 2021
La manipulation des données
By Antoine P.
************************************
La manipulation des données : Procédures stockées, ORM a quel moment doivent-ils être utilisés ?
Afin de vous présenter brièvement les raisons pour lesquelles cette question peut être amenée à se poser, je vais me présenter brièvement.
En arrivant dans ma toute première mission, j’ai tout d’abord découvert la stack du projet, puis en arrivant vers la couche d’accès aux données il y a avait un ORM (Entity Framework) utilisé avec LINQ (Language-Integrated Query) et toute une autre partie qui ne faisait ni plus ni moins que des appels à des procédures stockées en base de données.
Il est important de noter que l’ORM n’intervient pas du tout sur la même couche que les procédures stockées. Il est donc important de ne pas les comparer.
En milieux scolaires, dans mon cas du moins, nous avions eu la notion et la pratique d’un ORM, de même pour les procédures stockées. Mais nous n’avions jamais eu l’occasion de les appliquer dans un domaine concret et par conséquent de voir a quel moment il est important d’utiliser l’un par rapport ou l’autre ou alors les deux.
Cependant quels sont leurs avantages et leurs inconvénients ? Peuvent-ils se compléter ou sont-ils incompatibles ? Quel est le choix le plus pertinent selon les situations ?
Nous allons tenter d’apporter certains éléments de réponses, en abordant l’ORM et les procédures stockées sans rentrer dans le détail ADO.NET ou EF.
1- L’ORM
Image source : https://www.developpez.net/forums/attachments/p474863d1/a/a/aA – Avantages
- Il n’y a plus besoin de se soucier de la base de données utilisée derrière
- La quantité de code est réduite
- Une fois les connaissances de l’ORM maitrisées, les mises en place de règles de développement objet sont parfois plus facile à maitriser pour l’ensemble des développeurs.
- Les équipes de développement (hors BDD) n’ont pas besoin de se soucier du fonctionnement de la base de données
B – Inconvénients
- La gestion des requêtes plus complexe n’est pas toujours évidente (par rapport au traditionnel SQL)
- Le débuggage des requêtes n’est pas toujours simple, selon les outils mis à disposition et il n’est pas toujours possible de placer des logs car les requêtes sont interprétées. On se retrouve dans certains cas à récupérer la requête générée en SQL afin de la reproduire coté base pour débugger.
- Une fois que l’on maitrise le SQL, quel que soit le projet ces connaissances ne sont pas perdues. Or, concernant l’ORM, dès que l’on change de langage, l’ORM change dans la grande majorité des cas. Cela entraine donc une nécessité pour les équipes de tout re apprendre.
- Beaucoup d’automatisation, on fait du one to one sur la DB, on ramène beaucoup d’objets inutiles par facilité et c’est peu précis. Il est possible de spécifier des DAO plus précisément, mais cela rajoute beaucoup de code et prends un temps de développement supplémentaire
2- Les procédures stockées
A – Avantages
- Toute la compléxité des requêtes est géré dans la procédure stocké Cela permet de dissocier la partie client de cette complexité, qui se contentera seulement de faire les appels à ces procédures.
- Il y a beaucoup plus de documentation SQL notamment grâce à son ancienneté
- Certaines requêtes complexes sont beaucoup plus faciles à réaliser en SQL
- Il est possible de créer des requêtes et de ne se soucier qu’à l’exécution de ces dernières sans pour autant avoir connaissance du schéma relationnel ou autre.
B – Inconvénients
- Etant stockées coté base de données, les procédures stockées augmentent la charge du serveur.
- Forte dépendance au SGBD
- On a vite tendance à gérer une grande partie du métier de ce côté et la dépendance à la DB est donc beaucoup plus importante.