Re: fusionner des bases

Lists: pgsql-fr-generale
From: "SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr>
To: <pgsql-fr-generale(at)postgresql(dot)org>
Subject: fusionner des bases
Date: 2008-09-17 14:56:22
Message-ID: 9FD9EDCB34C04847B5E87E4A57C418E81735C1@vmail.mipih.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Bonjour,

J'ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour deux sites web.

Elles ont exactement la même structure (schéma, tables), seules les données sont différentes, même version de postgresql pour le serveur.

Cela fait quelques années qu'elles sont en prod et qu'elle se sont remplies allègrement.

On me demande maintenant si on peut les fusionner pour ne garder qu'un site.

Les bases sont énormes, une bonne soixantaine de tables, des serials/foreign key/blob/oids un peu partout, bref un joyeux petit monde.

Tout d'abord une telle opération est-elle possible ? Sachant qu'on a aussi certaines obligations par rapport à l'indisponibilité de ces sites web (je ne suis pas sure qu'on puisse se permettre plus d'une journée d'arrêt ou ½ journée).

Est-ce qu'il existe des outils, ou des procédures, au moins quelque chose qui permette de faire cela ?

Samantha

N'imprimez ce message que si vous en avez l'utilité


From: Jean-Samuel Reynaud <reynaud(at)elma(dot)fr>
To: "SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr>
Cc: <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: fusionner des bases
Date: 2008-09-17 15:43:47
Message-ID: 20080917174347.07266d22@reynaud-dell
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Première idée qui me viens... comme ça. Utiliser un ETL comme talend
par exemple. mais à mon avis c'est un vrai chantier d'analyse en
amont... Quel est la taille sur disque des bases ? Histoire d'avoir une
petite idée...

Le Wed, 17 Sep 2008 16:56:22 +0200,
"SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr> a écrit :

