Vous n'êtes pas identifié(e).

#1 27/11/2017 12:28:37

ian
Membre

Récursivité et Performances (Big Data)

Bonjour tout le monde !


J'ai développé sur postgres une procédure stockée récursive, càd une procédure stockée classique qui effectue des opérations puis fait appel à elle-même avec la commande EXECUTE. J'ai tant cherché comment postgres traite la récursivité et je n'ai pas trouvé ce que je voulais, en tout cas j'ai essayé cette méthode et elle marche bien.


Cependant, ces questions m'interpellent :


1- Cette méthode serait-elle appropriée pour développer une fonction récursive sur postgres ?
2- Quelles seraient les bonnes pratiques pour réaliser un traitement récursif en matière de performance ? Car dans mon cas, il s'agit de 100GB de données à insérer et ma procédure prend un temps d'exécution énorme; plusieurs heures alors que le traitement devrait être accompli en quelques secondes.
3- Le traitement parallèle serait-il une bonne solution pour ce genre de problème ? Si oui, comment le réaliser ?


J'espère que certains d'entre vous auront des réponses à ces problématiques. Je suis sûr qu'une grande part de la communauté sera éclairée à ce sujet.


Merci d'avance.

Hors ligne

#2 27/11/2017 14:56:43

gleu
Administrateur

Re : Récursivité et Performances (Big Data)

1- Cette méthode serait-elle appropriée pour développer une fonction récursive sur postgres ?

Il faudrait détailler la méthode pour qu'on puisse répondre smile

2- Quelles seraient les bonnes pratiques pour réaliser un traitement récursif en matière de performance ? Car dans mon cas, il s'agit de 100GB de données à insérer et ma procédure prend un temps d'exécution énorme; plusieurs heures alors que le traitement devrait être accompli en quelques secondes.

Je ne vois pas comment vous pourriez faire ce traitement en quelques secondes. Ne serait-ce qu'écrire 100 Go sur disque met déjà plus que quelques secondes. Sans compter que le langage PL/pgsql n'est clairement pas un langage performant. Il est simple d'utilisation et on peut rapidement écrire des procédures stockées assez complexes. Mais il n'est vraiment pas performant.

3- Le traitement parallèle serait-il une bonne solution pour ce genre de problème ? Si oui, comment le réaliser ?

Un traitement parallèle pourrait être une bonne solution si le problème est principalement sur la charge CPU. C'est une fausse solution si le goulet d'étranglement est plutôt concentré sur les disques.

Bref, ça manque de détails pour vous répondre efficacement.


Guillaume.

Hors ligne

Pied de page des forums