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

Bases de données Delphi Discussion :

Quel systeme pour stocker mes données


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Quel systeme pour stocker mes données
    Bonjour,

    Je dois développer une mini application monoposte, avec quelques données (3 tables, la plus grosse aura quelques milliers d'enregistrement et encore) et je cherche comment stocker ces données.
    Il me faut un systeme qui soit tres simple a déployer (pas de client serveur) et ne nécessitant pas de maintenance. Je pense à du stockage dans un fichier à plat.
    Je suis parti sur MyBASE avec des fichiers XML parce que ca semblait répondre à mes critères, mais je me retrouve face un probleme : je ne vois pas comment faire evoluer la structure d'une "table" qui contient déjà des données !
    Soit je n'ai pas tout compris à ce systeme, soit ce n'est pas assez souple pour mon appli (je dois pouvoir faire évoluer la structure dans 6 mois quand le client va vouloir des améliorations).
    J'ai fait pas mal de recherches sur différents forums et autres tutoriaux mais a part MyBASE je ne vois que des systemes client serveur.

    Si quelqu'un pouvait me mettre sur la voie du systeme de gestion de données de mes rêves ...

    Merci
    Jérôme

  2. #2
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Système de base de données "Access" me semble être parfait pour ce que vous voulez faire. La marge d'évolution me semble assez large pour suivre votre client durant de nombreuses années...
    Cordialement,
    Hauwke

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    mmm pas bete, pourquoi je n'y ai pas pensé ?
    Je vais regarder quelles sont les possibilités avec access.

    Du coté de MyBASE j'ai étudié l'implémentation par code plutot que de le faire "graphiquement" et ca me parrait déjà plus clair et simple a utiliser. Par contre je ne trouve toujours pas le moyen d'ajouter un champ dans une table existante. Quelqu'un peut il me dire si c'est possible à faire ou non ?

    Merci

  4. #4
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Il me semble que se soit avec Access ou autre qu'une requête Sql "createtable" doit aussi régler le probléme...
    Cordialement,
    Hauwke

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Access avec ADO, ça marche.
    Il faudra toutefois installer des lmodules d'accès pour les utilisateurs qui n'auraient pas Access.

    Toutefois, les mauvaises surprises sur la durée ne sont pas exclues...

    En 1999 on a basculé une appli utilisant le BDE de Paradox à Access97 .
    Est arrivé 2 ans après Access2000. Pas de chance,
    1) Pour les utilisateurs ayant Access 2000, il faut installer le jet engine (DAO35)
    2) impossible d'utiliser des tables au format Access 2000 avec le BDE.

    Donc, les tables sont restées depuis en format Access97. Elles sont lisibles et modifiables sur Access 2000, mais la structure quant à elle n'est pas modifiable via Access 2000.

    Ainsi, quand la base évolue par ajout de champs ou extension de la taille d'un champs texte, on le fait via une requête SQL.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Graffito
    Bonjour,

    Access avec ADO, ça marche.
    Il faudra toutefois installer des lmodules d'accès pour les utilisateurs qui n'auraient pas Access.

    Toutefois, les mauvaises surprises sur la durée ne sont pas exclues...

    En 1999 on a basculé une appli utilisant le BDE de Paradox à Access97 .
    Est arrivé 2 ans après Access2000. Pas de chance,
    1) Pour les utilisateurs ayant Access 2000, il faut installer le jet engine (DAO35)
    2) impossible d'utiliser des tables au format Access 2000 avec le BDE.

    Donc, les tables sont restées depuis en format Access97. Elles sont lisibles et modifiables sur Access 2000, mais la structure quant à elle n'est pas modifiable via Access 2000.

    Ainsi, quand la base évolue par ajout de champs ou extension de la taille d'un champs texte, on le fait via une requête SQL.
    Merci pour toutes ces infos.
    Il va falloir que je me penche sur la question du déploiement sur un poste n'ayant pas access. C'est la raison pour laquelle je visais des fichiers genre XML au départ, plus simple a déployer.
    Je suis pas super emballé par access, car je sais pas expérience que ce n'est pas le SGBD le plus fiable/pratique au monde (loin de la), mais vu le faible volume de données/transactions que mon appli va gerer j'espere que ca ira.
    Pour les mises à jour, étant donné que l'appli sera déployée chez N clients (N étant le plus grand possible ), j'avais l'intention de faire un petit module de mise à jour avec des requetes SQL pour les structures de tables. J'espere qu'avec ca j'échaperrais aux problemes de versions, de drivers, de pilotes et autres emm.rdes ...

  7. #7
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 45
    Points : 45
    Points
    45
    Par défaut
    J'utilise Firebird embeded sans problèmes avec les composants JVUIB (tout est gratuit), c'est très puissant et très simple d'utilisation et si jamais tu veux passer en client serveur tu n'auras aucun problème à utiliser ta base il faut juste installer le serveur Firebird.
    Bonne chance.

  8. #8
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Je donne +1 à Firebird Embeded.
    C'est facile, juste un dll a utiliser et une très grande evolutivité comme le dit amnir.

    A+

  9. #9
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    peut etre que MSAccess n'est pas le meilleur SGBD du monde mais en se qui concerne les base de données local je pense que c'est le meilleur et vous pouvez passez a SQL Server sans aucun problemme j'uste quelque mise a jour dans tes requette.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    FireBird en version Embedded me semble une bonne piste.
    J'ai téléchargé la 1.5.3 mais je ne sais pas comment interconnecter ca dans delphi.
    Faut il utiliser les composants Interbase ou télécharger de nouveaux composants ?
    Comment ensuite créer la base de données et les tables ?
    Je ne trouve pas vraiment de tutoriel pour m'aider, si vous avez des liens je suis preneur.

    Merci

  11. #11
    Membre actif Avatar de touhami
    Inscrit en
    Avril 2002
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 327
    Points : 264
    Points
    264
    Par défaut
    Bonjour,
    voici des liens qui peuvent etre utiles pour toi:
    http://"http://www.jcolibri.com/arti...utorial.html"]

    http://interbase.developpez.com/cours/#Doc
    bon courage.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Après avoir testé access, MyBase et Interbase/Firebird, mon choix s'oriente vers ce(s) dernier(s).
    En utilisant les composants IBX j'arrive à manipuler mes données comme je le souhaite, par contre je ne vois pas encore bien comment gerer simplement l'évolution des structures de tables.

    Cas concret :
    Je livre une V1 de l'application a mes clients, avec une table CLIENT qui contient un ID, le NOM et le PRENOM.
    Dans 2 mois, on me demande de gerer en + le téléphone, comment dois-je m'y prendre pour livrer une V2 de l'application qui va mettre à jour automatiquement les bases de tous mes clients ?
    Car si j'ajoute simplement le champ TELEPHONE à ma TIBTable, ca ne met pas à jour. Dois-je obligatoirement ajouter un ordre SQL "ALTER TABLE CLIENT ADD TELEPHONE VARCHAR(20)" qui sera déclenché au démarrage de l'appli selon la version ?

    Je ne vois que cette solution pour l'instant, mais cela me semble un peu contraignant ...
    Il n'existe pas une methode pour metre à jour la structure automatiquement ?

    Merci

  13. #13
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Voilà ce que moi je fais actuellement.

    PROGRAMME PRINCIPAL
    - Dans la base de donnée, j'ajoute une table pour contenir les infos sur la base de donnée (Auteur, Version, date de création, etc)
    - Le programme client lit cette table est déclanche une erreur si la version de la base de donnée ne correspond pas à la version codé dans l'appli.

    MODIFICATION DE BDD

    - J'ai créé un programme qui charge un script SQL et l'execute. le script contien un header qui contien les infos de la bdd.
    Si le header et les infos de la table cible concorde, aucun script ne sera executer.
    Chaque fois que je dois faire une modification de la base de donnée, seule le script change.

    A+

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Andry
    Voilà ce que moi je fais actuellement.

    PROGRAMME PRINCIPAL
    - Dans la base de donnée, j'ajoute une table pour contenir les infos sur la base de donnée (Auteur, Version, date de création, etc)
    - Le programme client lit cette table est déclanche une erreur si la version de la base de donnée ne correspond pas à la version codé dans l'appli.

    MODIFICATION DE BDD

    - J'ai créé un programme qui charge un script SQL et l'execute. le script contien un header qui contien les infos de la bdd.
    Si le header et les infos de la table cible concorde, aucun script ne sera executer.
    Chaque fois que je dois faire une modification de la base de donnée, seule le script change.

    A+
    C'est finalement cette solution que j'ai retenue.
    Je stock une numéro de version dans une table de parametrage.
    Je met une constante numero_version dans mon code, que j'incremente de 1 chaque fois que je change une structure de table.
    Au démarrage de l'appli je vérifie la version, et si ca ne concorde pas je passe dans une fonction qui fait les mises à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if VersionDB<1 then begin
      //requetes de création des tables
    end;
    if VersionDB<2 then begin
      //requetes de mise à jour des structures de tables
    end;
    ...
    Merci tout le monde pour votre aide.
    Je tag en résolu.

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

Discussions similaires

  1. Quel Cloud pour sauvegarder mes base de données ?
    Par JauB dans le forum Cloud Computing
    Réponses: 1
    Dernier message: 18/02/2014, 19h39
  2. Meilleur méthode pour stocker mes données
    Par cyberlewis dans le forum Windows
    Réponses: 6
    Dernier message: 03/07/2004, 11h53
  3. [Debutant] Stocker mes données en XML ou BDD ?
    Par buffyann dans le forum XQUERY/SGBD
    Réponses: 32
    Dernier message: 10/06/2004, 23h54
  4. Stocker mes données
    Par Le Fou dans le forum C++Builder
    Réponses: 23
    Dernier message: 05/07/2002, 15h02

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