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

Langage SQL Discussion :

modifications en BD


Sujet :

Langage SQL

  1. #1
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut modifications en BD
    Bonjour,

    Je ne sais pas si je suis dans le bon forum mais je me pose une question existentielle sur les modifications en BD.
    Voila, je bosse sur un projet qui ne contient qu'une dizaines de tables avec peut être pour une ou deux d'entre elles, plusieurs milliers d'enregistrements.

    Lorsque j'ouvre la BD, je charge toutes les informations en mémoire.

    Ensuite, lorsque l'utilisateur fait des modifications, je me demande quel est le meilleur moyen pour gérer ces modifs, par exemple :

    1 - Je conserve ses modifs en mémoire et lorsque l'utilisateur quitte le programme, je fais une demande de confirmation pour sauver toutes ces modifs dans la BD
    ou
    2 - Dès que l'utilisateur fait une modif, j'applique cette modif aussi dans la BD
    ou alors
    3 - un mixte des deux, cad que pour certaines modifs je le fais qu'en mémoire et pour d'autres, je fais la modif aussi dans la BD mais je crains que cela soit déroutant dans la bonne utilisation du programme.

    Comment faites vous pour gérer cela lorsque vous devez gérer une BD de petite taille ?
    Tout en préservant l'intégrité des données.
    Merci pour vos avis

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par free07 Voir le message
    Tout en préservant l'intégrité des données.
    Bonjour,

    Le seul moyen de préserver l’intégrité des données c'est de les stocker sur un support physique.

    A partir de là, vous n'avez plus de question à vous poser...

  3. #3
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    Je crois que je vais mettre à jour la BD lorsque l'utilisateur le souhaite et lui laisser cette possibilité lorsqu'il fermera l'appli.
    Cela lui permettra d'annuler ses modifs en cas d'erreur de sa part.

    En mémoire, je vais indiquer l'état des enregistrements : inchangé, modifier ou supprimer

    Ceci me permettra de faire les changement en BD en une seule fois.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    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 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Votre pratique est stupide. Vous réinventez la roue. Ce que vous voulez faire un SGBDR de type C/S le fait de manière native et surtout optimisé !

    Bref, formez-vous !

    A +

  5. #5
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    C'est toujours agréable d'avoir une réponse aussi constructive...

    Je travaille avec une BD local et SQlite, merci de m'orienter vers une solution plus constructive ou de m'apporter une précision qui me permettrait d'avancer, sinon, c'est même pas la peine...

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    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 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Hé bien plutôt que de travailler avec SQL Lite utilisez par exemple PostGreSQL qui fait tout ce que vous voulez faire sans vous le dire et de manière optimisé;

    La vocation de SQL LIte est de l'embarqué mono processus... Pas du multiutilisateur !!!

    En général il faut utiliser un outil adapté et non pas adapté l'utilisateur à l'outil...

    A +

  7. #7
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    La vocation de SQL LIte est de l'embarqué mono processus... Pas du multiutilisateur !!!
    Oui je sais et c'est pour cela que je l'utilise, l'application n'est pas multi-utilisateurs et doit fonctionner sur de l'embarqué aussi.

    Je viens de voir que SQLite a maintenant un méchanisme de SAVEPOINT/RELEASE pour la gestion imbriquées des transactions, je vais faire des tests mais il se peut fort bien que cela puisse résoudre mon problème

    Est ce que vous pensez à ce méchanisme aussi ou bien faites vous allusion à autre chose ?

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    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 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Les transactions imbriquées, cela n'existe pas. Votre session est en état transactionnelle ou ne l'est pas. Les SAVEPOINT servent à faire du ROLLBACK partiel.

    Quand vous dite embarqué vous visez quoi au juste ? Tablette ? Smartphone ?? Ou missile ???

    A +

  9. #9
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    Tout le monde sur ce forum te donnera le même conseil que SQLPro, les insultes en moins : adopte si tu le peux un SGBD "normal" qui gère les transactions. Ne rajoute pas une couche pour gérer la persistance des données : code des transactions qui correspondent à des blocs de modifications cohérentes de ton système, rollback ou commit en fonction de ce que tu veux en faire.

    Faire les modifs en BDD "une seule fois" n'a pas en soi de plus value (ni de sens).

    Si tu veux des conseils en usine à gaz pour gérer manuellement ce niveau de fonctionnement qui est pris en charge par le SGBD, tu n'es effectivement pas sur le bon forum... (je suppose qu'il doit y avoir une foule de mordus de code brutal qui n'aiment pas les SGBD qui s'amusent à faire ce genre de choses)

  10. #10
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Les transactions imbriquées, cela n'existe pas. Votre session est en état transactionnelle ou ne l'est pas. Les SAVEPOINT servent à faire du ROLLBACK partiel.

    Quand vous dite embarqué vous visez quoi au juste ? Tablette ? Smartphone ?? Ou missile ???

    A +
    Tablette et smartphone sous IOS dans un 1er temps puis android ensuite.

    Et sinon, vous avez une suggestion pour mon problème ?

    Merci

  11. #11
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Salut,

    Tout le monde sur ce forum te donnera le même conseil que SQLPro, les insultes en moins : adopte si tu le peux un SGBD "normal" qui gère les transactions.
    SQLite gère les transactions.

    Citation Envoyé par pacmann Voir le message
    Faire les modifs en BDD "une seule fois" n'a pas en soi de plus value (ni de sens).
    Ok, je vois que je dois abandonner cette idée.

    Citation Envoyé par pacmann Voir le message
    Si tu veux des conseils en usine à gaz pour gérer manuellement ce niveau de fonctionnement qui est pris en charge par le SGBD, tu n'es effectivement pas sur le bon forum... (je suppose qu'il doit y avoir une foule de mordus de code brutal qui n'aiment pas les SGBD qui s'amusent à faire ce genre de choses)
    Loin de moi cette idée, je ne cherche pas à faire une usine à gaz et c'est pour cela que j'ai posté içi, n'étant pas un spécialiste SGBD, je cherche à me renseigner avant de me lancer dans cette fonctionnalité et je m'aperçois qu'elle est un peu farfelue.

    Merci pour ton aide

  12. #12
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Cela dit, il faut peut être consulter le forum qui correspond à de l'embarqué smartphone et tout ça (j'avais pas vu, désolé).

    En fait, quand je te disais que ça n'a pas de sens de vouloir gérer manuellement en cache les transactions, c'était par rapport à un SGBD normal qui gère lui-même très bien son cache.

    Pour aller plus loin, sous Oracle par exemple, les commit ne génèrent quasi aucune contention (la gestion physique / cache étant par ailleurs partiellement décorrelée du commit / rollback).

    Donc en gros je n'oserais pas affirmer des trucs pour ton cas

  13. #13
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Bonjour,

    Le seul moyen de préserver l’intégrité des données c'est de les stocker sur un support physique.

    A partir de là, vous n'avez plus de question à vous poser...
    Désolé, je ne suis pas d'accord.
    L'intégrité des données, ce sont les transactions et l'implémentation du SGBD de l'intégrité des données.
    Si le système crash pendant l'écriture, c'est l'implémentation de la procédure de reprise qui garantit l'intégrité des données.

    Sous Oracle par exemple, tu peux écrire sur le disque des données non commitées, et tu peux ne pas écrire sur le disque des données commitées.

    Après le crash, le tout est de faire le tri entre ce qui est écrit sur le disque, ce qui est validé par des checkpoints, ce qui est dans la redo log, ce qui est commité où non...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  2. [VB6] modification de menu
    Par rikko23 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/11/2002, 21h30
  3. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

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