PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 30/01/2014 23:50:11

Vinounounou
Membre

Extraction/injection de données issues d'une base vers une autre base

Bonjour,

Je vous sollicite pour avoir votre avis sur la meilleure solution concernant le besoin suivant

Objectif :
Avoir un traitement qui va extraire les données issues de plusieurs tables d'une base de données source. Ces données récupérées doivent être ensuite injectées dans une table de travail dans un schéma se situant sur une autre base de données (sur un autre serveur). Cela peut concerner plusieurs millions de lignes, les performances sont donc recherchées.

Solutions envisagées :
- via un Shell, se connecter à la base source et récupérer les données dans un fichier via la command COPY. Injecter ensuite ce fichier dans la base cible via COPY
- via un dblink, exécuter une requête "insert into select" depuis la base cible
- une autre solution ?

Quelles sont selon vous les avantages/inconvénients de ces solutions ?

Merci d'avance de votre aide

Hors ligne

#2 31/01/2014 00:53:00

rjuju
Administrateur

Re : Extraction/injection de données issues d'une base vers une autre base

Bonjour,

est-ce pour un uniquement traitement, un traitement régulier ou pour maintenir une sorte de réplication ?

Hors ligne

#3 31/01/2014 14:09:02

Vinounounou
Membre

Re : Extraction/injection de données issues d'une base vers une autre base

Le traitement concerné est un traitement qui doit être lancé ponctuellement afin de valider un traitement de migration de données.

Hors ligne

#4 31/01/2014 16:11:49

gleu
Administrateur

Re : Extraction/injection de données issues d'une base vers une autre base

Niveau performances, certainement pas dblink. J'aurais plutôt tendance à privilégier COPY.


Guillaume.

Hors ligne

#5 04/02/2014 20:55:34

SQLpro
Membre

Re : Extraction/injection de données issues d'une base vers une autre base

COPY avec plusieurs threads en // ou un bon ETL qui parallélise les lectures/écritures (malheureusement pas dans le libre, la version "free" de TALEND étant verrouille à ce niveau....)


En sus pensez à tester en faisant le scénario suivant :
1) supprimez les contraintes FK des tables de destination
2) supprimez les index non sémantiques des tables de destination
3) insérez en parallèle dans toutes les tables à la fois
4) recréez les index préalablement supprimés
5) rajoutez les contraintes FK préalablement supprimées


Si vous avez d'autres contraintes de validation (CHECK par exemple) ou des déclencheurs, et que vous êtes sûr de votre coup, pensez aussi à les désactiver...


A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

Pied de page des forums