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

Requêtes PostgreSQL Discussion :

2 data-bases identiques sur même serveur, déversement entre tables


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut 2 data-bases identiques sur même serveur, déversement entre tables
    Bonjour,

    Comme énoncé dans le titre, le serveur contient 2 databases identique(disons DB_1 et DB_2 crée par la requête CREATE DATABASE DB_2 WITH TEMPLATE DB_1
    Les DB contiennent chacune 5 tables dont une table message.
    La seule base reliée à l'appli est la DB_1.
    Je dois faire en sorte qu'a chaque fois qu'un nouveau message arrive dans la DB_1 il soit automatiquement intégré à la table message de la DB_2.
    J'ai essayé de mettre une subscription en place mais sans succès, et je n'ai pas trouvé le moyen de copier d'une table à l'autre en inter DB, le seul moyen que j'ai trouvé c'est de dump la DB_1 pour la DEPLOY sur le DB_2, mais cela nécessite une action manuelle, et surtout ça n'est pas immédiat.

    PostgreSQL 10.2

    (J’espère respecter les bonnes pratique il s'agit de mon 1er post sur un forum)

    Merci pour l'intérêt porté à mon problème!!

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 257
    Points : 395
    Points
    395
    Par défaut
    Bonjour,

    Pour votre problème, j'aurais dit qu'il y a plusieurs solutions.

    Il y a celle où vous avez besoin d'avoir la donnée en temps réelle dans la DB2 et dans ce cas, dans la DB1 vous faites un trigger avec, dedans, un insert dans la DB2 (Je vous invite, pour voir la syntaxe, à regarder le post du forum juste en dessous du votre)

    Mais un trigger, en fonction de l'importance de la table et de ces interactions, cela peut être lourd.


    Soit vous n'avez pas besoin d'un temps réel à la secondes près et dans ce cas, vous faites un script externe (perl....) qui tourne toutes les 5 minutes, interroge DB1 et insères les nouveaux résultats dans DB2 (Mais un champs date serait potentiellement nécessaire)

    Bisous

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    La solution du trigger serait effectivement la meilleure, si je comprends bien je dois intégrer ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM DB1.INFORMATION_SCHEMA.TABLES
    UNION
    SELECT *
    FROM DB2.INFORMATION_SCHEMA.TABLES
    à mon trigger, mais je tombe sur l'erreur:
    cross-database reference are not implemented

    Alors que d’apres les recherches les version au dessus de 9.2 l'intègre

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 257
    Points : 395
    Points
    395
    Par défaut
    Si il vous faut un trigger, il faut déjà procéder aux manipulations présentent dans ce lien :

    https://dba.stackexchange.com/questi...es-in-psycopg2

    Ensuite, pour ce qui est du contenu du trigger la requête serait plutôt du style :
    https://stackoverflow.com/questions/...select/6083444

    Par contre, je reste novice en postgresql et je ne saurais malheureusement pas dire si on peut faire une insertion dans une base distante depuis la base A ou si la base distante doit interroger la base A à distance puis faire une insertion...

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Les déclencheurs inter-base sont totalement merdiques dans PG car il faut passer par un DB LINK... ce qui pose des problèmes de performances, car le code du déclencheur est joué dans la transaction, ce qui rallonge la durée du blocage...

    La question est : pourquoi avoir 2 fois le même base dans la même instance de PostGreSQL ??? Ceci est généralement une mauvaise pratique !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai pu lire que c'était effectivement une mauvaise pratique,

    D'après ce que j'ai compris on extrait des données de salesforce vers notre BD, l'idée est d'extraire les données sur une base et de les répliquer sur l'autre plutot que d'extraire les meme données en double. Car les appels à salesforce sont payant selon volume.
    Il s'agit d'une mauvaise pratique mais temporaire c'est juste une phase de test nécessaire et on supprime en sortie (tout ça pour ça!)

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Le mieux est alors de faire une sauvegarde restauration régulière....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai proposé un dump, restau tous les jours l'idée a été refusée il faut du flux tendu

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    Alors changez de SGBDR... Pour MS SQL Server qui permet de répliquer au fil de l'eau par différents modes (7 en tout) pour ce genre de cas de figure....
    En particulier la réplication transactionnelle permet de sélectionner les tables que l'on veut en les filtrant horizontalement ou verticalement et utilise pour cela le journal de transaction (pas de déclencheur) en mode asynchrone et avec le possibilité de mettre le flux en mode "fil de l'eau" (quelques ms en tout).
    MS SQL Server est ce qu'utilise la plupart des sites web commerciaux comme Fnac.com, cdisount ou ventre privées et utilisent ce genre de réplication pour assurer une surface d'attaque des données plus large de manière à absorber plus de charge (autrefois fnac.com c'était plus de 50 000 connexions simultanées...)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 008
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 008
    Points : 23 684
    Points
    23 684
    Par défaut
    Bonjour,

    Depuis PostgreSQL v10, vous avez la réplication logique qui est faite pour ça...

    @+
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    C'est hélas encore un peu limité.

    Mais c'est sur la bonne voie et s'inspire de MS SQL Server pour ce qui est de la réplication transactionnelle dans son architecture, sauf pour la répartition des données....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  12. #12
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 008
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 008
    Points : 23 684
    Points
    23 684
    Par défaut
    Mais dans le cas présent, c'est très certainement suffisant...
    Sauf que j'ai un doute sur la possibilité d'installer une réplication logique d'une instance sur elle-même... Habituellement, on fait ça entre deux instances différentes.

    Autrement, plutôt que de se prendre la tête avec db_link, on peut facilement mettre en place un foreign data wrapper entre deux bases PostgreSQL. C'est simple à mettre en œuvre (carrément moins usine à gaz que db_link) et les performances s'améliorent de version en version...

    Bref, il y a plusieurs pistes.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. Requête sur 2 bases d'un même serveur
    Par The eye dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/04/2009, 07h40
  2. Héberger une base Access sur un serveur web
    Par zoidy dans le forum Access
    Réponses: 1
    Dernier message: 12/06/2006, 14h45
  3. [Cohabitation]Peut-on intaller sur même serveur MySql/MSSql?
    Par ruellan dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 06/04/2006, 15h52
  4. Base access sur un serveur distant...
    Par zezet33 dans le forum Access
    Réponses: 5
    Dernier message: 13/02/2006, 18h00
  5. [Conception] Export de base locale sur le serveur
    Par Destampy dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 14/06/2005, 15h24

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