Tags:
create new tag
, view all tags

Stage d'Adrien Vizier-Fontanesi - ENSIIE Evry - [3/06/19 au 30/08/19]

Important : cette page est réservée au suivi du stage, merci de ne pas la modifier

Informations générales pour les stagiaires

Pour toute information concernant ce stage : contacter Gilles, Grégory

Sujet

Stage (Juin - Août 2019)

Doc:

TODO:

  1. Se familiariser avec postgresql: installation, creation d'une procedure stockee en C, creation d'une EXTENSION
  2. Tester des FDW déja existant: notamment 'CSV / Fixed-length' (voir https://wiki.postgresql.org/wiki/Foreign_data_wrappers)
  3. Faire une documentaiton du FDW 'CSV / Fixed-length' - modifier le code...
    voir notament comment faire un filtre pour eviter de renvoyer toutes les donnees a postgres
    etudier comment recuperer les contraintes, bien comprendre les structures et fonctions de l'API.
  4. Faire un FDW pour interroger des fichier FITS OU pour interroger le service grand catalogue

Juin

  • Lundi 3 :
    • arrivée,Présentation de VizieR, et des logiciels du CDS en général par Gilles Landais
    • Début de documentation sur les foreign data wrapper de PostgreSQL
  • Mardi 4:

    • Tentative d'éxecution d'une fonction en C sur une base de données postgres à partir d'exemples, soldée par un échec
  • Mercredi 5:

    • Réussite de l'éxécution d'une fonction en C sur une BDD Postgres, Makefile recopié à partir d'un exemple donc à améliorer.
    • Tentative pour un FDW (foreign data wrapper) sur un fichier .csv quelconque, réussi.
    • Demande pour un fichier "type" que on doit ouvrir avec un FDW.
    • Début de travail sur le fichier, afin de le lire avec un file_fdw link here.
  • Jeudi 6:

    • Présentation du CDS par André Schaaff, visite de la coupole et de la salle serveur.
    • Elaboration d'un script shell permettant de transformer les fichier "type" en .csv, pas terminé
  • Vendredi 7:

    • Réunion Infusion
    • Creation du script shell, et creation d'un fdw pour le fichier "type" concluant et réussi avec uniquement des champs textuels et numériques pour certains
    • Les types des champs ne sont pas reconnus par le script et doivent donc être entrés "à la main" par l'utilisateur
    • sources : example file_fdw syntax COPY Postgres bla
  • Mardi 11:
    • Lecture de documentation pour écrire un FDW sur un fichier.
    • Inspiration du code de file_fdw (lien) et de la documentation de PostgreSQL (lien)
  • Mercredi 12:
    • Premiere version de cds_fdw stable : simple copie de file_fwd (postgreSQL 10) (lien source)
    • Rencontre d'un petit soucis : le git pour le fixed_length_file_fdw marche pour une version de postgres antérieure (9.1) et ne marche plus pour postgreSQL 10
  • Jeudi 13:
    • Essai de mélange entre file_fixed_length_fdw (lien) et le précédent.
  • Vendredi 14:
    • le mélange entre fixed_length et fil_fdw est infructueuse, d'autant plus que cette méthode ne permet de faire une table qu'avec un seul champ de text[].
  • Lundi 17:
    • Documentation des routines callback des wrappers de données distantes en français disponible ici.
    • J'ai trouvé un autre git avec une autre manière de faire un IterateForeignScan, en ne passant pas par NextCopyFrom, mais en utilisant NextRawFields (lien) Mais cela reste imparfait car on lit toute la ligne et on ne s'occupe pas du nombre de champs
  • Mardi 18:
    • Débuggage du fdw inspiré du file_fixed_lengt. Pas encore fini. Problèmes d'encodage des fichiers
  • Mercredi 19:
    • Après plusieurs heures, je tombe toujours sur un segmentation fault dans une focntion de postgres.
    • File fixed length ne prend des tables qu'à une colonne de type text[], ce qui ne nous arrange pas trop.
    • On se penche sur l'utilisation de Multicorn (lien) qui est un outil permettant de coder un fdw en python
  • Vendredi 21 :
    • Je me bat avec Multicorn pour essayer de le faire fonctionner
  • Lundi 24 :
    • Multicorn fonctionne avec les csv : importation de la librairie 'csv', petits soucis lorsque l'on cherche à optimiser le nombre de colonnes renvoyées.
  • Mardi 25 :
    • multicorn fontionne en adaptant leur fdw pour csv et en le simplifiant.
    • Ne renvoie que les colonnes nécéssaires
    • Les clauses WHERE ne sont pas encpre traitées
  • Mercredi 26 :
    • Multicorn fonctionne sans importer le module csv
    • Comparasion de performance avec le file_fdw : pour 2 millions de lignes python : 20 sec, C : 8 sec
    • Réussite pour trouver le nom des colonnes de la table en cours sur cds_fdw (inspiré du file_fdw)
    • Echec pour trouver les colonnes demandées par la requête
  • Jeudi 27 :
    • Le struct CopySateData est inaccessble depuis l'extérieur. Ce qui complique les choses pour voir ce qui se passe pendant la requête.
    • Toujours pas de moyen de récupérer les colonnes de la requête.
  • Vendredi 28 :
    • Mise en Place du système client/server du Démon Java afin de générer des fichiers de tests

Juillet

  • Lundi 1 :
    • Le nom des colonnes requises est trouvé.
    • Les clauses WHERE semblent plus difficiles à cause de leur diversité. Recherche en cours dans la documentation et dans l'exemple python de multicorn
  • Mercredi 10:
    • Le lancement du client/server via multicorn (en python) fonctionne: je récupère les clauses where et les colonnes ce qui me permet d'optimiser la commande que j'exécute
    • Python a vraiment des problèmes de performance si le flux de sortie de la commande dépasse le million.
    • Multicorn ne semble pas être capable de comprendre "condition OR condition", ces clauses ne sont pas passées à la fonction "execute" de multicor.
    • Le but serait maintenant de réussir à faire ça en C directement
  • Vendredi 19 :
    • Rapport de mi-stage
    • Parser de clauses WHERE peut être trouvé (à tester) [ lien ]
  • Lundi 22:
  • Mardi 23:

Août

  • ...

Liens

  • ...

Versions testables

  • ...

Documentation

  • ...

Liste des améliorations à envisager

  • ...

Bugs connus

  • ...
Topic revision: r19 - 2019-07-23 - AdrienVizierFontanesi
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback