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

PostgreSQL Discussion :

Postgres : C vs C++


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 4
    Points
    4
    Par défaut Postgres : C vs C++
    Bonjour,

    je commence un projet sur Postgresql :

    le but est de copier des transactions d'un serveur vers un autre, il y a 300000 lignes à copier.
    Dans l'existant, on utilise le langage C (libpq) pour se connecter au Serveur distant et copier les transactions ligne par ligne.
    Ma question est de savoir si le c++ est meilleur que le C pour ce genre de replication.
    Puis comment faire pour copier les lignes par bloc.

    Merci de votre aide

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Il faut noter que les tables ne sont pas sur le même serveur et n'ont pas les mêmes structures.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Merci les gars, ne vous bousculez pas, y a de la place pour tout le monde

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Quand tu dis "meilleur" on va supposer que ton critère est la vitesse d'exécution (par opposition à d'autres critères comme la concision du programme, la facilité de maintenance, les dépendances avec des librairies etc...).

    Voilà une opinion: par rapport aux éléments que tu donnes, passer du C au C++ ne va rien apporter du tout à en vitesse ton traitement. Zéro intérêt.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    Exactement !

    C'est la vitesse d'execution qui m'interesse.
    Je veux savoir comment copier les lignes d'une table à une autre.
    Sachant que les tables ne sont pas sur le meme serveur et n'ont pas la meme structure.
    Pis, je veux savoir comment copier ces lignes le plus rapidement possible.

  6. #6
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Il me semble que vous faites les transactions lignes par lignes ?
    Désactivez l'autocommit et utiliser une prepared statement devrait améliorer la performance, quitte à valider les transactions toutes les 100 ou 1000 enregistrements.

    En effet ce qui est lent dans votre cas :
    • le traffic réseau engendré par l'envoi de la requête + des données
    • l'analyse syntaxique de la requête
    • la création et la validation de la transaction


    Si cela ne suffit pas, il est également possible de :
    Mais attention a valider que ces deux points sont réalisables.
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 4
    Points
    4
    Par défaut
    On utilise des prepared statement et on fait un commit final.
    Sur le premier serveur, on a une table A qui est alimentée par des lignes
    Sur la table A y a un trigger qui copie toutes les nouvelles lignes de A vers une table B.
    En suite mon bach C va copier les lignes de la table B vers un autre serveur (table C) et supprime les lignes de B.

    Ce que cherche s'est amélioré le Bach C, en faisant un COPY ou en copiant les lignes par bloc.

    Pour chacune de ces solutions, j'ai un problème :

    De nouvelles lignes peuvent etre ajouté à ma table B juste après le COPY, et je vais certainement les supprimer par mon bach C.

    Pour le transfere des lignes par bloc, techniquement je ne vois pas comment faire.

  8. #8
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    Une question, pourquoi ne pas avoir utiliser une solution de réplication comme Slony-I ?
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

Discussions similaires

  1. [PostgreSQL/CYGWIN] install de postgres sous WINdows
    Par loicmillion dans le forum Administration
    Réponses: 2
    Dernier message: 16/04/2003, 11h37
  2. [Class/PHP/Postgres] Problème de modélisation...
    Par k-reen dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/02/2003, 08h49
  3. pk passer de mysql à postgre
    Par pioums dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 03/10/2002, 10h31
  4. [Kylix] Requetes Kylix pour postgres
    Par Miltown dans le forum EDI
    Réponses: 1
    Dernier message: 29/05/2002, 20h22
  5. [Kylix] Kylix - Postgres
    Par Miltown dans le forum EDI
    Réponses: 1
    Dernier message: 29/05/2002, 20h19

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