User Tools

Site Tools


wiki:epims4_0:admin:updatedbepims

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:epims4_0:admin:updatedbepims [2009/01/08 14:48]
132.168.73.247
wiki:epims4_0:admin:updatedbepims [2009/06/09 16:45] (current)
132.168.73.9
Line 1: Line 1:
-====== Migration ​péréiphérique ​======+====== Migration ​périphérique ​======
  
 ===== Migration d'une base existante ===== ===== Migration d'une base existante =====
  
 De manière générale, si vous utilisiez déjà Pims dans une version précédente,​ il est souvent nécessaire de migrer les données. Pour cela  De manière générale, si vous utilisiez déjà Pims dans une version précédente,​ il est souvent nécessaire de migrer les données. Pour cela 
-  - Connectez-vous à la BD PimsDB, avec PgAdmin par exemple, en utilisant le user pims_db_user +  - Connectez-vous à la BD PimsDB, avec PgAdmin par exemple, en utilisant le user pims_db_user ​(cf. chapitre [[configuration#​creation_de_l_utilisateur_epims|Config postgresql]]) 
-  - Exécuter un ou plusieurs fichiers de migration (voir ci-dessous) de la même façon que l'on exécute ePimsModel.sql (cf le chapitre [[.:​configuration#​postgresql]] ).+  - Exécuter un ou plusieurs fichiers de migration (voir ci-dessous) de la même façon que l'on exécute ePimsModel.sql (cf chapitre [[.:​configuration#​postgresql]] ).
  
  
-La base de données ePims est versionnés ​depuis ePims 4.0M2, pour connaitre la version de votre BD, exécuter la requête SQL suivante:+La base de données ePims est versionnée ​depuis ePims 4.0M2. Pour connaitre la version de votre BD, exécuter la requête SQL suivante:
   select max(model_version) from admin_infos ​   select max(model_version) from admin_infos ​
 +\\
  
-Selon la version affichée, vous devez exécuter ​toute les  +Selon la version affichée, vous devez exécuter ​tous les scripts Data_Migration ayant un suffixe supérieurPar exemple, si vous avez la version ​4, vous devez exécuter les scripts: 
-    * Passage de la base de données version 2.x à la version ​3.x exécution de Data_migration-1.sql +  * Data_migration-5.sql 
-    Passage de la base de données version 3.x à la version 4.x : exécution de Data_migration-2.sql+  * Data_migration-6.sql (cf chapitre suivant pour les spécificités de la version 6)
  
-A partir ​de la version 4.0M1 d'ePims, la base de données ​à une table 'admin-info' qui permet ​de savoir quel est la version ​du model de la BD. En fonction ​de cette version, il est nécessaire ​d'exécuter les scripts sql des versions ​suppérieurs. Par exemple, ​si la version est '3', il faut exécuter le script Data_migration-4.sql qui permet ​de passer ​à la version 4 de la BD. Si la version est '2'il faut exécuter les scripts ​Data_migration-3.sql PUIS Data_migration-4.sql….+\\ 
 +Pour les versions précédentes ​de la BD dans lesquelles il n'y avait pas de numéro de version enregistré, la correspondance entre les versions ePims et les scripts sont 
 +  * ePims version 2.x => BD version 0, vous devez exécuter les scripts à partir ​de Data_migration-1.sql 
 +  * ePims version 3.3 => BD version 1, vous devez exécuter les scripts ​à partir de Data_migration-2.sql  
 + 
 +==== Pour le passage en version 6 de la BD ==== 
 +Attention, le passage en version ​de la BD, certaines étapes spécifiques doivent être suivies suite à une modification importante autour de la gestion des fichiers attachés aux données. 
 + 
 +//__1. Incohérence attached_file.path:​__//​ 
 + 
 +Exécuter la commande suivante afin de vérifier si il y a des incohérences entre le path et le type des fichiers enregistrés dans la base 
 + 
 +        select * from attached_file 
 +        where attached_file.path not like ('​%/'​ || attached_file.file_type || '/'​) 
 + 
 +Si c'est le casfaire les modifications manuellement afin 
 +  * de lever cette incohérence dans la base 
 +  * de modifier le PIMS_ROOT pour qu'il soit correcte si les données n'ont pas été archivées. 
 + 
 +Une incohérence ​est possible pour les installations ​d'ePims qui ont été réalisé avec des versions ​antérieures à la version 3.0 d'​ePims !! 
 +Par exemple, ​dans le cas où le path fini par 'demande_analyse'​ au lieu de '​analyse_request', exécuter : 
 + 
 +        update attached_file 
 +        set path = regexp_replace(path,​ '/​demande_analyse/',​ '/'​||file_type || '/'​) 
 +        where id in ( 
 +                select attached_file.id from attached_file,​ study_attached_file 
 +                where attached_file.path not like ('​%/'​ || attached_file.file_type || '/'​) 
 +                and study_attached_file.file= attached_file.id 
 +        ) 
 + 
 + 
 +//__2. Ajouter le langage procédural__//​ 
 + 
 +Pour certaines modifications, il est nécessaire d'​ajouter le support du langage plpgsql à la BD pims. Normalement toute installation postgresql supporte ce langage procédural. Cette commande doit être exécuter ​en tant que superuser 
 + 
 +        CREATE LANGUAGE plpgsql; 
 + 
 + 
 +//__3. Exécuter le script de migration :__// 
 +Exécuter ​le script Data_migration-6.sql qui 
 + 
 +    * crée les tables file_tags, tag, file_link 
 +    * ajoute archived et size_mo dans la table attached_file 
 +    * renseigne la table file_link avec les anciennes valeurs ​de study_attached_file et sample_attached_file 
 +    * positionne attached_file.archived ​à vrai pour les entités archivées 
 +    * associe les fichiers non associés à un échantillon ou à une étude (seuls deux cas possibles) à l'​étude référencé dans le path du fichier. Ce path DOIT alors être de la forme (sinon c'est un problème dans la BD ...) .../<​std_nomenclature>/​file_type. 
 +    * pour les fichiers associés aux échantillons modifies le path (de /​samples/​... à samples/​data/​...) 
 +    * pour les fichiers associés aux études modifies le path (de /<​std_nomenclature>/​... à /<​std_nomenclature>/​data/​...) 
 +    * supprime les tables study_attached_file et sample_attached_file 
 + 
 +et qui migre acquisition_result dans attached file : 
 + 
 +    * renseigne les tables file_link et attached_file à partir des tables acquisition_result - acquisition - protocol_application 
 + 
 + 
 +//__4. Vérifier les orphelins de la table attached_file__//​ 
 + 
 +Afin de s'assurer qu'​il ​n'y a pas d'​enregistrement d'​attached_file associé à aucune entité, ​exécuter ​
 +        select * from attached_file where attached_file.id NOT IN ( 
 +                select distinct fl.attached_file from file_link as fl 
 +        ) 
 + 
 +Si il existe de tels fichiers, il est alors nécessaire de corriger manuellement ​les erreurs.... et au final 
 + 
 +    * de créer le file_link adéquat 
 +    * de copier les fichiers dans le nouvel emplacement 
 +    * de modifier le path d'​attached_file 
 + 
 +//__5. Suppression des dernières tables - colonnes après les ultimes vérifications__//​ 
 + 
 +Exécuter le script ​Data_migration-6final.sql qui : 
 + 
 +    * supprime la colonne ayant permit de faire le lien entre attached_file (issue de acquisition_result) et acquisition référencé dans file_link 
 +    * supprime les tables migrées (study_attached_file,​ sample_attached_file et acquisition_result) 
 +    * supprime la colonne result d'​acquisition ( remplacé par FileLink ...) 
 +    * supprime la colonne file_type d'​attached_fie (remplacé par le lien avec Tag) 
 + 
 + 
 +===== Migration d'un répertoire racine d'​ePims ===== 
 +Pour la version 4.0 (à partir de la 4.0RC1) le répertoire de données d'​ePims à subit une modification dans sa structure (par exemple les fichiers de données de spectroscopie ne sont plus contenu dans les dossier //​[étude]/​raw//​ mais dans //​[étude]/​samples/​data/​RAW//​). 
 +Afin de faire migrer le répertoire dans la bonne structure un programme a été créé : ePimsRoot-pre4.0-migration.jar . 
 + 
 +==== Utilisation d'​ePimsRoot-pre4.0-migration.jar ==== 
 + 
 +=== Requis === 
 +Ce programme s'​utilise en ligne de commande (shell sous UNIX ou "​Démarrer => Exécuter => cmd" sous Windows). 
 +Il nécessite d'​avoir **Java 1.5** d'​installé sur la machine qui va l'​exécuter. 
 + 
 +=== Utilisation normal === 
 +<​code>​java -jar ePimsRoot-pre4.0-migration.jar -pimsroot [chemin vers le répertoire ePims] -v</​code>​ 
 + 
 +Un fichier de logs sera créé automatiquement dans le dossier où s'​exécute le programme, son nom étant //​ePimsRoot-pre4.0-migration.log//​. 
 +**Nota :** Sous LINUX il faut faire attention à l'​utilisateur qui exécute le programme. Il doit être le même que l'​utilisateur auquel sera identifié ePims pour gérer son dossier source (ou ce dernier doit avoir des droits supérieur). 
 + 
 +=== Utilisation particulière === 
 + 
 +== Liste des dossiers utilisés == 
 +Pour fonctionner ce programme doit avoir la liste des noms de répertoires utilisés pour l'​organisation **actuelle** du répertoire racines d'​ePims. Cette liste est celle définie dans le fichier eP-Core.properties lors de l'​installation d'​ePims. Par défaut il utilise les valeurs suivantes : 
 +<​code>​PIMS_REPOSITORY_1=a 
 +PIMS_REPOSITORY_2=b 
 +PIMS_REPOSITORY_3=c 
 +PIMS_REPOSITORY_4=d 
 +PIMS_REPOSITORY_5=e 
 +STUDY_RAW_DIR=raw 
 +STUDY_SPECTRA_DIR=spectra 
 +STUDY_RESULTS_DIR=results 
 +STUDY_SAMPLES_DIR=samples 
 +STUDY_SEARCH_DIR=search 
 +STUDY_ANALYSIS_REQUEST_DIR=analysis_request 
 +STUDY_OTHER_DIR=others 
 +STUDY_CARDS_DIR=forms 
 +STUDY_SCANS_DIR=scans 
 +STUDY_ANNOTATIONS_DIR=annotation 
 +</​code>​ 
 + 
 +Si ces valeurs ne correspondent pas à votre installation d'​ePims vous devez spécifier au programme d'​autre valeurs. Pour ce faire il faut créer un fichier texte contenant les propriétés qui changent par rapport aux valeurs par défaut. Par exemple : 
 +<​code>​ 
 +PIMS_REPOSITORY_1=repo1 
 +PIMS_REPOSITORY_2=repo2 
 +STUDY_SPECTRA_DIR=mgf 
 +</​code>​ 
 +(**Nota, cas spécial pour les repository** : redéfinir un PIMS_REPOSITORY annule toute les valeurs des autres repository par défaut. Dans l'​exemple précédent le programme ira chercher les repository dans les dossier repo1/, repo2/ mais pas dans c/ d/ e/ même si PIMS_REPOSITORY_3 ​et 5 n'ont pas été redéfinis). 
 + 
 +== Spécifier les nouvelles valeurs au programme == 
 +Il faut utiliser l'​argument **-properties** suivi du chemin d'​accès au fichier que vous avez écrit. \\   
 +Exemple : 
 +<​code>​java -jar ePimsRoot-pre4.0-migration.jar -pimsroot [chemin vers le répertoire ePims] -v -properties /​temp/​properties_file.txt</​code>​ 
 + 
 +:!: Les propriétés UNDEF_DIR_NAME,​ PIMS_SHARE, PIMS_SYSTEM,​ PIMS_ARCHIVE,​ PIMS_ARCHIVE_FILE ne sont pas utilisées par le programme de migration. Si vous les incluez dans le fichier listant les nouvelles valeurs, le programme affichera une erreur : **ERROR in given properties file. Element [propriété] isn't recognize as a valid property.**. Si [propriété] est une de celle non utilisée, ne vous inquiétez pas, cela ne posera pas de problème pour la migration. 
 + 
 +=== Arguments === 
 +//java -jar pimsRoot-pre4.0-migration.jar -pimsroot dir [-v] [-noLogFile] [-properties file]// 
 + 
 +  * **-h, <​nowiki>​--</​nowiki>​help** 
 +    * Affiche les infos sur les arguments et les valeurs par défaut utilisées par le programme. 
 + 
 +  * **-pimsroot //dir//**  
 +    * Pour donner le chemin et le nom du dossier source d'​ePims. 
 + 
 +  * **-v, <​nowiki>​--</​nowiki>​verbose**  
 +    * Pour afficher les logs dans la console 
 + 
 +  * **-noLogFile**  
 +    * Pour empécher le programme de créer un fichier de logs. **__ATTENTION__** Si vous utilisez ce paramètre vous n'​aurez pas de trace de ce que le programme fera et des éventuelles erreurs (sauf dans la console si vous avez utilisé l'​argument -v mais la console à généralement une taille définie qui ne vous permettras peut-être pas de remonter tout les logs). 
 + 
 +  * **-properties //file//**  
 +    * Pour définir un fichier listant les nouvelles propriétés à utiliser par le programme.  
 +    * Le fichier doit être de la forme : 
 + <​code>​ 
 +PROPERTY1=VALUE1 
 +PROPERTY2=VALUE2 
 +etc...</​code>​
  
wiki/epims4_0/admin/updatedbepims.1231422511.txt.gz · Last modified: 2009/01/08 14:48 by 132.168.73.247