PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Méthodologie de réplication
Méthodologie de réplication
Débuté par bapt.s, 24 juil. 2014 17:58 - 3 réponses
Posté le 24 juillet 2014 - 17:58
Bonjour à tous,
J’essaye de trouver une solution à mon problème de réplication de données. Ne souhaitant pas utiliser l’outil de Windev, j’ai essayé de penser un mode de fonctionnement perso. Malheureusement, je ne vois pas comment y arriver. Quelle méthodologie adopter ?
Je ne cherche pas des lignes de codes déjà écrite, mais la façon d’aborder les choses. Je me débrouillerais pour coder ensuite. Je suis tellement englué dans ce problème depuis plusieurs mois, que je n’arrive pas à prendre le recul nécessaire pour pondre quelque chose de correcte. Malheureusement ce problème est maintenant urgent et très problématique (vitale... :() pour mon entreprise.

Problématique :
Les utilisateurs utilisent notre application en local chacun sur leurs ordinateurs
Les utilisateurs sont tous des nomades (2 utilisateurs peuvent ne jamais se rencontrer même en travaillant dans la même entreprise)
Les ordinateurs ne sont pas en réseaux et ne le seront jamais
Les bases de données ne doivent pas se trouver sur Internet
Impossibilité d’avoir un ordinateur avec IP fixe
Impossibilité d’avoir un ordinateur qui joue le serveur
Impossibilité d’avoir un NAS
Impossibilité de faire de gros investissement

Besoin :
Les utilisateurs doivent utiliser la même base de données

Solution :
Utiliser un support externe avec une base de données maître
Dès que possible les différents utilisateurs réplique leurs bases de données locale avec celle du support externe

Scénario :
L’utilisateur 1 modifie sa base de données locale.
1 fois par semaine, l’utilisateur 1 branche le support externe avec la base de données maître et lance une réplication de données.
L’utilisateur 2 branche à son tour le support externe (1 ou 2 jours après) et lance une réplication de données.
L’utilisateur n… branche à son tour le support externe (1 ou 2 jours après) et lance une réplication de données.

J'ai lu beaucoup, beaucoup de post, avec diverses méthodologies de réplication, diverses solutions. Je n'arrive pas à transposer une méthode qui solutionne mon problème. Je n'ai jamais fais de réplication (avec ou sans outils / assistant). Et je n'arrive pas à trouver la bonne méthodologie / les bons algorithme pour faire une réplication sans perte de données et gérant les problèmes lié à la réplication (doublons etc...).

Ce problème est vraiment vitale pour mon entreprise et je me dis qu'utiliser l'outil Windev est peut être la solution. Mais si cette réplication occasionne des bugs plus tard, la finalité sera la même pour ma boîte.

J'attends vos conseils avec impatiente.

Merci pour votre lecture ;-)
Posté le 25 juillet 2014 - 14:44
Bonjour Alain

Le seul problème que j'ai avec ta description est celui ci :

Impossibilité d’avoir un ordinateur avec IP fixe
Impossibilité d’avoir un ordinateur qui joue le serveur



Pourquoi ? Il est très facile d'avoir un ordi (chez toi, dans la boite,
n'importe ou) branché sur internet avec une bête liaison ADSL (la plus
rapide possible, bien sur). Même s’il n'a pas d'IP fixe, l'achat d'un
nom de domaine (12€/an) et l'utilisation d'un système de routage d'IP
(no-ip par exemple) avec une petite config du modem résout ce problème
sans aucun soucis et sans gros investissements.


Autrement, tout le reste est du classique.

Bien sur, tu pourrais le faire avec un disque dur externe branché à tour
de rôle sur chaque machine client, mais est ce que tu veux vraiment que
la base de données principale soit situé sur le support le plus fragile
et le plus malmené de ta boite ?


Si tu veux plus d'info sur la réplication, tu peux lire les premiers
articles que j'ai publié sur mon projet de réplication open source
wxreplication ici:
http://fabriceharari.com/UK/Page_ArticlesList.awp…

C'est en anglais, mais si c'est un problème, google translate est ton ami.

