IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Traitement en masse des données


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut Traitement en masse des données
    Bonjour,

    Je suis débutant sous Oracle et on m'a demandé pour mon stage d'étudier les solutions offertes par Oracle pour effectuer un traitement sur un volume de données important (Une table contenant environ 1 000 000 d'enregistrements).
    Voici globalement la logique du traitement :
    1. Récupérer le texte XML contenu dans un enregistrement ;
    2. Parser le texte XML ;
    3. Stocker le contenu du texte XML dans deux autres tables ;

    J'ai pu lire que les opérateurs "bulk collect" et "forall" pouvait m'aider dans ce genre d'opération. Pouvez-vous me le confirmer ? Concernant la lecture du document XML faut-il mieux passer par un object de type XMLType ou DOM ? J'ai l'impression que le DOM est plus rapide pour traiter les requête XPath !
    J'ai pu lire aussi qu'il faut mieux éviter d'effectuer trop de requête SQL dans un code PL/SQL car cela était coûteux à cause du changement de contexte. Est-ce vrai ?

    J'espère que mes questions ne sont pas trop idiote pour ce forum et merci d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    J'ai un peu de mal à comprendre le traitement à exécuter et son lien avec la table d'un million d'enregistrement, pourriez-vous détailler un peu.

    Concernant le bulk, forall, nombres des requêtes PL/SQL etc.
    Dans la base Oracle il y a 2(3) moteurs différentes: un moteur SQL et un moteur PL/SQL (le troisième étant le moteur java) qui sont optimisés d'une manière différente et qui utilisent des structure de mémoire différentes. Le changement de contexte concerne les transformations de représentation des données entre ces structures.

    Ce qu'il faut éviter ces sont les traitements des requêtes SQL en boucle, ligne par ligne, souvent employées par des développeurs inexpérimentés, de type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Pour chaque direction
      Pour chaque employé de la direction
         lecture de son salaire actuel
         calcul du nouveau bonus en prenant en compte la fourchette de la mase salariale et le coefficient de la direction
         mise à jour du bonus de l'employé via son id
      Fin boucle employé
    Fin boucle direction
    Ce type de traitement peut être effectué souvent directement dans SQL via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Update tabl_emp
       Set bonus = Case When sal between ... Then round(sal * (coef_dir + 0.02),2) ...
    Where ...
    soit en employant les collections et en travaillant par lot via les "Bulk et forall".

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 79
    Par défaut
    Il existe plusieurs méthodes sous pl/SQL pour traiter les volumes important d' informations...
    Cependant votre problématique n'est pas assez claire :

    S'agit-il de récupérer un seul enregistrement et de faire un update sur les 2 tables ?
    Ou bien un update massif a chaque lecture ?
    Quel est le probleme de perf ?

    Pouvez vous reformuler ?

    Sinon, pour compléter ce qu'a dit mnitu, utilisez une procédure (pour compiler le traitement et le réutiliser) et/ou un curseur (pas de requete SQL avec boucle par exemple) suivant les données retournées, avec un stockage dans les collections si le traitement l'exige.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Désolé de ne pas avoir été suffisamment clair.
    Mon but est d'analyser un ensemble de documents XML stockés dans une table et de stocker les informations qu'ils contiennent dans cinq autres tables.
    Les questions que je me pose sont :
    1. Quelle est la meilleur méthode pour analyser les XML ?
    2. L'utilisation des opérateurs forall et bulk collect est-il une bonne idée ?
    3. Y-a-t-il d'autres solutions permettant de rendre l'analyse des documents XML et le stockage des informations le plus rapide possible ? J'ai vu récemment qu'il est possible d'exécuter des procédures en parallèle en utilisant les différents core présent sur la machine.

    Encore merci pour vos réponses.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Personne ne peut m'aider ? Je ne suis pas encore clair ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Mai 2006
    Messages : 147

Discussions similaires

  1. Traitement de synchronisation des données par tranche
    Par bacelar dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 19/06/2014, 16h04
  2. [SP-2007] Traitement en masses des librairies [via webservice et VBA]
    Par studying dans le forum SharePoint
    Réponses: 4
    Dernier message: 21/12/2012, 16h30
  3. Besoin d'une masse des données
    Par phpiste5 dans le forum QlikView
    Réponses: 0
    Dernier message: 02/12/2012, 03h11
  4. Réponses: 1
    Dernier message: 21/05/2008, 20h23
  5. Réponses: 7
    Dernier message: 27/01/2006, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo