Rechercher sur le site:
             
 
Web Memoire Online

Consulter les autres mémoires    Publier un mémoire    Une page au hasard

étude d'une migration de Sybase vers PostgreSQL


par Virginie Quesnay
IUP Génie des systèmes industriels - ANNECY - Master
Traductions: Original: fr Source:

Disponible en mode multipage

Copyright (c) Virginie QUESNAY

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;

with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU

Free Documentation License".

 

VIRGINIE QUESNAY
Master OTSI
Année 03/04

C.C.I. DE LA
HAUTE-SAVOIE

5 rue du 27ème BCA - BP 2072
74011 Annecy CEDEX

MEMOIRE PROFESSIONNEL

Étude d'une migration de Sybase vers PostgreSQL

Enseignant tuteur : Christian BRAESCH

Maître de stage : Christophe POLLIER INSTITUT UNIVERSITAIRE PROFESSIONNALISE

DE GENIE DES SYSTEMES INDUSTRIELS

Genie des systèmes d'information

 

VIRGINIE QUESNAY
Master OTSI
Année 03/04

C.C.I. DE LA
HAUTE-SAVOIE

5 rue du 27ème BCA - BP 2072
74011 Annecy CEDEX

MÉMOIRE PROFESSIONNEL

Étude d'une migration de Sybase vers PostgreSQL

 

VIRGINIE QUESNAY
Master OTSI
Année 03/04

C.C.I. DE LA
HAUTE-SAVOIE

5 rue du 27ème BCA - BP 2072
74011 Annecy CEDEX

?

RÉSUMÉ:

Ce mémoire a été réalisé lors de mon stage de fin d'études de Master a l'IUP-GSI d'Annecy le Vieux. Celui-ci s'est déroulé au sein de la Chambre de Commerce et d'Industrie de la Haute-Savoie du 8 mars au 25 juin 2004.

Le but de ce stage était d'étudier les possibilités de migration d'une base de données de Sybase vers PostgreSQL.

Ce mémoire est donc composé de trois parties:

- Le contexte du stage (l'existant);

- La problématique de migration de base de données;

- L'illustration de cette problématique par le cas concret qu'était mon étude.

MOTS-CLEFS:

PostgreSQL, Sybase, Perl, SQL, Migration, Traduction

Remerciements

Je tiens tout d'abord à remercier mon maître de stage et chef de projet Mr Christophe POLLIER, pour m'avoir proposé un sujet aussi interressant et formateur et de m'avoir guidée dans mon travail tout en me laissant un maximum de libertés et d'initiatives.

Je tiens également à remercier tous les collaborateurs de la CCI et tout particulièrement ceux du services TIC dans lequel j'ai travailé : Grégory BENOIST, Vincent AUGIERMICOU, Laurence BOQUET et Laurent POSSETY pour leur accueil sympathique et chaleureux.

Enfin, je remercie Christian BRAESCH, mon tuteur de l'IUP GSI.

Table des matières

Remerciements i

Liste des illustrations v

Liste des tableaux vi

Liste des codes sources vii

Introduction 1

I L'existant 2

1 Presentation de la C.C.I 3

1.1 Son Histoire 3

1.2 Son implantation 3

1.3 Sa mission et ses objectifs 4

1.4 Son organisation 5

1.4.1 Les élus 5

1.4.2 Les collaborateurs 6

1.5 Le service TIC 6

1.5.1 Ses missions 6

1.5.2 Ses acteurs 6

2 Sujet et Objectifs 7

2.1 Presentation du contexte 7

2.1.1 Le Système d'Information de la CCI 7

2.1.2 Caracteristiques techniques du Système d'Information 7

2.2 Presentation du projet 8

3 La problematique Système d'Information 9

II Étude de la problematique de migration de base de données 11

4 Les approches possibles 12

4.1 L'approche "systematique" 12

4.2 L'approche "empirique" 13

4.3 Combinaison de l'approche "systematique" et de l'approche "empirique" 15

TABLE DES MATIÈRES

 
 
 

5 Les outils et technologies applicables 16

5.1 Utiisation d'une interlangue 16

5.2 Traduction "manuelle" 18

5.3 Traduction automatique "monotraducteur" 18

5.4 Utiisation d'outils de "reverse-engenering" 19

6 Les méthodes de gestion de projet informatique 20

6.1 Méthode non formelle 20

6.2 XP : eXtreme Programing 20

6.3 RUP : Rational Unified Process 21

6.4 DSDN (RAD) 22

7 Combinaison des approches, des technologies et des méthodes 23

8 Proposition d'une démarche et de "bonnes pratiques" 25

8.1 Déterminer la nature du problème 25

8.2 Vérifier s'il existe des solutions 25

8.3 Effectuer la Migration 26

8.3.1 Si une solution existante a été trouvée 26

8.3.2 Si aucune solution existante ne convient 26

III Application au contexte du stage 27

9 Les choix managériaux et technologiques 28

9.1 La gestion de projet 28

9.2 La démarche suivie 28

9.3 Les technologies utilisées 29

9.3.1 PostgreSQL 29

9.3.2 RedHat Database 30

9.3.3 Perl 30

10 Le travail réalisé 32

10.1 Évaluation de l'état de la base de données existante 32

10.1.1 Découverte du fonctionnement et des spécificités 32

10.1.2 Quelques chiffres 32

10.2 Étude des différentes techniques de migration 33

10.3 Écriture d'un traducteur en Perl 33

10.3.1 L'approche utiisée 33

10.3.2 Fonctionnement de l'application 34

10.4 Estimation du travail restant à effectuer 34

10.4.1 Méthode d'estimation 35

10.4.2 Réalisation des mesures 35

10.4.3 Résultats de l'estimation 36

11 Bilan du stage 38

11.1 Évaluation du travail réalisé 38

11.2 Problèmes rencontrés 38

11.2.1 Les problèmes techniques 38

TABLE DES MATIÈRES

 
 
 

11.2.2 Les problèmes liés à l'organisation 39

11.2.3 Les problèmes liés au manque de connaissance 39

Conclusion 40

Annexes 41

A Les CCI en France 42

B La CCI de la Haute-Savoie 47

C Les Chiffres de la CCI de la Haute-Savoie 49

D Organigramme 51

E La licence BSD (Berkeley Software Distribution) 52

F Limitations de PostgreSQL 53

G Phases pour réaliser l'ensemble de la migration 54

H Options pour l'utilisation de sybase2postgresql 56

I Documentation de sybase2postgresql 58

J Problèmes spécifiques a chaque type d'information a migrer 60

K Mesures pour les indicateurs de complexité des procédures 66

L Installation de modules supplémentaires pour Perl 69

M Enregistrement d'un fichier en UTF-8 sous Emacs 71

N Webographie 72

Bibliographie 74

Glossaire 76

Liste des illustrations

1.1 Nouveau bâtiment de la CCI dans le quartier Galbert 3

1.2 Implantations de la C.C.I. en Haute-Savoie 4

1.3 Organisation globale de la CCI 5

4.1 Utiisation d'une méthode systématique pour la traduction de textes . . 12 4.2 Utiisation d'une méthode empirique pour la traduction de textes . . . . 14

5.1 Méthode de traduction avec une interlangue 16

5.2 Méthode de traduction sans interlangue 17

5.3 Méthode de traduction automatique 18

7.1 Corrélation entre les approches, les technologies, les méthodes et la

taille de l'équipe 23
7.2 Exemple de mauvaise corrélation entre les approches, les technologies,

les méthodes et la taille de l'équipe 24
7.3 Exemple de bonne corrélation entre les approches, les technologies, les

méthodes et la taile de l'équipe 24

A.1 Positionnement des CCI entre privé et public 43

A.2 Une organisation pyramidale mais non hiérarchisée 45

C.1 Répartition des ressources de la CCI (13 328 M€) 49

C.2 Part de l'IATP dans le budget de la CCI 50

C.3 Répartition des ressortissants par secteur d'activité en 2003 50

D.1 Organigramme simplifié de la CCI de la Haute-Savoie 51

K.1 Nombre de lignes par procédure 66

K.2 Nombre d'instructions SQL par procédure 67

K.3 Nombre de structures if ou while par procédure 67

K.4 Nombre de curseurs par procédure 68

K.5 Répartition des procédures par type 68

Liste des tableaux

10.1 Dénombrement du contenu des bases de données 32

10.2 Catégories de procédures 36

10.3 Estimation du temps de développement par catégorie de procédures . 37

C.1 Répartition de la taxe professionelle départementale 49

F.1 Limitations of PostgreSQL 53

Liste des codes sources

H.1 Options de sybase2postgresql affichées grâce à l'option -h 56

H.2 Exemple de fichier de configuration de sybase2postgresql 57

J.1 Création des fonctions suser_id() et suser_id(username) 62

J.2 Création d'une fonction de conversion de type (varchar vers int) 63

J.3 Création d'une fonction de conversion de type (smallint vers bit) 63

L.1 Fichier de configuration du module MCPAN 69

Introduction

Afin de valider l'année de master de la formation OTSI de l'IUP GSI, chaque étudiant doit effectuer un stage de quatre mois en entreprise.

Ce stage est une étape importante pour un étudiant, non seulement du point de vue de la scolarité, mais aussi d'un point de vue personnel. La vie en entreprise est en effet nécessaire à la mise en pratique de l'enseignement reçu à l'IUP.

Ce rapport présente l'ensemble des travaux que j'ai effectués au cours de mon stage au siège de la CCI (Chambre de Commerce et d'Industrie) de la Haute Savoie à Annecy.

Durant ces 16 semaines, l'activité du stagiaire doit se partager entre une activité d'apprentissage "fondamental" (on pourrait dire "théorique") et une activité d'apprentissage "professionnel".

L'objectif de notre recherche est d'arriver à une réflexion théorique sur la migration de bases de données en se basant sur une expérience concrète qu'est la migration de bases sous Sybase vers PostgreSQL.

Cette réflexion a pour but de faire ressortir les approches et solutions possibles pour la résolution de cette problématique.

Ce mémoire s'articulera donc autour de trois axes:

Tout d'abord, nous présenterons le cadre du stage, la CCI, le sujet proposé et la problématique posée.

Ensuite, nous examinerons cette problématique et tenterons de lui apporter des solutions.

Enfin, le reste du mémoire portera sur l'ensemble du travail effectué : la méthodologie, les choix effectués, les résultats obtenus, leur analyse et les perspectives envisageables.

Ce rapport, produit avec LATEX2å, a été compilé le 25 juin 2004.

Premiere partie

L'existant

Chapitre 1

Présentation de la C.C.I.

1.1 Son Histoire

C'est en 1899 (soit 39 ans après l'annexion de la Savoie par la France) qu'un décret du Président Félix Faure institue une Chambre de Commerce a Annecy. Elle rejoint ainsi la vingtaine de Chambre de Commerces réparties sur l'ensemble du territoire (voir Annexe A, page 42).

A l'origine, la Chambre naissante est hébergée au rez-de-chaussée de la mairie d'Annecy puis dans l'ancien évêché. En 1932, elle emménage dans des nouveaux locaux qu'elle a fait construire rue du lac sur le terrain de l'ancienne caserne du 50ème Régiment d'Infanterie. Depuis juillet 2003, la Chambre de Commerce se trouve dans de nouveaux locaux (voir Annexe B, page 47), construits eux aussi a l'emplacement d'une ancienne caserne (celle du 27ème BCA).

FIG. 1.1 - Nouveau bâtiment de la CCI dans le quartier Galbert

1.2 Son implantation

Le département regroupe 4 poles économiques distincts, dotés chacun d'une spécificité et d'une problématique propre (Annecy, Genevois, Vallée de l'Arve et Chablais). Dès 1992, la C.C.I. décide d'ouvrir des antennes permanentes dans ces différent bas-sins d'emploi.

Aujourd'hui, la C.C.I. dispose d'un siège a Annecy et de trois antennes permanentes a Archamps, Marin et Scionzier.

Présentation de la C.C.I.

 

FIG. 1.2 - Implantations de la C.C.I. en Haute-Savoie

1.3 Sa mission et ses objectifs

La CCI de la Haute-Savoie a élaboré un projet d'entreprise dont l'objectif est de détecter, répondre et anticiper les besoins des 26 227 commerçants, industriels et prestataires de services du département. Sa mission est d'optimiser les performances des entreprises haut-savoyardes a travers une stratégie fondée sur la dynamique commerciale des entreprises et des territoires. Plusieurs actions phares concrétisent cet objectif :

- Faciliter la création et la reprise d'entreprises

- Pérenniser les jeunes entreprises

- Accompagner les chefs d'entreprises dans leur parcours d'entrepreneur

- Préparer la transmission d'entreprises

- Dynamiser l'environnement local

- Gérer les infrastructures indispensables au développement des entreprises (Aéroport d'Annecy Haute-Savoie, Gares routières d'Annecy, Annemasse et Cluses, Centre Régional de Douanes et de Transports d'Epagny)

Pour l'année 2004, la CCI a établi différents objectifs qui lui permettront de poursuivre la mise en cuvre de son Projet d'Entreprise:

- Offrir a ses clients (les entreprises) des prestations déclinées dans un catalogue produits,

- Développer des projets avec ses partenaires1 par un renforcement de la démarche partenariale,

- Organiser des évènements destinés aux entrepreneurs et aux entreprises.

1Collectivités territoriales et entreprises participant a la création, la pérennisation, l'animation et la transmission des entreprises.

Présentation de la C.C.I.

 
 

La création d'un catalogue produits a également pour but de rendre la CCI beaucoup plus indépendante de l'Impôt Additionnel à la Taxe Professionnelle (voir Annexe C, page 49) en vendant de nouveaux types de prestations à ses clients.

1.4 Son organisation

FIG. 1.3 - Organisation globale de la CCI

1.4.1 Les élus

Tous les 3 ans, les chefs d'entreprises de la Haute-Savoie sont appelés à désigner, à l'occasion des élections Consulaires leurs représentants à la CCI qui sont répartis en différents collèges:

- 34 membres titulaires:

Ils forment l'Assemblée Générale qui est l'instance souveraine. Les présidents, les membres du bureau et les présidents de commissions, sont élus parmi eux et par eux. Ils votent le budget annuel qui est ensuite soumis à l'approbation des ministères de tutelle.

- 33 membres associés:

Au côté des 34 membres titulaires, ils sont désignés après chaque élection et ils participent aux Assemblées Générales avec une voix consultative.

- 106 délégués consulaires:

Ils sont élus et représentent la CCI dans les 33 cantons du département.

Présentation de la C.C.I.

 
 

1.4.2 Les collaborateurs

Les employés de la chambre de commerce sont répartis en 13 services, plus l'accueil (voir Annexe D, page 51) et répartis sur 6 "plateaux" (chaque plateau étant un étage du bâtiment).

1.5 Le service TIC

1.5.1 Ses missions

Le service TIC a en charge les choix stratégiques à court et moyen terme dans le domaine de l'informatique et des nouvelles technologies de l'information et de la communication.

Les principaux axes d'intervention sont:

- La surveillance et l'intervention sur les équipements informatiques (serveurs, postes clients, . . .).

- La mise en place et la maintenance du réseau informatique.

- L'identification, l'évaluation et la quantification des besoins exprimés par les services.

- La proposition de solutions adaptées (techniques, logiciels, formations) en conservant au maximum une cohérence avec le système d'information existant.

- La maintenance des applications propres à la CCI de la Haute-Savoie.

- La veille technologique au sens large dans le secteur de l'informatique et des TIC.

- Les formations spécifiques à la CCI.

1.5.2 Ses acteurs

- Christophe Pollier (Directeur)

- Grégory Benoist (Technicien administrateur réseau)

- Vincent Augier-Micou (Développement et maintenance SGBD)

- Laurence Boquet (Support utilisateur - Formation)

- Laurent Possety (Maintenance du parc informatique)

Chapitre 2

Sujet et Objectifs

2.1 Presentation du contexte

2.1.1 Le Système d'Information de la CCI

La Chambre de Commerce et d'industrie de la Haute-Savoie s'est dotée, au fur et à mesure de sa croissance de différents outils informatiques.

Certains de ces outils sont des applications courantes et ont un fonctionnement "imposé" (Xerox Docushare, Microsoft Exchange, . . .).

D'autres applications sont quant à elles développées au sein de la CCI et continuent donc d'évoluer parallèlement aux besoins.

L'application la plus importante est BEE (Base Économique Événementielle), une application métier développée sous 4D1 associée à une base de données Sybase. C'est un outil de CRM qui constitue le coeur du système d'information de la CCI puisque, comme son nom l'indique, son but est de recenser tous les événements réalisés : contact avec un ressortissant, courrier postal et électronique, contact téléphonique ou email . . .

2.1.2 Caracteristiques techniques du Système d'Information

Le serveur Sybase contient plusieurs bases de données utilisées par les différentes applications de la CCI:

- base cci: Elle stocke les données concernant la CRM (BEE), la taxe d'apprentissage, les formations et l'aéroport (statistiques des vols).

- base consulaire : Elle stocke les fichiers "officiels" des entreprises ainsi que les formalités d'export (ATA-VISA).

- base cfe : Elle stocke les données du centre de formalités des entreprises. Elle n'est utilisée que pour conserver l'historique car l'application traitant ce type de données est maintenant nationale.

- base personnel: Elle stocke les données des Ressources Humaines (principalement utilisée pour le trombinoscope et la gestion des entretiens annuels).

Il y a actuellement 3 serveurs Sybase2 : 2 serveurs en production (1 serveur principal

14D (4ème Dimension) est un atelier logiciel de développement et de déploiement d'applications multipostes crossplate-forme.

2Sybase version 11.0.2/P en production et version 11.0.3.3 en test

Sujet et Objectifs

 
 
 
 

et 1 serveur avec une réplication3 quotidienne) et 1 serveur en test.

2.2 Présentation du projet

Les applications métier de la CCI s'appuient, comme nous l'avons précédemment indiqué (voir § 2.1.2, page 7), sur différentes bases de données fonctionnant sur un serveur Sybase.

La version de Sybase utilisée étant relativement ancienne, la CCI doit envisager une évolution importante, que ce soit la migration vers une version plus récente de Sybase ou vers un autre moteur de base de données.

Les collaborateurs de la CCI utiisent déjà avec succès différents logiciels libres. Il a donc été décidé d'évaluer l'opportunité d'effectuer cette migration vers une base de données libre. Cependant, les applications reposant sur cette base de données étant critiques pour le fonctionnement de la CCI, une migration de cette ampleur ne peut se décider à la légère.

Suite à ces différentes réflexions, il a été décidé d'effectuer une étude poussée afin de déterminer si cette migration était possible.

Cette étude devait donc porter sur les points suivants:

- Étude des différentes techniques de migration;

- Choix de la méthodologie à employer;

- Migration des structures (tables, séquences, index, vues);

- Migration des données;

- Migration des traitements (Triggers, Procédures);

- Mesure de l'efficacité du nouveau moteur de base de données.

3Le serveur de réplication est un serveur accessible depuis les applications cientes et dont le but est d'éviter les surcharges du serveur principal (pour ne pas trop ralentir le serveur principal avec de grosses requêtes ne nécessitant pas des données ayant moins de 24 heures, celles-ci sont réalisées sur le serveur de réplication).

Chapitre 3

La problematique Système

d'Information

Le problème de migration d'un SGBD a un autre, lorsqu'on y regarde d'un peu plus près, est en fait, le passage d'un langage a un autre. Or, lorsqu'on parle de traduction, on pense plus généralement a la linguistique et a l'étude du langage naturel.

Ce rapprochement, même s'il peut paraltre incongru a première vue, est finalement assez logique car les langages dits artificiels possèdent un grand nombre de caractéristiques communes avec les langages naturels. Les travaux de Noam Chomsky [11] sur l'approche de la linguistique générative ont fait ressortir des similitudes entre les langages naturels et les langages informatiques. On peut en effet y trouver des problématiques liées au lexique (vocabulaire), a la syntaxe et a la sémantique.

Ce rapprochement est d'autant plus évident lorsqu'on se base sur les travaux de recherche faits sur les compilateurs informatiques [12] qui utiisent de facon importante les travaux effectués en linguistique et sont des traducteurs (ils traduisent un langage écrit par un humain vers un langage compréhensible par un ordinateur).

Bien évidemment, la complexité des problèmes liés aux langages informatiques est moindre que celle liée a l'étude des langages naturels car certains aspects de la linguistique comme l'étude du langage parlé (phonétique, phonologie) ne sont pas présents et que le lexique employé est généralement moins conséquent.

Cependant, on peut tout de même retrouver, dans l'étude des langages informatiques, certains des problèmes les plus complexes de la linguistique et notamment les problèmes de pragmatique (variation du sens en fonction du contexte), voire même se trouver confronté a des situations oü le contexte n'est pas exprimé explicitement (il dépend de l'état du système ou d'autres données accédées directement en interne par le SGBD par exemple).

De plus, l'écriture dans un langage informatique est normalement plus rigoureuse, mais, tout comme les langages naturels, les langages artificiels, assez simples lors de leur création, ont évolué en gardant trace de leur histoire (on peut par exemple utiiser plusieurs syntaxes ou un vocabulaire totalement différent pour effectuer une même action).

Enfin, même si, comme nous l'avons dit, la problématique de la traduction dans le cadre des langages artificiels est beaucoup plus simple que pour les langages naturels, on peut rappeler que, pour cette dernière, de nombreuses recherches sont encore en cours. La traduction automatique est un problème qui a longtemps été sous-estimé

La problématique Système d'Information

 
 

mais qui est en fait l'un des plus délicats à effectuer pour un ordinateur. Aux phases lexicales et syntaxiques, à peu près maîtrisées, s'ajoutent une analyse sémantique, puis pragmatique, qui tentent de déterminer le sens particulier d'un mot, dans le contexte oü il apparaît. Le contexte lui-même pouvant s'étendre à l'ensemble du texte traduit.

Nous allons donc étudier les différentes approches et méthodologies issues de la linguistique informatique pour mener à bien un travail de traduction afin de déterminer quelles solutions peuvent être envisagées lorsqu'on se trouve confronté à un problème de migration de bases de données.

Deuxième partie

Étude de la problématique de

migration de base de données

Chapitre 4

Les approches possibles

4.1 L'approche "systématique"

Comme la migration d'un gestionnaire de base de données à un autre est assez semblable à la traduction d'un langage (naturel ou artificiel) vers un autre, il est possible d'utiliser une démarche proche de celles employées en ingénierie linguistique.

FIG. 4.1 - Utiisation d'une méthode systématique pour la traduction de textes

Les approches possibles

 
 

Cette démarche passe tout d'abord par l'élaboration d'un corpus [13]. Dans notre cas, le corpus créé peut être composé des définitions du langage utilisé par le SGBD, généralement fournies dans les documentations techniques, et complétées par des exemples de cas complexes.

Lorsque le corpus est assez complet, il est alors possible d'en extraire le lexique, la syntaxe et la sémantique du langage.

Dans notre cas, nous cherchons à réaliser une traduction d'un langage vers un autre, il faut donc effectuer ces opérations pour les deux langages afin de pouvoir les comparer et déterminer quels sont les éléments qui les différencient et obtenir des règles de traduction.

Enfin, il est possible d'appliquer ces règles à un document écrit dans un des langages pour obtenir sa traduction dans l'autre.

Lorsqu'on applique une approche systématique au traitement informatique d'une migration, on pourra assimiler cette démarche à une approche descendante (également appelée approche 'top-down').

Cette approche est à privilégier lorsqu'on se trouve confronté à la traduction d'un grand nombre de documents très hétérogènes ou à de nouveaux types de documents. Cette approche est longue à mettre à place, non seulement à cause de la nécessité de rassembler un corpus de documents suffisamment vaste pour couvrir tous les aspects d'un langage, mais aussi par la complexité d'extraction du lexique et de la grammaire de ce corpus.

Cependant, dans les cas complexes, on préférera ce type de cheminement car il per-met d'obtenir un traducteur "générique", capable de faire face à un nouveau document sans rencontrer de problèmes. Grâce à cela, il est également possible d'obtenir assez facilement un traducteur pour un langage "proche" (pour les langages informatiques comme pour les langages naturels, il existe des "familles de langues"1 qui ont les mêmes origines et donc un grand nombre de règles communes.

Suite à ces réflexions, on peut voir que l'approche systématique est destinée à réaliser un traducteur complet et flexible.

4.2 L'approche "empirique"

L'approche empirique, contrairement à l'approche systématique, se base sur le document ou l'ensemble de documents qui doivent être traduits et non sur un ensemble de documents de référence.

Cette démarche passe tout d'abord par la traduction "manuelle" de parties du document pour déterminer les règles de traduction.

On traduit ainsi des parties dont le lexique, la sémantique et la syntaxe sont différents jusqu'à obtenir des règles permettant de traiter l'ensemble du document. Une fois ces règles écrites, il est alors possible de les appliquer au document afin d'en obtenir une traduction complète.

1Pour les langages naturels, on peut par exemple citer le français, l'espagnol et l'italien qui sont des langues latines. Pour l'informatique, on peut citer le C++ et la java qui ont des origines dans le C ou Sybase et MS-SQL qui sont partis tous les deux d'une ancienne version de Sybase

Les approches possibles

 
 

FIG. 4.2 - Utilisation d'une méthode empirique pour la traduction de textes

Ici, cette approche peut être assimilée à un approche montante (également appelée 'bottom-up') car on part de "problèmes spécifiques" à un document jusqu'à obtenir un traducteur par agrégation de ces problèmes.

Si on possède suffisamment de documents différents et qu'ils couvrent tous les cas existants, on peut, par empirisme, obtenir un traducteur aussi complet que celui qu'on obtiendrait par une approche systématique mais cela nécessiterait une quantité de travail bien supérieure.

De plus, la complexité non linéaire de cette approche est un problème car chaque "cas particulier" résolu risque de rentrer en conflit avec les cas résolus précédemment ce qui implique que plus le nombre de règles de traduction augmente, plus le nombre de contradictions possibles augmente.

En fait, cette approche n'est rapide à mettre en place que si on a un nombre limité de "problèmes" de traduction et que l'on veut obtenir un traducteur pour un faible nombre de documents (ou si ces documents utilisent exactement les mêmes règles de traduction).

Cependant, cette démarche est limitée par le fait que l'écriture des règles passe par une phase de traduction manuelle. Si on doit traduire des documents très différents ou si les schémas linguistiques ne se trouvent pas assez souvent répétés, l'ensemble du travail de traduction sera finalement réalisé manuellement. Par exemple, si on se trouve dans le cas d'un document trop court, chaque élément traduit manuellement créera une nouvelle règle mais celle-ci ne sera utilisée que pour cet élément.

Comme les approches de type bottom-up ont une relation très forte avec l'existant, elles sont beaucoup plus adaptées dans le cas où on ne veut pas faire un outil généraliste mais spécifique à une situation. L'approche empirique sera donc réservée à la

Les approches possibles

 
 
 
 

résolution de problèmes ponctuels et à une traduction unidirectionelle (car les problèmes liés à la traduction ne sont pas forcément bijectifs).

4.3 Combinaison de l'approche "systématique" et de l'approche "empirique"

Cette approche n'est généralement pas possible à mettre en place car, si elle apporte une bien plus grande fiabilité (il y a de grandes chances qu'aucun cas "spécifique" et qu'aucune exception ne soit oubliés), apporte également une bien plus grande complexité et un temps demise en oeuvre beaucoup plus grand car il faut effectuer chacune des deux méthodes puis mettre en relation les résultats obtenus pour obtenir un seul ensemble de règles de traduction.

La combinaison de modules en vue d'obtenir une solution cohérente est d'ailleurs, à elle seule, un sujet complexe nécessitant des études poussées [14] car l'efficacité de l'analyse lexicale dépend directement dont les différentes parties de l'analyseur fonctionnent en corrélation et non en opposition.

Chapitre 5

Les outils et technologies

applicables

Les deux approches décrites précédemment (voir Chapitre 4, page 12) détaillent la démarche qui peut être suivie afin d'obtenir un traducteur. Leur mise en oeuvre nécessite des outils dont une partie va être présentée ci-dessous.

5.1 Utilisation d'une interlangue

Les interlangues (ou langages pivots) sont fréquemment utilisées dans le domaine de la traduction automatique. Une interlangue est une langue artificielle qui sert d'intermédaire entre une langue source et une langue cible.

FIG. 5.1 - Méthode de traduction avec une interlangue

Les outils et technologies applicables

 
 

Les interlangues sont généralement utilisées lorsqu'on doit effectuer des traductions entre plusieurs langages.

Un grand nombre de travaux de recherche en linguistique se sont penchés sur les interlangues. On peut notamment parler du projet Traduction de Langues Distribuée (en anglais : Distributed Language Translation, en espéranto Distribuita Lingvo-Tradukado, en abrégé DLT) qui était un projet de traduction de langues de la Commission européenne1. Le projet avait pour but la traduction automatique depuis et vers 12 langues européennes par le biais d'une interlangue interne basée sur l'Espéranto, qu'on nommait ILO (Internacia Lingvo = Langue Internationale).

En informatique, on utilise ce type d'outil dans la mise en place d'EAI. Dans ce cas, l'EAI se sert d'une interlangue (par exemple le XML) et se sert de traducteurs, appelés connecteurs, pour faire communiquer des systèmes hétérogènes entre eux.

Les interlangues sont habituellement utiisées avec une approche de type systématique car elles sont destinées à obtenir des traducteurs généralistes et assez exhaustifs entre plusieurs langages. Elles n'ont d'ailleurs d'intérêt que si on est en présence de plus de trois langages.

FIG. 5.2 - Méthode de traduction sans interlangue

1Dans la sphère de la traduction technique (ex: entre le français et l'anglais, avec une traduction intermédiaire en ILO -Internacia LingvO = Langue Internationale- et retour) on atteignait 95% de précision sur les phrases traduites. Dans la sphère de textes très généraux (ex: comptes-rendus d'assemblées de l'UNESCO) la précision de la traduction se situait entre 50 et 60 %.

Les outils et technologies applicables

 
 

En effet, lorsqu'on veut effectuer une traduction entre deux langages, le passage par une interlangue nécessite plus de travail (deux traducteurs au lieu d'un), mais, si on dépasse trois langages, on peut voir que l'utilisation d'une interlangue (voir Figure 5.1, page 16) permet de ne créer qu'un seul connecteur lors de l'ajout d'un quatrième langage alors qu'il faut trois connecteurs lorsqu'on n'utilise pas d'interlangue (voir Figure 5.2, page 17).

Cette solution, est donc très coûteuse pour un petit nombre de langages alors qu'elle est beaucoup plus économique lorsqu'on dépasse le seuil de trois langues.

C'est pourquoi, dans le cadre d'une migration entre "seulement" deux systèmes, il est assez improbable que cette méthode soit la plus intéressante à utiliser (à moins de déjà disposer de traducteurs fiables vers une même interlangue).

5.2 Traduction "manuelle"

La traduction manuelle, comme son nom l'indique, ne fait appel à aucun mécanisme d'automatisation.

Dans ce cas, la traduction de tout le document est effectuée par un traducteur humain. Bien que cela ne soit généralement pas formalisé, les traducteurs utilisent habituellement une approche de type empirique car, lorsqu'ils rencontrent un problème et qu'ils le résolvent une première fois, ils sauront comment le résoudre s'ils s'y trouvent confrontés une seconde fois.

5.3 Traduction automatique "monotraducteur"

Aussi bien dans le cadre d'une approche systématique que par l'application d'une approche empirique, on obtient un ensemble de règles de traduction qui permettent ensuite d'effectuer automatiquement la traduction de documents.

La traduction est réalisée par un logiciel chargé d'appliquer les règles de traduction de façon systématique.

Mais, avant d'utiiser un logiciel de traduction automatique, il faut avoir préalablement définit ces règles et cela est complexe et nécessite un fort investissement.

FIG. 5.3 - Méthode de traduction automatique

Les outils et technologies applicables

 
 

5.4 Utilisation d'outils de "reverse-engenering"

Généralement basés sur une approche systématique, ce sont des outils dont le fonctionnement est proche de celui de l'interlangue. Toutefois, le langage utiisé est sou-vent proche de l'UML et ce sont des outils intégrés et fournis "tels-quels".

Ces outils vendus ou mis à disposition par des entreprises d'édition de logiciels, ce sont des solutions de type "clefs en main". Cependant, comme l'import ou l'export depuis ou vers un SGBD se fait par un traducteur spécifique, il faut que les connecteurs existent (malheureusement si on utilise un ou des systèmes peu courants, il est assez difficile de trouver un atelier de reverse-engenering proposant les traducteurs nécessaires).

Chapitre 6

Les méthodes de gestion de projet

informatique

Comme tout autre projet informatique, et même généralement comme tout projet, la migration de bases de données doit être programmée, suivie, piotée et analysée. Ces fonctions, remplies par le chef de projet, peuvent s'appuyer sur différentes méthodologies couramment employées.

La méthode employée ne doit pas être choisie à la légère car la réussite ou non du projet en dépendra fortement.

6.1 Méthode non formelle

Dans le cadre de projets avec peu de ressources (1 ou deux personnes au maximum), l'affectation de temps à la gestion de projet peut entraîner des surcoûts importants. Comme le nombre de personnel est très faible, leur coordination et leur affectation ne pose pas de problème et l'ordonnancement des tâches est très simple (on ne peut faire qu'une seule chose à la fois).

De plus, des comptes-rendus réguliers au client lors de réunions d'avancement et à la hiérarchie lors de réunions de service ou de façon informelle, permettent de pioter de façon assez fiable le projet et de réagir rapidement en cas de dérive.

6.2 XP: eXtreme Programing

XP propose un ensemble de "Bests Practices" de développement (travail en équipes, transfert de compétences, . . .), c'est une méthode itérative, simple à mettre en oeuvre destinée à des équipes de petite taille composées de membres autonomes, c'est une méthode très réactive mais qui demande une forte implication du client.

- Gestion des livraisons : L'équipe fournit des livraisons fréquentes au client. Le contenu de ces livraisons est décidé par le client lui-même, à partir des estimations fournies par les développeurs.

- Gestion des itérations : Les livraisons sont réalisées en une suite d'itérations de 2 semaines environ, au sein desquelles le projet est géré à un niveau de détail plus fin.

Les méthodes de gestion de projet informatique

 
 

- Suivi du projet : L'avancement du projet est mesuré de manière concrète par une batterie de tests de recette automatiques. Le rythme de progression est réévalué à chaque itération, et le plan de développement lui-même est revu fréquemment pour tirer parti de l'expérience acquise au cours du projet.

- Qualité du design et du code : Des pratiques strictes permettent de garder une vitesse de développement élevée tout au long du projet, tout en gardant une ouverture maximale au changement. La conception reste toujours le plus simple possible, le code est nettoyé en permanence et des tests unitaires de non-régression sont écrits pour chaque classe.

- Travail en équipe : L'équipe travaille réellement en équipe. Le code est partagé par tous, les développeurs travaillent systématiquement en binômes, et l'intégration est quasiment continue."

6.3 RUP: Rational Unified Process

RUP est à la fois une méthodologie et un outil prêt à l'emploi (documents types partagés dans un référentiel Web).

C'est est un processus de développement logiciel itératif et incrémental, centré sur l'architecture, conduit par les cas d'utiisation et pioté par les risques. Il est destiné aux projets nécessitant un grand nombre de ressources humaines. Il n'est d'ailleurs utilisable que si une personne est affectée à temps complet (ou presque) à la gestion de projet car il y a beaucoup d'étapes à suivre et de documents à réaliser.

De plus, il faut commencer par adapter RUP à son projet, ce qui le rend intéressant à utiliser uniquement dans le cadre d'une équipe qui travaille toujours sur le même type de projet et toujours avec RUP.

RUP présente un certain nombre de caractéristiques, il est:

- Itératif et incrémental : le projet est découpé en itérations de courte durée (environ 1 mois) qui permettent de mieux suivre l'avancement global. A la fin de chaque itération, une partie exécutable du système final est produite, de façon incrémentale.

- Directif: Spécifie le dialogue entre les différents intervenants du projet (les livrables, les plannings, les prototypes, ...) et propose des modèles de documents, et des canevas pour des projets types.

- Centré sur l'architecture : tout système complexe doit être décomposé en parties modulaires afin de garantir une maintenance et une évolution faciitées. Cette architecture (fonctionnelle, logique, matérielle, etc.) doit être modélisée en UML et pas seulement documentée en texte.

- Pioté par les risques : les risques majeurs du projet doivent être identifiés au plus tôt mais surtout levés le plus rapidement possible. Les mesures à prendre dans ce cadre déterminent l'ordre des itérations.

- Conduit par les cas d'utilisation : le projet est mené en tenant compte des besoins et des exigences des utiisateurs. Les cas d'utilisation du futur système sont identifiés, décrits avec précision et priorisés.

Les méthodes de gestion de projet informatique

 
 

6.4 DSDN (RAD)

L'organisation d'un projet par une méthode de type RAD s'appuie sur un principe fondamental : la séparation des rôles et des responsabilités entre maîtrise d'ouvrage (MOA) et maîtrise d'oeuvre (MOE).

La méthode RAD structure le cycle de vie du projet en 5 phases:

- L'initialisation définit l'organisation, le périmètre et le plan de communication.

- Le Cadrage définit un espace d'objectifs, de solutions et de moyens.

- Le Design modélise la solution et valide sa cohérence systémique.

- La Construction réalise en prototypage actif (validation permanente).

- La Finalisation est un contrôle final de qualité en site piote.

La méthode DSDM propose une approche globale du développement de logiciel dans un environnement de développement rapide (RAD). DSDM fournit un canevas couvrant l'ensemble du cycle de développement et un grand nombre de principes à suivre afin d'assurer le succès du projet.

Chapitre 7

Combinaison des approches, des

technologies et des méthodes

Lors de la mise en place du projet, il est essentiel de choisir les différents éléments (approche employée, technologies utilisées, méthodologie suivie et taille de l'équipe) de façon cohérente.

Combinaison des approches, des technologies et des méthodes

 
 

FIG. 7.2 - Exemple de mauvaise corrélation entre les approches, les technologies, les méthodes et la taille de l'équipe

Par exemple, un projet suivant une approche systématique, pour réaliser un outil basé sur une interlangue, avec une gestion de projet non formelle et une grosse équipe a de grande chance de foncer droit dans le mur.

FIG. 7.3 - Exemple de bonne corrélation entre les approches, les technologies, les méthodes et la taille de l'équipe

À l'opposé, un projet de traduction automatique monotraducteur, employant une approche empirique, et gérant une équipe projet grâce à une méthode non formelle démontre une vision cohérente du projet. La cohérence de cet ensemble de choix ne fera donc pas obstacle au bon déroulement du projet.

Lors du lancement du projet, on veillera donc tout particulièrement à ce que les différents éléments (même si chacun pris séparément semble être le meilleur choix) puissent être utilisés ensembles.

Chapitre 8

Proposition d'une démarche et de

"bonnes pratiques"

Lors d'un projet de migration de base de données comme dans tout autre projet informatique, il n'existe bien évidemment pas de "solution miracle" pour réussir à coup sûr mais il est possible de suivre une démarche et des bonnes pratiques (appelée aussi best practices) qui permettront d'augmenter les chances de réussite.

Cette démarche peut être découpée en trois grandes étapes. Après chacune d'elle, il est nécessaire de déterminer si le projet de migration est réaliste et réalisable afin de ne pas effectuer d'investissements inutiles.

8.1 Determiner la nature du problème

Dans un premier temps, l'étude doit porter sur la nature du travail à effectuer:

- Quelles sont les informations qui doivent être migrées (structure, données, traitements ou les trois)?

Une migration partielle est bien entendu plus simple à réaliser.

- De quelles "familles" sont la base de données origine et destination?

Si les bases de données sont de la même "famille" (par exemple Sybase et MS-SQL ou deux versions d'une même base de données), une migration nécessitera beaucoup moins de travail que pour des bases de données d'origine totalement différente.

8.2 Verifier s'il existe des solutions

Après avoir déterminé de quel type était le problème à traiter, la seconde étape consiste à rechercher si des solutions existantes peuvent être utilisées. Pour cela, il faut évidemment déterminer si les technologies utilisées sont applicables mais aussi si leur coût est acceptable.

Les outils de migration les plus courants sont basés sur le principe de reverse-engenering. Ils sont peu nombreux et particulièrement liés à une seule famille de base de données (le nombre de connecteurs vers d'autres bases de données est généralement limité).

On peut également trouver des solutions entièrement externalisées : une société de

Proposition d'une démarche et de "bonnes pratiques"

 

services se charge d'effectuer toute la migration grâce à des outils qu'elle développe elle-même.

8.3 Effectuer la Migration

8.3.1 Si une solution existante a été trouvée

Si une solution existante est utiisable (l'outil a été conçu pour les systèmes que l'on utilise) et que son prix est acceptable, la solution doit être utiisée en n'oubliant pas de continuer à pioter le projet de migration et à éviter les dérives.

Une fois la migration réalisée, il ne reste qu'à effectuer un ensemble de tests afin de vérifier que tout s'est bien passé et affiner le paramètrage de la base de données afin d'en améliorer les performances.

8.3.2 Si aucune solution existante ne convient

Si aucune solution existante n'est adaptée à notre problème et que l'on souhaite poursuivre le projet, il convient de déterminer quelle approche et quelle solution doivent être adoptées (en fonction de la nature de la migration et du type de traducteur que l'on souhaite obtenir).

Troisième partie

Application au contexte du stage

Chapitre 9

Les choix managériaux et

technologiques

9.1 La gestion de projet

Ce stage était un projet informatique "comme un autre". On peut donc supposer que l'utilisation d'une méthodologie de gestion de projet informatique aurait été logique. Cependant, l'utilisation d'une méthode "stricte" était en fait peu adaptée a ce cas pour différents motifs:

- Le retour d'expérience sur ce genre de projet est assez rare (aussi bien au niveau personnel que dans les documentations disponibles), il n'y a donc pas d'indications sur le fonctionnement d'anciens projets du même type.

- Dans le cadre de projets menés par une seule personne (comme c'était le cas ici), la mise en place de mécanismes complets de management de projet peut s'avérer complexe et nécessiter plus de temps quelle n'en fait gagner.

Nous avons donc adopté une gestion de projet minimale, essentiellement basée sur les comptes-rendus hebdomadaires lors des réunions de service.

- Enfin, comme l'approche employée est de type empirique, son évolution est par essence difcile a prévoir (car on traite les problèmes au fur et a mesure de leur découverte). Une prévision trop précise et un planning décidé trop tot seraient remis en cause a chaque nouveau problème.

9.2 La démarche suivie

Ce projet a été découpé en quatres grandes "étapes" qui seront développées dans les chapitres suivants:

- Recherche et évaluation des solutions existantes (voir Section 10.2, page 33);

- Choix d'une solution (voir Section 9.3, page 29);

- Mise en cuvre de la solution (voir Section 10.3, page 33);

- Evaluation du travail a venir (voir Section 10.4, page 34).

Les choix managériaux et technologiques

 

9.3 Les technologies utilisées

9.3.1 PostgreSQL

Présentation

PostgreSQL1 est un Système de Gestion de Base de Données Relationnelle (SGBDR) open source2.

Il a été initialement développé à l'Université de Berkeley sous le nom de Ingres (1977- 1985). Il a été amélioré régulièrement au cours de ses premières années par les sociétés Rational Technologies et Ingres Corp.. Ces sociétés ont été rachetées par la société nommée maintenant Informix. Le projet a ensuite continué indépendamment à Berkeley sous le nom de Postgres (1986-1994). Après l'apparition des premières normes du langage SQL, le langage de requête de Postgres a été remplacé par le langage SQL. En 1995, le projet a ensuite été repris par des développeurs indépendants de l'Université de Berkeley et renommé Postgres95. Là, le projet s'est étoffé et transformé à partir de 1997 en PostgreSQL lorsque l'ensemble des fonctionnalités SQL a été intégré au serveur.

Avantages

PostgreSQL est un logiciel libre, il possède donc tous les avantages qui en découlent, entre autre:

- La gratuité;

- Le nombre de déploiements ilimité;

- La communauté de développement active et réactive;

- Les possibiité d'extension à volonté (le code source étant disponible gratuitement, il est possible de modifier ou d'étendre les fonctionnalités de PostgreSQL de façon autonome).

- . . .

PostgreSQL respecte la quasi totalité de la norme SQL et propose la plupart des fonctionnalités présentes dans les autres "grands" SGBD (gestion des transactions, procédures stockées, gestion des droits d'accès aux données, . . .).

Dans le monde du logiciel libre, (mis à part SAPDB qui est actuellement en pleine mutation due à son rapprochement de MySQL) PostgreSQL est certainement actuellement le seul SGBD permettant de gérer des bases de données à gros volume et avec un grand nombre de connexions notamment grâce à son haut degré de scalabilité.

Les concurrents libres de PostgreSQL ne sont pas aussi aboutis, tant pour la tenue en charge que pour le nombre de fonctionnalités disponibles, c'est pourquoi le choix en terme de bases de données assez limité.

Inconvénients

PosgreSQL n'est pas disponible nativement pour Windows, il utilise une couche d'émulation (CygWin). Seules les prochaines versions à partir de la numéro 8 (à venir) seront développées pour Windows.

1Version utilisée : 7.3.4-RH

2Sous licence BSD (voir Annexe E, page 52)

Les choix managériaux et technologiques

 
 

PostgreSQL, s'il est connu pour sa robustesse, a également la réputation d'être relativement lent (même si chaque nouvelle version amène des progrès notables). Cela est dû au grand nombre de mécanismes de préservation et de protection des données qui sont activés par défaut mais qui peuvent pour la plupart être désactivés après une étude détaillée des besoins.

9.3.2 RedHat Database Présentation

RedHat Database3 est une version de PostgreSQL 7.3.4. optimisée pour fonctionner avec un serveur Red Hat Linux4 et qui bénéficie du back-portage des améliorations apparues avec la version 7.4.

Avantages

Rhdb5 est librement téléchargeable sur le serveur ftp de RedHat. Il est également possible d'acquérir un contrat de service (3267€) chez RedHat contenant:

- Red Hat Database (intégré, testé et optimisé Red Hat Linux)

- L'installeur Red Hat

- La documentation complète de RhDb et des outils graphiques

- Le support par le web et téléphonique

- Une inscription mensuelle fournissant des mises à jour régulières

La CCI possède actuellement un serveur sous RedHat et un contrat de type "Red Hat Enterprise Linux ES". En cas de problèmes non spécifiques à la base de données, il est donc possible de profiter du contrat de support souscrit.

Inconvénients

Red Hat n'a pas une politique très claire en ce qui concerne le support de ce produit. Certes, une équipe Red Hat travaille en permanence sur ce projet et une offre de services est proposée mais le site de vente de RedHat reste peu clair sur ses avantages : le contenu de l'offre n'est pas très détaillé et la version actuellement proposée est la 2.16 alors la version 3 existe depuis plusieurs mois.

9.3.3 Perl Présentation

Crée en 1986 par Larry Wall, Perl (Practical Extraction and Report Language) est un langage de programmation interprété (avec une phase interne de pré-compilation). Sa syntaxe dérive des scripts shell, et d'autres langages comme C, awk, sed.

3Aussi appelé : PostgreSQL - Red Hat Edition ou RhDb 4version 9 ou Fedora Core 1

5Version utilisée : 3.0 (sortie le 16 janvier 2004) 6optimisé Red Hat Linux 7.1 et PostgreSQL 7.1.2

Les choix managériaux et technologiques

 
 

Avantages

Pour tous ceux qui connaissent ces langages, notamment pour ceux qui viennent du monde Unix, Perl est relativement facile à apprendre.

Perl a été conçu selon un concept de langage naturel : on écrit du Perl comme on pense. Cette caractéristique de Perl se retrouve dans son slogan "there is more than one way to do it".

La puissance de Perl pour la manipulation de chaînes de caractères et de fichiers lui donne des atouts considérables pour écrire des applications nécessitant des expressions régulières, par exemple le traitement de texte avec la création de pages à la volée. L'allocation de mémoire est prise en charge par l'interpréteur, il n'y a donc pas de gestion de mémoire, pas de limite de buffer.

Perl existe depuis plus de 15 ans, beaucoup de bibliothèques et de modules d'extensions sont donc déjà disponibles.

L'application première de Perl est l'administration Unix (manipulation de textes, de fichiers et de processus), une personne ayant ce type de compétences aura donc certainement des connaissances du langage Perl et pourra ainsi reprendre, maintenir et modifier le code source si cela est nécessaire.

Inconvénients

Perl possède certains inconvénients notamment des soucis de sécurité intrinsèques à son statut de langage interprété. Toutefois, il existe un mode "secure" qui vérifie pour chaque variable si elle est sécurisée ou non. Comme ce mode ralentit l'application, il est réservé au débuggage.

Perl n'est pas efficace pour le calcul scientifique.

C'est un langage très permissif qui laisse les programmeurs libres de coder selon leurs méthodes. Cependant, la diversité des méthodes de codage qui est un gros avantage pour la simplicité d'apprentissage du Perl est aussi un des principaux inconvénients du langage : il est souvent difficile de reprendre le code d'un autre développeur, surtout s'il n'est pas correctement documenté.

Chapitre 10

Le travail réalisé

10.1 Evaluation de l'état de la base de données existante

10.1.1 Découverte du fonctionnement et des spécificités

Avant de pouvoir commencer tout autre travail, il faut commencer par se familiariser avec l'environnement de travail. Ici, les principales applications à connaître sont:

- BEE : l'application de CRM;

- Sybase et les outils qui permettent de s'y connecter (DbDK et DBArtisan);

- Les bases de données présentes sur le serveur Sybase.

10.1.2 Quelques chiffres

Pour réaliser la migration, il a tout d'abord fallu étudier les bases un peu plus précisément afin de déterminer dans quelles catégories les classer (base principalement axée sur les données, sur les structures ou sur les traitements) et quel type d'outil utiliser.

 

cci

cfe

consulaire

personnel

TOTAL

Groups

1

1

1

1

4

Indexes

528

354

232

23

1137

Segments

5

3

5

3

16

Tables

284

141

118

51

594

Triggers

280

0

0

0

280

User messages

19

0

19

49

87

Users

254

34

243

0

531

Views

130

58

83

1

272

Procedures

2431

1134

794

0

4359

Nb de lignes de code1

104296

34798

37396

0

176490

 

TAB. 10.1 - Dénombrement du contenu des bases de données

De plus, il faut savoir que les plus grosses tables approchent les 390 000 enregistrements et que le volume actuel des bases de données est d'environ 18 Go.

Grâce à ces information, il est facile de s'apercevoir que la base cci, en plus d'être la plus importante au niveau utilisation est également celle contenant le plus d'éléments à migrer.

1nombre de lignes de code de la totalité des procédures (commentaires compris)

Le travail réalisé

 
 
 
 

Durant le projet, c'est donc sur cette base que doit se focaliser la majorité du travail.

10.2 Étude des différentes techniques de migration

Toute étude doit commencer par l'inventaire des solutions existantes de manière à ne pas se lancer dans un développement coûteux si un produit répond déjà à nos attentes.

La première piste explorée a été celle du site internet de PostgreSQL qui répertorie une large gamme de moyens pour migrer vers ce système.

On peut trouver dans cette catégorie nommée "Converting from other Databases to PostgreSQL", des outils et des conseils pour transformer des bases au format Dbase, FileMaker Pro, Interbase, MS-Access, MySQL et Oracle.

En ce qui concerne Sybase, on peut utiiser les conseils donnés pour MS-SQL mais ceux-ci sont très pauvres et ne donnent que quelques idées pour réaliser une migration manuelle.

La seconde possibilité pour trouver des outils de migration était de rechercher des outils ou des solutions "clefs en main" pour la migration de Sybase vers PostgreSQL. Force est de constater que même s'il existe des outils traitant chacune des bases de données, il n'en existe pas qui posséde des connecteurs pour les deux systèmes.

Aucune solution n'existant pour cette migration, la seule méthode possible est de réaliser soi-même un outil qui effectuera cette transformation.

10.3 Écriture d'un traducteur en Perl

10.3.1 L'approche utilisée

En vu de structurer la démarche du projet, la solution la plus simple était de le découper en plusieurs phases.

Les choix

Nous avons tout d'abord du déterminer l'approche, la technologie, la méthodologie et l'équipe employés.

Ces choix furent assez rapidement faits:

- Aucun salarié de la CCI n'étant disponible pour ce projet, l'équipe ne pouvait être composée que d'une seule personne.

- Après avoir effectué des recherches sur les solutions existantes, il est apparu qu'aucun outil ne permettait de réaliser une telle migration (voir § 10.2, page 33) et que très peu d'information était disponible pour utiliser une approche systématique. C'est donc l'utilisation d'une méthode empirique qui s'est imposée.

- La technologie utilisée devait permettre de reproduire cette migration même si quelques modifications apparaissaient dans le base (ce qui exclut une traduction manuelle) mais devait être compatible avec les choix déjà faits et le délai imparti. La technique d'un traducteur automatique a donc été retenue.

-

Le travail réalisé

 
 
 
 

Enfin, ayant très peu de ressources à gérer et beaucoup d'autonomie quant au fonctionnement du traducteur, une méthodologie de gestion de projet "lourde" n'aurait apporté aucun bénéfice par rapport à l'utiisation d'une méthode non formelle.

L'organisation

Le choix d'une approche de type empirique ne dispense pas de structurer la démarche du projet. C'est pourquoi chaque type d'élément de la base (tables, index, données,...) a été traité indépendamment.

En outre, le fonctionnement même des bases de données a imposé un certain ordre de traitement. Il faut réaliser tout d'abord la transformation de la structure puis des données et enfin des traitements.

Les iterations

Pour chacun des types d'élément, une approche empirique peut se traduire par une suite d'itérations comprenant:

- La tentative d'utiliser le Script SQL "tel-quel";

- La recherche des problèmes empêchant le bon fonctionnement;

- L'écriture en Perl d'un programme permettant de régler le problème.

Une fois toutes les itérations effectuées pour tous les types d'éléments, on dispose d'un programme Perl permettant de résoudre tous les problèmes et d'effectuer la migration.

10.3.2 Fonctionnement de l'application

L'un des ojectifs de ce projet était de réaliser un outil de migration de la base de données qui soit facilement réutilisable. Il fallait donc que son uilisation soit simple et que son fonctionnement soit aisément compréhensible et modifiable par une autre équipe.

Le traducteur appelé sybase2postrgesql propose donc plusieurs modes de fonctionnement (voir Annexe J, page 60):

- Utilisation avec passage de paramètres en ligne de commande ou par un fichier de configuration.

- Possibilité de traduire chaque fichier individuellement ou d'automatiser l'ensemble du fonctionnement.

Par ailleurs, le programme a été documenté (voir Annexe I, page 58) et le code commenté afin de rendre leur réutilisation plus simple.

10.4 Estimation du travail restant a effectuer

La migration qui semblait relativement simple à ses débuts s'est révélée beaucoup plus complexe que prévue et la charge de travail sous-estimée. En cours de projet, les délais ont donc du être réévalués et il s'est avéré que la migration des procédures ne pouvait être réalisée dans le temps restant.

Suite à ce constat, nous avons déterminé qu'il était préférable de réaliser un ensemble de mesures afin d'estimer le temps nécessaire à l'achèvement du projet.

Le travail réalisé

 
 

10.4.1 Méthode d'estimation

Comme l'approche que nous avons employé est de type empirique, il est difficile d'avoir, avant d'avoir effectuer le traducteur, des indicateurs fiables concernant les points bloquants de la migration. Cependant, certains problèmes sont proches de ceux rencontrés lors de la migration de la structure de la base (et tout particulièrement des vues) et d'autres peuvent être assez facilement repérés (nombre de lignes de code, nombre de structures de boucles et de choix, . . .).

Ainsi, il n'est pas réellement possible de mesurer précisément la complexité de la migration mais on peut en faire une estimation.

Le travail à effectué ici s'apparente à une mesure de complexité informatique [35] hormis que le but n'est pas d'évaluer la performance d'un algorithme mais la difficulté à le comprendre et le traduire et que les indicateurs disponibles sont un peu plus "approximatifs".

Les outils de mesure de complexité sont assez rares et ne permettent généralement de réaliser des tests que pour des langages courants (C, java, .. .). Il était donc très improbable de trouver un outil répondant à nos attentes (fonctionnant pour du Transac SQL et réalisant des mesures permettant d'évaluer la complexité de "compréhension").

Il a donc fallu mettre au point une méthode assez proche d'une mesure de complexité. Cette dernière peut être décomposée en trois grandes phases : la planification, la réalisation et l'analyse. Et même si la méthode est généralement présentée sous forme d'étapes, en réalité, celles-ci ne sont pas forcément effectuées séquentiellement et il y a habituellement plusieurs itérations avant d'obtenir des résultats probants.

Nous allons donc suivre les points suivants:

1. Planification (déterminer quelles mesures vont être réalisées):

- Sélectionner les variables qui vont être observées.

- Indiquer la signification des plages de valeurs dans lesquelles vont se trouver les variables.

- Spécifier le modèle qui va être observé.

- Définir un ensemble de données d'entraînement et de test pour évaluer le modèle.

2. Réalisation (effectuer les mesures):

- Tester le modèle sur les données de test et les comparer aux résultats attendus.

- Obtenir les valeurs des différents indicateurs sur des données réelles et complètes.

- Regrouper et présenter ces valeurs de manière à ce qu'elles soient exploitables.

3. Analyse (traitement et interprétation des résultats):

- Traitement des données afin de les rendre compréhensibles.

- Recoupement des informations afin de faire ressortir les éléments importants.

- Interprétation et analyse des résultats obtenus.

10.4.2 Réalisation des mesures

Afin d'effectuer les mesures permettant d'évaluer le travail restant, la première étape a été de définir un ensemble d'indicateurs:

- nombre de lignes de codes par procédure

-

Le travail réalisé

 
 
 

nombre d'instructions SQL par procédure

- nombre de conditions et de boucles par procédure

Il a ensuite fallu développer une application en Perl pour effectuer les mesures qui correspondent à ces indicateurs.

En observant les résultats, il a été possible d'ajouter quelques indicateurs pour affiner les mesures:

- nombre de curseurs par procédures

- nombre d'exécutions d'autres procédures par procédure

De ces résultats, il a également été possible de déterminer des catégories dans lesquelles se trouvent les procédures.

Moins de 10 lignes

simple

Une seule instruction SQL, pas de curseur, pas de condition, pas de boucle, pas d'instruction "exec"

OU que des instructions "exec" (et rien d'autre)

 

Un seul type d'instruction (par exemple que des updates), pas de curseur, pas de condition, pas de boucle, pas d'instruction "exec"

 

Celles qui n'entrent pas dans les catégories précédentes

Entre 10 et 40 lignes

Mêmes catégories que moins de 10 lignes

Entre 40 et 150 lignes

simples

Pas de condition, pas de boucle et pas de curseur

 

Celles qui n'entrent pas dans la catégorie précédente

Plus de 150 lignes

Transformation manuelle (estimation du temps en fonction du nombre de lignes : 150 lignes par jour/homme)

 

TAB. 10.2 - Catégories de procédures

Enfin, il a été possible de réaliser les mesures définitives (voir Annexe K, page 66) qui seront exploitables pour donner une évaluation du temps de travail nécessaire à l'achèvement de la migration.

10.4.3 Résultats de l'estimation

Estimation grossière pour une traduction manuelle

Afin d'évaluer la charge de travail que représenterait la traduction manuelle des procédures, il convient tout d'abord de mesurer le volume d'information à traiter. Nous avons donc mesuré le nombre de lignes de code total que représentent les procédures (environ 150 000 hors commentaires).

Une évaluation approximative permet d'atteindre un volume de travail d'environ 1000 jours/homme (en comptant environ 150 lignes écrites par jour/homme).

Le travail réalisé

 
 
 
 

La conversion manuelle des procédures n'est donc que difficilement envisageable. C'est pourquoi, il serait nécessaire de disposer d'un outil permettant la migration automatique de la plus grande partie des procédures.

Estimation affinée

À l'aide de l'ensemble des indicateurs, il est possible de répartir les procédures en différents niveaux de complexité et de calculer le nombre de jours de développement nécessaires pour terminer l'application.

 

Nb. de procs.

% du
volume

Nombre de jours par niveau de complexité

Nb. total de jours

% du
temps total

 

Moyen

Complexe

 

1379

31,61

10

12

15

37

8,54

De 10 à 40 lignes

2103

48,2

12

15

20

47

10,85

De 40 à 150 lignes

709

16,25

15

 

25

40

9,23

Plus de 150 lignes

172

3,94

Nb. total de lignes : 46376

309,17

71,37

 

TAB. 10.3 - Estimation du temps de développement par catégorie de procédures

On peut constater que, comme dans la plupart des projets, 80% du volume des procédures peuvent être migrées pour 20% du temps de travail.

Pour les procédures les plus difficiles à migrer (celles qui prennent 80% du temps de développement), il faut s'assurer de la pertinence et de l'utiité de chacune d'elle afin de ne pas perdre de temps inutilement.

Chapitre 11

Bilan du stage

11.1 Evaluation du travail réalisé

L'objectif principal : évaluer si une migration de Sybase vers PostgreSQL était possible, a été atteint.

En revanche, la réponse qui y a été apportée n'est pas exactement celle à laquelle on pouvait s'attendre : la migration paraissait simple mais elle s'est avérée beaucoup plus complexe que prévue.

11.2 Problèmes rencontrés

L'ensemble du stage s'est bien déroulé. Mais, comme dans tout projet, nous avons dû faire face à des problèmes : ceux-ci ont été principalement de nature technique, mais également organisationnels et au niveau des connaissances acquises.

11.2.1 Les problèmes techniques

Les fonctions Sybase inexistantes sous PostgreSQL

Comme toutes les bases de données, Sybase et PostgreSQL possédent des fonctions internes conçues afin de faciliter le travail des développeurs. Néanmoins, leur nom et parfois même leur utilisation différe d'un sytème à l'autre.

Lors de la migration des vues et des procédures, il arrive que ce type de fonctions necessite une intervention pour déterminer la solution à adopter.

Lorsque des fonctions de Sybase n'existent pas sous PostgreSQL, la solution la plus simple serait de créer des fonctions en pl/sql portant le même nom que la fonction Sybase et donnant le même résultat.

Mais cela crée une surcouche et a un impact néfaste sur les performances (une fonction externe utiisant une ou plusieurs fonctions internes sera touj ours moins rapide qu'une seule fonction interne).

Lors de l'écriture du programme de migration, nous avons donc utilisé autant que possible, des fonctions internes de PostgreSQL, même si cela nécessitait parfois de remanier les scripts SQL.

Cependant, dans quelques rares cas, aucune fonction existante ne pouvant être utiisée, il a fallu en créer des nouvelles (par exemple voir Source J.1, page 62).

Bilan du stage

 
 
 
 

Les differences d'encodage

Le passage successif par différents systèmes met en lumière les différences de normes d'encodage et d'affichage (UTF8, ASCII, Latin1,...):

- passage de Sybase à un fichier texte en utilisant un logiciel tiers (soit bcp soit DbDk) sous Windows,

- transformation par un script Perl sous Linux,

- intégration à PostgreSQL,

- affichage sous les outils RedHat (qui préfère utiliser l'UTF8).

Ceci nécessite de modifier l'encodage par défaut ou de forcer celui qui sert à l'affichage, voire même de modifier l'encodage d'un fichier dans un éditeur de texte (voir Annexe M, page 71) sous peine d'obtenir des retours à la ligne fantaisistes et de perdre tous les caractères accentués qui se trouvent dans les documents.

Les problèmes de casse

Windows et Sybase ne gèrent pas les différences de casse ("E" sera considéré de la même façon que "e") tandis que Linux et PostgreSQL font cette différenciation. Pour éviter des problèmes d'appel (par exemple lors de l'utiisation d'une table ou d'une procédure) il faut uniformiser les noms.

L'ancienneté de la base de données Sybase

La création de base de donnée sous Sybase a commencé en 1994. De nombreuses personnes avec des connaissances et des techniques de programmation différentes ont donc participé à sa gestion et à l'écriture de nouvelles fonctions. De plus, les technologies ont évolué : augmentation des capacités du moteur debase de données, évolution de la syntaxe utilisée pour la création de vues et des procédures. Lors de l'écriture des scripts Perl, il a donc fallu tenir compte des différents types d'écriture afin que toutes les possibilités soient traitées.

11.2.2 Les problèmes lies a l'organisation

Peu de problèmes se sont posés en ce qui concerne l'organisation propre mais les objectifs proposés au départ ont dû être modifiés. La plannification a été constament réévaluée afin de tenir compte des problèmes rencontrés et de l'approche empirique.

11.2.3 Les problèmes lies au manque de connaissance

Le manque d'informations disponibles, s'est révélé être un problème important: très peu de documentation est disponible au sujet de Sybase (et la plupart de sont prévues pour des versions plus récentes de Sybase).

Les informations concernant les migrations de base de données (et tout particulièrement les migrations à partir de Sybase ou de MS-SQL) sont rares et peu complètes: les seules indications fournies n'apportent quasiment aucune aide.

Conclusion

Les objectifs d'un stage professionnel sont multiples : le stagiaire doit tirer une double expérience (immersion dans le monde du travail et acquisition de nouvelles connaissances sur les activités en entreprise) et pouvoir apporter à l'entreprise un bénéfice aussi bien sous forme de nouvelles compétences liées à sa formation qu'à sa personnalité.

Ce stage a été enrichissant, aussi bien au niveau humain que professionel et sera un atout pour mon entrée dans la vie active. Il m'a apporté de nouvelles connaissances tant organisationnelles que techniques et m'a permis d'appronfondir les compétences que j'ai acquises tout au long de ma scolarité.

Le projet a mis en évidence que la méthodologie à mettre en oeuvre pour la migration de bases de données varie beaucoup selon les systèmes en jeu. Elle varie également beaucoup en fonction du "type" de migration désirée : migration "unitaire" ou migration "reproductible".

Les possibiités d'une migration de Sybase vers PostgreSQL était très mal connues et ce stage permet de se rendre compte qu'elle n'est pas simple à pratiquer et permet de mieux les connaître et les maitriser.

J'espère donc que l'ensemble formé par ce rapport et le programme de migration sybase2postgresql pourra constituer une première étape vers une migration définitive en direction de Sybase.

Liste des annexes

A Les CCI en France 42

B La CCI de la Haute-Savoie 47

C Les Chiffres de la CCI de la Haute-Savoie 49

D Organigramme 51

E La licence BSD (Berkeley Software Distribution) 52

F Limitations de PostgreSQL 53

G Phases pour réaliser l'ensemble de la migration 54

H Options pour l'utilisation de sybase2postgresql 56

I Documentation de sybase2postgresql 58

J Problèmes spécifiques a chaque type d'information a migrer 60

K Mesures pour les indicateurs de complexité des procédures 66

L Installation de modules supplémentaires pour Perl 69

M Enregistrement d'un fichier en UTF-8 sous Emacs 71

N Webographie 72

Annexe A

Les CCI en France

A.1 Historique

La première Chambre naît à Marseille en 1599. Le conseil de la vile décide de choisir, parmi ses membres, des députés du commerce "chargés d'accroître la prospérité de la ville". La raison d'être des Chambres de Commerce est exprimée. Henri IV officialise l'institution et en profite pour demander aux députés "des recommandations pour relever l'économie du royaume". La fonction traditionnelle de consultation fait sa première apparition.

Le nombre de Chambres de Commerce s'accroît. Louis XIV crée un conseil du Commerce : le Roi veut recevoir des propositions pour "augmenter le commerce en France et en dehors du royaume". La mission des Chambres de Commerce est tracée.

La Révolution les supprime. Elles sont rétablies sous le consulat par Bonaparte. Vingt deux nouvelles chambres sont créées en France et dans l'Empire. Elles s'implantent partout où l'économie locale a besoin de leur structure et de leurs services. Elles vont se développer pendant tout le XIXè siècle. Le réseau se met en place. En 1898, la loi vient formaliser leur rôle et crée un statut original, celui d'Etablissement Public représentant les intérêts généraux du commerce et de l'industrie auprès des pouvoirs publics. Le cadre juridique est fixé.

Durant le XXè siècle le visage contemporain des Chambres de Commerce se dessine définitivement. On les appelle depuis 1960, Chambre de Commerce et d'Industrie (CCI); en 1964, le législateur achève l'édifice en créant les Chambres Régionales de Commerce et d'Industrie (CRCI), établissements publics, qui fédèrent les CCI locales. Simultanément, la création de l'Assemblée Permanente des Chambres de Commerce et d'Industrie (APCCI) couronne le réseau en fournissant aux instances nationales un interlocuteur privilégié. Depuis 1990, I'APCCI s'est transformée en Assemblée des Chambres Françaises de Commerce et d'Industrie (ACFCI).

A.2 Nature des CCI

Les Chambres de Commerce et d'Industrie sont à la fois des organismes publics et professionnels puisque:

- elles sont régies par une loi et sous tutelle d'un ministère représenté aux Assemblées Générales par le Préfet du Département;

- elles sont composées et dirigées par des chefs d'entreprise élus par leurs pairs, ressortissants de la CCI.

Il convient de ne pas les confondre avec les administrations d'État (les CCI ne sont soumises à aucune autorité dans le cadre de leur mission bien qu'ayant une tutelle mi-