Si tu as le temps d'attendre, le projet sera opérationnel en septembre
ou octobre vu que je vais le présenter en détail à la conférence
américaine des utilisateurs de produits pcsoft, wxdevcon, à Atlanta, fin
octobre. Pour plus de détails à ce sujet, c'est wxdevcon.com

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com
Posté le 26 juillet 2014 - 10:01
Bonjour Fabrice, merci pour ta réponse.


Pourquoi ? Il est très facile d'avoir un ordi (chez toi, dans la boite,
n'importe ou) branché sur internet avec une bête liaison ADSL (la plus
rapide possible, bien sur). Même s’il n'a pas d'IP fixe, l'achat d'un
nom de domaine (12€/an) et l'utilisation d'un système de routage d'IP
(no-ip par exemple) avec une petite config du modem résout ce problème
sans aucun soucis et sans gros investissements.


Mon client-type ne peut pas se permettre ce genre de chose. Il est même possible que certains de mes clients n'ont pas de local du tout en commun et qu'ils soient en déplacement toute la journée. Cela réduit les possibilités.

Bien sur, tu pourrais le faire avec un disque dur externe branché à tour
de rôle sur chaque machine client, mais est ce que tu veux vraiment que
la base de données principale soit situé sur le support le plus fragile
et le plus malmené de ta boite ?


Non c'est sûr que cela ne m'enchante guère.

Si tu veux plus d'info sur la réplication, tu peux lire les premiers
articles que j'ai publié sur mon projet de réplication open source
wxreplication ici:
http://fabriceharari.com/UK/Page_ArticlesList.awp…

C'est en anglais, mais si c'est un problème, google translate est ton ami.


Merci pour ces articles. L'anglais c'est pas mon fort.

D'après ce que j'ai cru comprendre. Pour chaque enregistrement de chaque table tu n'utilise plus d'idAuto généré par Windev, mais un GUID (donné par DonneGuid).

Pour la synchronisation entre plusieurs bdd, il n'y a plus de doublons grâce à ces GUID. Tes SELECT et autres requête sont donc basé sur ces GUID ?

Je vais donc lors d'une synchro remplir une table LOG sur la base maître et en fonction des enregistrements de la log (ajout, modif, suppression) répercuté les changements sur les bases esclaves.

Si tu as le temps d'attendre, le projet sera opérationnel en septembre
ou octobre vu que je vais le présenter en détail à la conférence
américaine des utilisateurs de produits pcsoft, wxdevcon, à Atlanta, fin
octobre. Pour plus de détails à ce sujet, c'est wxdevcon.com


Tu es en train de créer un composant de réplication qui sera adaptable sur tous les projets ? Ou ce sera une sorte de tutoriel pour nous apprendre à créer une réplication ?

Encore merci de ta réponse.

Bon week-end
Posté le 28 juillet 2014 - 14:53
Bonjour Alain


Mon client-type ne peut pas se permettre ce genre de chose. Il est même
possible que certains de mes clients n'ont pas de local du tout en
commun et qu'ils soient en déplacement toute la journée. Cela réduit les
possibilités.


Dans ce cas, je te conseille fortement un disque SSD pour éviter les
pièces mécaniques.

Ou alors tu offre TON serveur comme centre de réplication pour tous tes
clients (et tu leur fait payer une location)

Merci pour ces articles. L'anglais c'est pas mon fort.


C'est pour ca que je parlais de google translate :-)

D'après ce que j'ai cru comprendre. Pour chaque enregistrement de chaque
table tu n'utilise plus d'idAuto généré par Windev, mais un GUID (donné
par DonneGuid).

C'est ca

Pour la synchronisation entre plusieurs bdd, il n'y a plus de doublons
grâce à ces GUID. Tes SELECT et autres requête sont donc basé sur ces
GUID ?


Les requêtes sont en général basées sur les autres champs (conditions),
mais les liaisons entre fichiers sont effectivement faites avec les GUID.
>

Tu es en train de créer un composant de réplication qui sera adaptable
sur tous les projets ? Ou ce sera une sorte de tutoriel pour nous
apprendre à créer une réplication ?


Ce sera un ensemble de sources qui pourront être intégrées à tout projet
en suivant une 'recette de cuisine' de modifications pour adapter le
projet de départ. Par exemple, le remplacement des ID autos par des
GUIDs sera une des étapes de la "recette"

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXShowroom.com est disponible : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


Encore merci de ta réponse.

Bon week-end