Archives pour la catégorie PointDeVue

Le changement de version entre SQL serveur 2000 et 2005 est il nécessaire ?

En mars 2007, quand j’ai décidé de me plonger dans l’étude approfondie des bases de données pour en faire un métier, je me suis intéressé à SQL Serveur 2005 qui était le produit le plus récent. Après 2 mois d’étude du produit sur la version developper : J’écrivais cet article qui vantait les nouveautés SQL de cette version à juste titre:
Référence : ici

SQL Serveur 2005 est plus performant en terme de haute disponibilité mais SQL Serveur 2000 sait déjà faire les 3 sortes de réplications.

SQL Serveur 2005 est un trés bon produit OLAP mais SQL serveur 2000 possède déjà les lots dts et un noyau Analysis service.

D’autre part, SQL Serveur 2005 est encore mieux sécurisé en comparaison des autres sgbd du marché et il offre une scalabilité encore plus grande à la montée en charge.

Néanmoins, Aujourdhui, je travaille à mi-temps sur SQL Serveur 2000 et je trouve que ce SGBD est une trés bonne base de données suffisante pour la majorité des bases internet.

Lire la suite

A quel moment doit avoir lieu l’optimisation d’une base ?

L’ importance de la normalisation de la base est essentiel. Le modèle relationnelle a fait passer le gros du travail de la partie développement à la partie conception.
L’ Architecte de la base, premier intervenant du projet, qui utilise POWER AMC ou Toad Data Modeler doit respecter absolument la 3 ème forme normale dans la définition de son modèle. On ne peut pas faire l’ économie d’un modéle relationnel dans la conception d’ une application.

Le deuxième pôle de l’ optimisation est le soin apporté à l’ écriture du SQL. Privilégié le plus possible l’ écriture de SQL à l’ écriture de Transact SQL. L’ utilisation de SQL permet l’ indexation et des performances supérieurs. Par exemple, la semaine dernière, mon patron me signale une application dont les temps de réponses dépassés 30 secondes. Fier de mes connaissances, je propose d’ optimiser la requête par une indexation adéquate. Je passe 3H00 sur la requête pour finalement découvrir que les 30 secondes sont perdus par l’ utilisation en cascade de fonctions. Évidemment, en tant que développeur, on doit répondre à des besoins fonctionnelles et l’encapsulation en fonction répond bien à nos besoins mais en production, avec 100000 lignes dans une table, on perd un temps précieux à l’ exécution.

Le troisième pôle de l’ optimisation est l’ indexation. Sur des tables de plus de 1000 lignes, il devient important d’ indexer. Un produit comme POWER AMC vous facilite le travail puisqu’ il génére la majorité des index à la conception pour des tables bien normalisé.

On découvre donc bien que l’ essentiel de l’ optimisation d’ une base de données ne se passe pas donc pas en production, par le DBA, mais lors de la fabrication, par le développeur et l’architecte de la base.

Ne simplifions pas trop, les développeurs règlent généralement très bien les problèmes apparents et les problèmes de performances apparaissent souvent très tard dans le cycle de vie et entraîne des interventions des DBA. Néanmoins, la montée en charge future d’ une application peut être prévu très tôt par le respect de normes.

Qu’apporte SQL Serveur 2005 dans la résolution des problèmes SQL ?

Je dois avouer que les ingénieurs de Microsoft ont fait un travail remarquable dans l’interrogation des données ( T-SQL ) pour la version 2005.

La première révolution, c’est la gestion de la récursivité dans les tables hiérarchiques. Un problème, hier, complexe qui impliquait l’utilisation d’un langage de programmation, la connaissance de la récursivité en .net par exemple ou l’utilisation d’une organisation intervallaire ( voir l’article remarquable de sql pro sur ce sujet : http://sqlpro.developpez.com/cours/arborescence/ )
Aujourd’hui, grace aux CTE ( Common Table Expression ), on peut gérer des arbres hierarchiques simplement dans une requête.

La deuxième révolution, c’est les fonctions de fenetrage et de classement. Un problème résolu sous oracle depuis la version 8 qui trouve enfin sa solution chez microsoft. La question qui est résolu est la suivante :
Vous avez une université composé de modules, les modules sont composés de TD, les TD sont remplis d’élèves noté par un professeur.
Pour chaque module de l’université, vous voulez connaitre le nom des 3 premiers lauréat de chaque TD. Seul les fonctions de classement ROW_NUMBER, RANK(), PARTITION BY permettent de gérer ce problème.