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

Design Patterns Discussion :

Pattern d'un System de backup et recouvrement de données


Sujet :

Design Patterns

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut Pattern d'un System de backup et recouvrement de données
    Bonjour,

    je developpe un logiciel qui enregistre les informations sous un fichier XML.

    Je cherche des explications sur comment je dois m'y prendre pour pouvoir faire des backups des fichiers et un système de persitence robuste, par exemple pour prévoir les crach système, et les erreurs que pourrait engendrer le logiciel.

    J'imagine qu'il doit y avoir des stratégies de conception (pour ne pas dire pattern).

    Merci de m'aiguiller.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Je sais que cela ne répond pas a votre question mais pourquoi ne pas utiliser une base de données.
    Si vous etes scotches à implémenter la persistence avec un fichier texte (XML = texte) les principes pourraient être:
    1. garder les versions précédentes,
    2. s'assurer que le fichier courant a été complètement écrit (pas interrompu par un crash) en passant par un fichier temporaire qu'on renomme après.

    Pour (1), vous pourriez confier cela à un outil comme SVN (mais ce n'est peut être pas utile).
    - W
    PS: Pas de pattern GOF sur le sujet et les patterns POSA sur la persistance portent plutôt sur les DAO et les DB access layer.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    Je suis scotché sur un XML effectivement, mais une DB ne resoud par forcément mon problème.

    En faite la structure du XML ou de la DB peut etre bonne (vérifiée), c'est à dire répondre à la spécification de la persistance (la XSD en somme) et pour autant présenter une incohérence métier (non valide). Ca arrive quand on fait des choses un peu générique, dans un soucis d'évolutivité, donc moins de typage. Et en faite le logiciel peut lui aussi fonctionner mais l'information devenir un peu incohérente (terrible hein).

    Donc je veux faire un mécanisme simple, et j'imagine ceci:
    - j'enregistre dans un fichier temporaire toute modification pour faire un backup si il y a un crash system.
    - je garde eb backup le dernière version du fichier, puis des versions sur 1 semaine et un mois (comme les versions history sous SVN).

    Je ne veux pas utiliser SVN, car le logiciel est en standalone, à moins qu'il y est une API ou qq chose à embarquer.

    Une idée me vient: est ce qu'il ne faut pas plutot conserver les différentielles entre les différentes versions du XML, comme on le ferait avec un pattern memento ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Alec6 Voir le message
    ...
    pour autant présenter une incohérence métier (non valide). Ca arrive quand on fait des choses un peu générique, dans un soucis d'évolutivité, donc moins de typage. Et en faite le logiciel peut lui aussi fonctionner mais l'information devenir un peu incohérente (terrible hein).
    Certes, mais comment l'incohérence va pouvoir être détectée?
    Et si elle est détectée dans N jours comment on récupère cela?

    Donc je veux faire un mécanisme simple, et j'imagine ceci:
    - j'enregistre dans un fichier temporaire toute modification pour faire un backup si il y a un crash system.
    - je garde eb backup le dernière version du fichier, puis des versions sur 1 semaine et un mois (comme les versions history sous SVN).

    Je ne veux pas utiliser SVN, car le logiciel est en standalone, à moins qu'il y est une API ou qq chose à embarquer.
    Je n'ai jamais regardé s'il existait une API pour SVN mais pour autant que SVN participe à la solution ce ne devrait pas être un problème.

    Une idée me vient: est ce qu'il ne faut pas plutot conserver les différentielles entre les différentes versions du XML, comme on le ferait avec un pattern memento ?
    Ce serait "sympa" mais à part compliquer les choses je ne vois pas ce que cela apporte.

    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    L'incohérence métier ne peut pas toujours etre detectée (ca devrait dans l'absolu). L'incohérence va finir par se révéler par des exceptions occasionnées par des actions utilisateurs.

    Normalement le modele de données devrait etre blindé au niveau des contraintes métier, mais on ne peut assurrer 100% de cette protection, et moi je gère des données critiques. Donc je dois vivre en paranoiaque.

    Il ne faut pas que l'utilisateur puisse enregistrer son travail puis qu'à la prochaine ouverture du fichier tout plante. C'est ca la grande peur.

    Mon système de backup est probabiliste, c'est juste pour limiter la casse.

    Pour l'idée d'enregistrer les différentielles l'idée est de réduire le volume de données enregistrées, et donc de pouvoir conserver:
    - en t le dernier xml modifier par l'utilisateur
    - en t-1 la modification qui a amenée à t
    - en t-x-1 idem à t-x
    Ainsi l'utilisateur peut remonter l'historique des modifications et choisir une version qui semble ne pas planter.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    De quel volume parle-t-on?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    le volume de Ko, car normalent je dois conserver toute modification, pour la tracabilité. Je l'envisage pas aujourd'hui.

    Donc aujourd'hui faire 3 backup sur 1 semaine puis un mois me semble raisonnable.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Heu puisqu'il s'agit de fichier, j'avais compris qu'il s'agissait d'octets mais cela ne me dit pas combien.
    -W
    PS: je relis tout ca un peu plus tard, pour l'instant, je bouge
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Alec6 Voir le message
    L'incohérence métier ne peut pas toujours etre detectée (ca devrait dans l'absolu). L'incohérence va finir par se révéler par des exceptions occasionnées par des actions utilisateurs.
    Certes mais quand?
    Si on doit attendre que l'utilisateur accède à une donnée incohérente, c'est pas le dernier backup qui va pouvoir y faire grand chose!

    Normalement le modele de données devrait etre blindé au niveau des contraintes métier, mais on ne peut assurrer 100% de cette protection, et moi je gère des données critiques. Donc je dois vivre en paranoiaque.
    Soit les données sont critiques et leur protection doit être assurée, soit on prend des risques et il serait sage d'en faire la balance avec la criticité.

    Et au plus c'est critique au plus on fait simple!

    Il ne faut pas que l'utilisateur puisse enregistrer son travail puis qu'à la prochaine ouverture du fichier tout plante. C'est ca la grande peur.

    Mon système de backup est probabiliste, c'est juste pour limiter la casse.
    Il y a d'un côté l'intégrité des données stockées et de l'autre pallier une écriture partielle suite à un crash.
    Si vous n'êtes pas capable de vérifier l'intégrité de vos données, c'est même pas la peine de les écrire sur disque.

    Pour l'idée d'enregistrer les différentielles l'idée est de réduire le volume de données enregistrées, et donc de pouvoir conserver:
    - en t le dernier xml modifier par l'utilisateur
    - en t-1 la modification qui a amenée à t
    - en t-x-1 idem à t-x
    Ainsi l'utilisateur peut remonter l'historique des modifications et choisir une version qui semble ne pas planter.
    Compliquer n'est jamais mieux surtout que si ne savez apparament toujours pas détecter les inconsistances. En ayant des copies "complètes" vous pourrez toujours repartir de quelque chose de cohérent alors qu'avec des incréments vous augmenter les risques de véroler l'ensemble de vos informations.
    Le volume (nombre de Mo) peut jouer, mais s'il est important mettez le en base pas dans des fichiers plats!
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Grosse backup de base de données
    Par iowa dans le forum Administration
    Réponses: 4
    Dernier message: 08/04/2008, 13h37
  2. Backup de base de données
    Par pelloq1 dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/03/2008, 12h29
  3. [Batch] Scripts pour un systeme de backup sur serveur
    Par placebomuse dans le forum Windows
    Réponses: 3
    Dernier message: 22/04/2006, 14h28
  4. Backup de base de données.
    Par Alexs dans le forum Administration
    Réponses: 7
    Dernier message: 13/02/2006, 17h24
  5. outils de "backup " de base de données
    Par yaobi dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 20/07/2005, 12h39

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