> Bonjour,
>
>
>
> J'ai un (énorme) souci avec deux bases hébergées sur deux serveurs
> pour deux sites web.
>
>
>
> Elles ont exactement la même structure (schéma, tables), seules les
> données sont différentes, même version de postgresql pour le serveur.
>
> Cela fait quelques années qu'elles sont en prod et qu'elle se sont
> remplies allègrement.
>
> On me demande maintenant si on peut les fusionner pour ne garder
> qu'un site.
>
>
>
> Les bases sont énormes, une bonne soixantaine de tables, des
> serials/foreign key/blob/oids un peu partout, bref un joyeux petit
> monde.
>
>
>
> Tout d'abord une telle opération est-elle possible ? Sachant qu'on a
> aussi certaines obligations par rapport à l'indisponibilité de ces
> sites web (je ne suis pas sure qu'on puisse se permettre plus d'une
> journée d'arrêt ou ½ journée).
>
> Est-ce qu'il existe des outils, ou des procédures, au moins quelque
> chose qui permette de faire cela ?
>
>
>
>
>
>
>
> Samantha
>
> N'imprimez ce message que si vous en avez l'utilité
>
>
>


From: Stéphane Bunel <stephane+pgfr(at)bpf(dot)st>
To: SOULABAILLE Samantha <soulabaille(dot)s(at)mipih(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: fusionner des bases
Date: 2008-09-17 15:49:31
Message-ID: 48D1270B.9010909@bpf.st
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

SOULABAILLE Samantha a écrit :
> Bonjour,

Bonjour,

> J’ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour
> deux sites web.
>
> Elles ont exactement la même structure (schéma, tables), seules les
> données sont différentes, même version de postgresql pour le serveur.
>
> Cela fait quelques années qu’elles sont en prod et qu’elle se sont
> remplies allègrement.
>
> On me demande maintenant si on peut les fusionner pour ne garder qu’un site.
>
> Les bases sont énormes, une bonne soixantaine de tables, des
> serials/foreign key/blob/oids un peu partout, bref un joyeux petit monde.
>
>
> Tout d’abord une telle opération est-elle possible ? Sachant qu’on a
> aussi certaines obligations par rapport à l’indisponibilité de ces sites
> web (je ne suis pas sure qu’on puisse se permettre plus d’une journée
> d’arrêt ou ½ journée).

Rien d'évident, qui pourrait se faire via quelques ordres SQL, ne me
vient à l'esprit pour fusionner vos bases.

Le principale problème que je vois est celui des clés automatiques.
Chacune de vos bases ayant son propre vécue, inévitablement les clés de
l'une vont déjà exister dans l'autre (référencent des tuples différents).

Peut-être pourriez-vous exporter les données de chaque base (pgdump).
Puis expérimenter une fusion sur ces données via un script intégrant
votre logique métier pour gérer la fusion. Les données ainsi traitées
seront ensuite remonter dans une base. Oui, c'est facile à dire ;)

> Est-ce qu’il existe des outils, ou des procédures, au moins quelque
> chose qui permette de faire cela ?

Pyton, PHP, Perl^W, ...

Stéphane.
(...)


From: Pascal Brognez <pascal62fr(at)free(dot)fr>
To:
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: fusionner des bases
Date: 2008-09-18 06:23:57
Message-ID: 48D1F3FD.7060609@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

SOULABAILLE Samantha a écrit :
> Bonjour,
>
>
>
> J’ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour
> deux sites web.
>
>
>
> Elles ont exactement la même structure (schéma, tables), seules les
> données sont différentes, même version de postgresql pour le serveur.
>

Si la fusion est problématique du fait des Serials. Pourquoi ne pas
créer une nouvelle base (une 3ème) en la remplissant à l'aide des deux
premières.

A+
--
Pascal


From: "SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr>
To: "Jean-Samuel Reynaud" <reynaud(at)elma(dot)fr>
Cc: <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: fusionner des bases
Date: 2008-09-18 06:24:24
Message-ID: 9FD9EDCB34C04847B5E87E4A57C418E81735DA@vmail.mipih.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

40 Go pour la 1ère, environ 60 pour la 2ème.

-----Message d'origine-----
De : Jean-Samuel Reynaud [mailto:reynaud(at)elma(dot)fr]
Envoyé : mercredi 17 septembre 2008 17:44
À : SOULABAILLE Samantha
Cc : pgsql-fr-generale(at)postgresql(dot)org
Objet : Re: [pgsql-fr-generale] fusionner des bases

Première idée qui me viens... comme ça. Utiliser un ETL comme talend
par exemple. mais à mon avis c'est un vrai chantier d'analyse en
amont... Quel est la taille sur disque des bases ? Histoire d'avoir une
petite idée...

Le Wed, 17 Sep 2008 16:56:22 +0200,
"SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr> a écrit :

> Bonjour,
>
>
>
> J'ai un (énorme) souci avec deux bases hébergées sur deux serveurs
> pour deux sites web.
>
>
>
> Elles ont exactement la même structure (schéma, tables), seules les
> données sont différentes, même version de postgresql pour le serveur.
>
> Cela fait quelques années qu'elles sont en prod et qu'elle se sont
> remplies allègrement.
>
> On me demande maintenant si on peut les fusionner pour ne garder
> qu'un site.
>
>
>
> Les bases sont énormes, une bonne soixantaine de tables, des
> serials/foreign key/blob/oids un peu partout, bref un joyeux petit
> monde.
>
>
>
> Tout d'abord une telle opération est-elle possible ? Sachant qu'on a
> aussi certaines obligations par rapport à l'indisponibilité de ces
> sites web (je ne suis pas sure qu'on puisse se permettre plus d'une
> journée d'arrêt ou ½ journée).
>
> Est-ce qu'il existe des outils, ou des procédures, au moins quelque
> chose qui permette de faire cela ?
>
>
>
>
>
>
>
> Samantha
>
> N'imprimez ce message que si vous en avez l'utilité
>
>
>


From: "SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr>
To: "Pascal Brognez" <pascal62fr(at)free(dot)fr>
Cc: <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: fusionner des bases
Date: 2008-09-18 06:31:41
Message-ID: 9FD9EDCB34C04847B5E87E4A57C418E81735DB@vmail.mipih.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Comment procéder pour remplir cette troisième base?

Samantha

-----Message d'origine-----
De : pgsql-fr-generale-owner(at)postgresql(dot)org [mailto:pgsql-fr-generale-owner(at)postgresql(dot)org] De la part de Pascal Brognez
Envoyé : jeudi 18 septembre 2008 08:24
Cc : pgsql-fr-generale(at)postgresql(dot)org
Objet : Re: [pgsql-fr-generale] fusionner des bases

SOULABAILLE Samantha a écrit :
> Bonjour,
>
>
>
> J'ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour
> deux sites web.
>
>
>
> Elles ont exactement la même structure (schéma, tables), seules les
> données sont différentes, même version de postgresql pour le serveur.
>

Si la fusion est problématique du fait des Serials. Pourquoi ne pas
créer une nouvelle base (une 3ème) en la remplissant à l'aide des deux
premières.

A+
--
Pascal


From: William Dode <wilk(at)flibuste(dot)net>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: fusionner des bases
Date: 2008-09-18 06:55:26
Message-ID: gasu0t$f8ogasu0t$f8o$1@ger.gmane.org@ger.gmane.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

On 17-09-2008, Stéphane Bunel wrote:
> SOULABAILLE Samantha a écrit :
>> Bonjour,
>
> Bonjour,
>
>> J’ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour
>> deux sites web.
>>
>> Elles ont exactement la même structure (schéma, tables), seules les
>> données sont différentes, même version de postgresql pour le serveur.
>>
>> Cela fait quelques années qu’elles sont en prod et qu’elle se sont
>> remplies allègrement.
>>
>> On me demande maintenant si on peut les fusionner pour ne garder qu’un site.
>>
>> Les bases sont énormes, une bonne soixantaine de tables, des
>> serials/foreign key/blob/oids un peu partout, bref un joyeux petit monde.
>>
>>
>> Tout d’abord une telle opération est-elle possible ? Sachant qu’on a
>> aussi certaines obligations par rapport à l’indisponibilité de ces sites
>> web (je ne suis pas sure qu’on puisse se permettre plus d’une journée
>> d’arrêt ou ½ journée).
>
> Rien d'évident, qui pourrait se faire via quelques ordres SQL, ne me
> vient à l'esprit pour fusionner vos bases.

Est-ce qu'il n'y a pas déjà un moyen de copier une base dans l'autre
sous un autre schéma ? Ca permettrait déjà de pouvoir faire des requetes
de l'une vers l'autre.
Ensuite s'assurer que toutes les clés sont updatables en cascade, les
mettre à jour pour qu'il n'y ait pas de collision.
Désactiver les triggers et fusionner à coup d'insert.
Mettre à jour les serials.

--
William Dodé - http://flibuste.net
Informaticien Indépendant


From: "David Tokmatchi" <david(dot)tokmatchi(at)gmail(dot)com>
To: "SOULABAILLE Samantha" <soulabaille(dot)s(at)mipih(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: fusionner des bases
Date: 2008-09-18 07:55:46
Message-ID: c50dbb0b0809180055o4b817fe8ufaa0da621125c214@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Une des solution serait de:

1-créer une nouvelle base

2-d'importer sans modification la base la plus volumineuse

3-faire l'analyse de la fusion technique

4-annoncer les règles du jeu aux utilisateurs

5-importer les données transactionnelles de la deuxième base en traitant la
collision

6-faire une recette et recommencer à l'étape 5

Les tables sont à analyser selon leur nature pour trouver celles de :

- système (donnée de fondation)

- paramètres fonctionnels

- données transactionnelles

Ensuite il faudra annoncer les règles du jeu aux utilisateurs que cette
fusion est de nature technique et par la suite il faudra une fusion
fonctionnelle. Exemple : Un même fournisseur dans les deux bases, existera 2
fois et ce n'est pas la fusion technique qui va éliminer ce genre de
doublons.

Pour les données système il faudra vérifier la cohérence et choisir le
paramétrage de l'une ou de l'autre base. Cette règle s'appliquer également
aux paramètres fonctionnels. Si le code 100 indique la devise Euro dans une
base alors que dans l'autre le même code désigne le Dollar, il faudra faire
le choix de maintenir l'un des deux. Ensuite il faudra voir l'impact et
modifier toute la dépendance.

La fusion des données transactionnelles pose le problème de collision. Il
faudra trouver toutes les clés (contraintes référentielles),

et de les changer. Pour chacune des clés, on peut ajouter un incrément qui
correspond au Max de la clé de la première base. Exemple si l'identifiant
des fournisseurs dans la première base arrive à 657, pour la base à importer
il faudra prendre un incrément de 6000, ainsi plus tard, même selon la clé
on peut déterminer la provenance.

Personnellement sans cette démarche je ne ferais pas confiance aux boites
noir.

David

le 17 septembre 2008 16:56, SOULABAILLE Samantha <soulabaille(dot)s(at)mipih(dot)fr> a
écrit :

> Bonjour,
>
>
>
> J'ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour
> deux sites web.
>
>
>
> Elles ont exactement la même structure (schéma, tables), seules les données
> sont différentes, même version de postgresql pour le serveur.
>
> Cela fait quelques années qu'elles sont en prod et qu'elle se sont remplies
> allègrement.
>
> On me demande maintenant si on peut les fusionner pour ne garder qu'un
> site.
>
>
>
> Les bases sont énormes, une bonne soixantaine de tables, des
> serials/foreign key/blob/oids un peu partout, bref un joyeux petit monde.
>
>
>
> Tout d'abord une telle opération est-elle possible ? Sachant qu'on a aussi
> certaines obligations par rapport à l'indisponibilité de ces sites web (je
> ne suis pas sure qu'on puisse se permettre plus d'une journée d'arrêt ou ½
> journée).
>
> Est-ce qu'il existe des outils, ou des procédures, au moins quelque chose
> qui permette de faire cela ?
>
>
>
>
>
>
>
> Samantha
>
> *N'imprimez ce message que si vous en avez l'utilité*
>
>
>


From: Pascal Brognez <pascal62fr(at)free(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: fusionner des bases
Date: 2008-09-18 08:44:54
Message-ID: 48D21506.7000705@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg롤 토토SQL : Postg롤

SOULABAILLE Samantha a écrit :
Bonjour,

>> J'ai un (énorme) souci avec deux bases hébergées sur deux serveurs pour
>> deux sites web.
>>
>>
>>
>> Elles ont exactement la même structure (schéma, tables), seules les
>> données sont différentes, même version de postgresql pour le serveur.
>>
>
> Si la fusion est problématique du fait des Serials. Pourquoi ne pas
> créer une nouvelle base (une 3ème) en la remplissant à l'aide des deux
> premières.

>> Comment procéder pour remplir cette troisième base?

Comment je ferais?
(Il y a certainement d'autres méthodes.)

Il faut bien connaître la structure de la base.
Il y a des tables liées par un enregistrement (clé étrangère).

J'écrirais un script qui commence par lire une table (dont l'identifiant
n'est pas clé étrangère d'une autre table).
Après lecture d'un enregistrement je récupère l'Id serial (base1), je
crée un nouvel enregistrement dans la 3ème base, je récupère l'id serial
base3.
Je cherche les enregistrements des tables liées avec l'id serial base1
et les écrit dans la base 3
etc.
C'est simple.

Comme les données de base1 (et base2) ne sont pas modifiées, tu as droit
à l'erreur et tu peux mettre au point ton script.

A+
--
Pascal


From: BPascal <pascal62fr(at)free(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: fusionner des bases
Date: 2008-09-18 09:00:05
Message-ID: 48D21895.4020506@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Pascal Brognez a écrit :

>
> Il faut bien connaître la structure de la base.
> Il y a des tables liées par un enregistrement (clé étrangère).
>
>
> J'écrirais un script qui commence par lire une table

> (dont l'identifiant n'est pas clé étrangère d'une autre table).
Ce n'est pas ce que je voulais exprimer. Je voulais dire le contraire.
Lire les tables sans clés étrangères.

A+
--
pascal