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

 C++ Discussion :

Stockage d'information étendu


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Stockage d'information étendu
    Bonsoir à tous.

    Je bosse sur une petite appli, ou plusieurs personnes peuvent modifier mes bases. Je voudrais simplement savoir s'il existe une base, ou une astuce permettant de gérer qui a fait quelle modification et quand.

    En effet, j'ai une sorte de serveur principal, et gravitent autour de lui des périphériques mobiles (pc portable par exemple). Si deux personne modifient la même info en local, j'aimerais que lors de leurs synchronisations, la base centrale contienne la bonne info et rejettent les périmées du même enregistrement.

    Exemple d'école :

    J'ai une table Livre, avec 3 colonnes : Auteur, Titre, Prix

    Il y a dans cette table 2 lignes ayant été initialisées à 13h aujourd'hui (par exemple) :
    Toto - Le livre 1 - 10€
    Tata - Le livre 2 - 20€

    Sur le "terrain", les deux utilisateurs modifient le prix du livre 1:
    User 1 => 15€ à 16h
    User 2 => 14h à 17h.

    User 2 se synchronise vers 18h et User 1 vers 20h.

    Le but est que lors de la synchro d'User 2 la base se mette à jour en notant que l'info date de 17h, et qu'ensuite elle "rejette" la synchro de User 1, car elle date de 16h.

    La difficulté vient du fait que je veux ce comportement pour chaque info, et non seulement pour chaque ligne. De plus les bases peuvent être assez volumineuse (une vingtaine de colonne pour plusieurs milliers d'enregistrements), et j'aimerais que les synchronisation ne durent pas des heures

    Existe-t-il un moyen de faire ca avec une base de donnée "standard" (style mysql) ?

    J'espere que je ne vous ai pas trop embrouillé les pinceaux !

    Merci d'avance

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    tu as une solution directe, utiliser un gestionnaire de version, type svn ou git.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par leternel Voir le message
    tu as une solution directe, utiliser un gestionnaire de version, type svn ou git.
    A vrai dire, je crois que Bravado parle de base de données lorsqu'il parle de base

    Pour te répondre, il faut savoir qu'il est toujours très dangereux de faire en sorte que deux personnes puissent modifier une donnée (qu'elle soit dans un fichier plat ou dans une base de données) identique en même temps.

    Dans les meilleur des cas, l'une des modification risque de ne pas être prise en compte, dans le pire des cas, tu risques d'avoir un "mix" des deux modifications qui ne correspondra plus à rien.

    Deux solutions s'offrent alors à toi:

    Soit, tu t'arranges pour avoir un "lock" sur les données, de manière à ce que si une personne est occupée à la modifier, toutes les autres ne puissent avoir qu'un accès en lecture.

    Soit tu t'arranges pour coller une "somme de contrôle" à ta donnée.

    Lorsque "quelqu'un" demande la donnée, il reçoit, en meme temps que cette donnée, la somme de contrôle correspondant à la donnée telle qu'elle se présente.

    Lorsqu'il demande la mise à jour, il renvoie cette somme de contrôle.

    Deux solutions sont alors possibles:

    Soit la somme de contrôle renvoyée par le client correspond à la somme de contrôle de la donnée qui se trouve dans la base de données.

    Cela indique que la donnée en question n'a pas été modifiée entre temps, et que l'on peut appliquer la modification demandée sans se poser de question.

    Une fois la modification apportée, la donnée de la base de données présentera donc une autre somme de contrôle.

    Soit, justement, la somme de contrôle renvoyée par le client ne correspond plus à celle qui se trouve dans la base de données.

    Cela indique donc que l'information a été modifiée entre le moment où le client l'a demandée et celui où le client essaye de sauvegarder ses modifications.

    Il est alors possible de renvoyer la donnée "à jour" (et la somme de controle correspondante) au client en lui demandant de prendre cette mise à jour en compte dans sa modification.

    Il pourra alors, au choix, faire un "mix" des deux modifications si cela s'avère utile, décider d'abandonner sa propre modification parce que celle qui vient d'être faite est "meilleure" ou encore décider de ne choisir que sa propre modification.

    Une fois sa décision prise, il pourra renvoyer la modification et la somme de contrôle qu'il a obtenue du serveur, et reprendre le cycle
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [Stratégie] Stockage d'informations sous forme de fichier
    Par Jimalexp dans le forum Général Java
    Réponses: 5
    Dernier message: 29/10/2008, 07h18
  2. Base pour stockage d'informations sur des candidatures
    Par ccanu dans le forum Modélisation
    Réponses: 41
    Dernier message: 10/09/2008, 11h39
  3. [VBA-E]Pb Simulation de Monté Carlo avec stockage d'information
    Par geminium dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/04/2007, 15h16
  4. stockages des informations dans les Mfc
    Par khafor dans le forum MFC
    Réponses: 1
    Dernier message: 25/02/2007, 19h16

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