Bonjour tout le monde,
Je suis actuellement en stage en entreprise et mon sujet est la migration d'une base de données Sybase vers un SGBD Open Source. Donc j'ai épluché les principaux SGBD Open Source à savoir MySQL, PostgreSQL, Ingres et Firebird. Le SGBD d'origine dispose de plus de 300 procédures stockées, des index, des triggers et j'en passe. Une procédure peut avoir jusqu'à 300 paramètres. DOnc je vous rassure ce n'est pas moi qui est fait ca mdr mais le problème et que maintenant je dois migrer cette base de donnée, vous comprenez donc mon désarroi. Il semblerait qu'aucun SGBD soit susceptible de supporter cette migration pour ces raisons la :
PostgreSQL 8.3.7 :
- Les fonctions stockées prennent au maximum 100 paramètres en entrée.
- Pas d'instruction GOTO.
- Pas de synonymes.
- On ne peut pas assigner de valeur par défaut aux paramètres d'une fonction.
MySQL 5.1 :
- Pas de gestion des rôles.
- Ne gère pas les curseurs dynamiques dans les procédures stockées.
- Pas d'instruction GOTO.
- Pas de synonymes.
Ingres 9.2 :
- Pas d'instruction GOTO et IF EXISTS.
- Il n'est pas possible de déclarer des curseurs dans les procédures stockées.
- Pas de TRUNCATE.
- Pas de SQL dynamique possible dans les procédures stockées.
Firebird 2.1 :
- Création des utilisateurs non disponible en SQL seulement en ligne de commande.
- Pas d'instruction GOTO et IF EXISTS.
- Pas de synonymes.
- Pas de type booléen.
- Pas de FOR EACH ROW dans les triggers.
- Pas de TRUNCATE.
- Pas de curseur dynamique possible dans les procédures stockées.
Comme vous pouvez le voir certaines fonctionnalités peuvent être esquiver facilement en utilisant des astuces cependant pour remplacer l'instruction GOTO par exemple ou encore permettre les curseurs dynamiques, c'est à se tirer une balle. Je me suis donc dis, je vais externalisé mes procédures en utilisant les UDF (User Defined Function) pour pouvoir bénéficier du GOTO présent en langage C mais le hic c'est que elles sont limités en paramètres d'entrée :
10 pour Firebird
2 pour Ingres
100 pour PostgreSQL
Il faut savoir qu'actuellement dans l'entreprise ou je suis la base de donnée Sybase est reproduite sous Oracle, DB2 et SQL Server comme par hasard les 4 serveurs qui possèdent l'instruction GOTO.
Me voila donc complètement déprimer en train de me demander comment je vais faire. Si quelqu'un a un début d'idée, Merci d'avance.
Partager