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 :

lenteur du BDE


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut lenteur du BDE
    bonjour,

    voici mon problème:

    j'ai fait une petite application base de données en delphi 3 avec le BDE
    (je sais, ca fait retro mais j'ai pas le choix pour l'instant!)

    L'application est sur un poste XP PRO et les bases sont sur un serveur.

    Ca fonctionne correctement avec un seul utilisateur mais quand 2 personnes se connectent sur la meme base, le temps d'affichage de le base est long (2 ou 3 secondes pour une afficher un DBgrid ;la base faisant 1 mega !)

    j'ai bien essayé de modifier la config du bde avec le Bdeadmin mais rien ni fait.

    Auriez un conseil ?

    Note : les bases sont au formats Dbf.
    Avec le format Paradox , est ce que cela serait plus rapide ?

    merci ?
    Salutations

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Normal, le BDE, copie les fichiers en local pour ensuite les afficher ou les filtrer ... le BDE n'est pas fait pour le Client Server, et gère les DBF encore plus mal qu'il en gère les Paradox mais vu le volume, 1Mo, cela fait quoi 10 000 enrec de quelques colonnes, ça devrait gérer sans soucis avec paradox ... mais quoi qu'il arrive, c'est lent, ... dans mon premier employeur, on avait une application Paradox multi client (on avait limite à 3 pour les licences et les risques de stabilité), et je sais que mon tuteur avait bidouillé énormément, pour que cela soit performant, ... et je n'ai pas su quoi, j'ai donc eu les mêmes problèmes que toi, pour une application avec des pointes de 20 clients (plus un automate), je suis donc passé à IB, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Quand on ne connait pas on ne discute pas Monsieur le Troll !

    Tu peux passer sans problème sur Paradox et monter en puissance aussi bien en taille qu'en nombre d'utilisateurs. Les problèmes sur Paradox ont été rencontrés lorsque les utilisateurs ont progressivement abandonné les réseaux Novell (IPX/SPX) et sont passé sous TCP/IP que Microsoft maitrisait assez mal (~1997). En effet les brevets déposés par Borland à ce sujet (BDE) portent sur des interruptions particulières propres à Novell. Aujourd'hui tu peux coupler un serveur de fichier Linux avec des frontaux Microsoft pour une utilisation optimale (hors pb de majuscules et minuscules). 100 Utilisateurs en simultané sur une table de 2 Millions d'enregistrements ne pose pas de problème particulier.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    J'ai bien précisé que je n'ai jamais su ce qu'il fallait changé pour que cela fonctionne avec bcp d'utilisateur avec le BDE ...

    Maintenant, je suis aussi preneur d'une solution concrète, pour ma part en Windows, car je n'ai que du Windows, donc Linux (dont j'ai oublié toutes mes navrantes notions il y a bien des années) est une idée, mais tu ne fourni pas comment dans le BDE on fait le lien avec un tel serveur ... surement en mettant une adresse dans le PATH de BDEAdmin ... personnellement, je n'ai vu que des répertoires partagés avec un disque réseau, je n'ai jamais mis d'IP directement ... et puis tu as les petits fichiers lck, net, et autre ... 100 utilisateurs sur un BDE, donc pourquoi vendre IB (5 users gratuits) si BDE gratuit fait mieux ? Le Driver Paradox le gère, le BDE le supporte ? ça c'est moins sure, mes souvenirs sont un peu vieux, et mon tuteur de l'époque qui était celui qui gérait les bases n'est plus informaticiens depuis quelques années et je n'ai plus trop de contact avec lui depuis qu'il est parti en province ...

    Et je n'ai pas travaillé en paradox depuis près de 5 ans, j'étais débutant (2 ans apprentissage), puis ensuite, je me suis retrouvé sur des projets tout seul, et mes notions de déploiement/configuration de pdx était assez faible et j'ai eu bcp de soucis de lenteur avec paradox pour juste lancer une pauvre requete SQL pour afficher une grille (à peine 100 lignes sur un millier) mais il est vrai j'avais un programme automate (qui avait une fréquence d'une modification sur cette table toute les 50 ms, précis oui, projet de trieuse industrielle) et je pense que cette contrainte de temps ont nuit aux postes clients ...

    Je suis en MySQL en ce moment, et j'ai connu aussi des framework propriétaire de mes employeurs qui encapsultait toutes ces notions de déploiement de DB MS ou Oracle ... donc toujours une méconnaissance de la config, et j'aimerais pouvoir disposer d'au moins la connaissance en paradox pour des applis freelance ...

    tient des pages intéressantes
    http://brouardf.club.fr/PdoxMulti.html
    http://www.developpez.net/forums/arc...hp/t-2090.html
    J'avais fait cela pour le NET DIR, mais je pense que le fait que mon application gardait ouvert les Tables et les modifier très souvent (toute les 250 une recherche, avec une insertion/modification, au bout de 500ms recevait une confirmation donc recherche/modification, puis selon la distance de circuit, on recevait la confirmation d'ejection encore une recherche/modification ... cela faisait bcp)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Paradox fonctionne en mode collaboratif. Les fichiers LCK et NET servent a renseigner les autres utilisateurs du travail en cours : verrou sur une table, sur une ligne d'une table, etc.
    Donc effectivement le serveur n'est qu'un simple serveur de fichier d'ou la possibilité de mettre par exemple un serveur Samba.
    Avantage du produit : gestion du modèle relationnel, intégrité référentielle, utilisation possible d'un curseur pour se déplacer sur une table pour afficher les résultats par groupe ( bien pratique avec Delphi.net)
    Inconvénients : pas de trigger ni de procédure stockée pour centraliser certains traitements.
    Rappelle toi le projet SETI une expérience scientifique de travail collaboratif en radio-astronomie exploitant la puissance inutilisée de millions d'ordinateurs connectés via Internet dans un projet de Recherche d'une Intelligence Extra-Terrestre (Search for Extra-Terrestrial Intelligence, alias SETI).
    NB - Je tiens à la disposition de la communauté un certain nombre d'outils développés en Delphi relatifs à Paradox

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    SETI, oui, j'avais un pote qui l'avait installé en économiseur d'écran ... c'est connu, tu ne vas pas me sortir qu'il y a du Paradox derrière ?

    En tout cas, si tu as des astuces pour améliorer performances et stabilité du BDE sur des Tables Paradox, pour 100 users, cela m'intéresse, et je pense que cela intéresse surtout looping, ...

    Juste une précision, 100 Utilisateurs en simultané sur une table de 2 Millions d'enregistrements, les temps de lecture et écriture sont de combien ? j'ai observé plusieurs secondes en générales ... ce qui pour un automate qui veut des temps proche de 10ms pour chaque opération au maximum (oui ce n'était pas la seule table a subir des modifications très régulières) et sinon, certains clients que j'ai eu dans les entrepots n'ont pas spécialement envie d'attendre 5s leurs écrans (du moins les chefs, les vrais users, n'avaient pas leur mot à dire, dommage)

    Sinon, combien de fois, j'ai eu les index cassés, bon facile suffisait de supprimer les fichiers et recrés les index par programmation, avec une perte de quelques enrecs car certains ne se retrouvaient que via l'index et non pas en direct dans le fichier DB.

    Faudrait que je demande à mon collègue qui s'était dévoué à la DB durant ces projets, pour me rappeler nos soucis de l'époque et si le NET DIR avait bien été géré, lol, si cela se trouve on s'est galéré avec IB par la suite pour rien !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut réponse
    bonjour,
    merci pour les réponses

    en fait ce que je ne comprends pas c'est que ca fonctionne bien avec 1 utilisateur mais pas avec 2 ?

    est ce que dans mon code source je peux améliorer ce problème ?

    (je ne souhaite pas pour l'instant passer à des solutions client /serveur vu que mes bases sont pas trop grosses 3-4 méga et que le nombre de personnes connectées sera de l'ordre de 5 maxi)

    salutations

  8. #8
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Tu partages un répertoire en lecture écriture pour tous les utilisateurs auquel tu affectes une lettre : "W" par exemple
    Tu crées dans cette unité un dossier que tu appelles "net" par exemple.
    Tu dois affecter à "net dir" dans l'outil d'administration la valeur "W:\net".
    Net Dir est accessible dans l'outil d'administration par Configuration/pilotes/natif/Paradox.
    Tu fais celà sur chacun des postes utilisateur.
    Cas particulier du poste que héberge la base : utiliser la fonction "Subst" du DOS plutôt que le partage réseau.
    Je peux préciser si besoin est.

    PS. au sujet de SETI je ne retenais que l'esprit de travail en collaboration et la répartition de la charge de travail sur les postes utilisateur et non sur le serveur.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut type de serveur
    bonjour,

    pour info, mon serveur est sous linux/samba; les postes étant sous XP pro

    A+

  10. #10
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Celà ne change rien au problème. Au contraire c'est une bonne solution en terme de temps de réponse. La configuration ne concerne que les postes clients. Il faut que tous les utilisateurs aient accès en lecture/écriture au serveur samba. Les nom de tables et répertoire doivent être alphanumérique sans accents ni espace et soit tout en minuscules soit tout en majuscules car samba tient compte de la casse pas MS-Windows et les développeurs Paradox n'ont pas tenu compte de cette spécificité.
    En utilisation courante et en cas de problème tu vas dans la fenêtre "Current User" de l'outil d'administration Samba et tu "kill" les utilisateurs. Tu supprimes les fichiers .Lck et .Net et l'appli redémarre sans problème.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut ca fonctionne
    salut
    merci à tous

    j'ai changé mes mes bases au format paradox et ca fonctionne !!
    C'était le format dbase qui posait problème.

    par contre une question:
    vu qu'il faut parametrer le "netdir" de paradox dans le bdeadmin , un meme utilisateur ne peut se connecter que sur une seule et unique base ?

    est ce que l'on peut contourner ce problème ?

    Amicalement

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Il peut se connecter sur plusieurs bases, mais la gestion du réseau se fait par un seul fichier que tous doivent utiliser lorsqu'il utilise cette base, donc pour chaque base tu dois avoir un fichier PDOXUSRS.NET ... voir Session.NetFileDir ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Un même utilisateur peut se connecter plusieurs fois en parallèle via plusieurs applications par contre chacune de ces applis doit si possible avoir un répertoire privé ( zone de stckage des tables temporaire) qui lui soit propre.

  14. #14
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 115
    Points
    115
    Par défaut
    Bonjour tous le monde
    je bien suivi votre discusion j'aimerer comprendre, dans le cas ou en suient bien ce que vous avait tracé. Esque vous sous entandé que lon peu s'empassé de développé une application Client/Serveur avec INTERBASE ou SGBD FireBird.
    et Esque on obtiendra aussi des performance plus ou moins acceptable.

    1-ce qui me tracace le plus est normalement dans un application à multi utilisateur qu'on un utilisateur Enregistre une information les autre utilisateur est le rafréchissement des donnés au même temps.
    2-ya aussi pour l'affectation des valeur des champ indexé qui peut me dire comment peuton gérer la succesion de ces valeur son qu'il est de violation de Clé Etc.

  15. #15
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Oui il est possible de créer une application Internet ou MS6Windows utilisable par de multiples utilisateurs et fonctionnant sur une base Paradox.

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

Discussions similaires

  1. L'avenir du BDE et des SQL Links révélé ! <officiel>
    Par Merlin dans le forum Bases de données
    Réponses: 12
    Dernier message: 02/06/2006, 10h18
  2. Pb BDE suite a passage en Windows 2000 pro
    Par ARIF dans le forum Paradox
    Réponses: 4
    Dernier message: 18/11/2002, 11h39
  3. BDE vs ODBC
    Par lucimast dans le forum Paradox
    Réponses: 3
    Dernier message: 08/08/2002, 22h20
  4. BDE : Configurer automatiquement le NETDIR
    Par Harry dans le forum Paradox
    Réponses: 10
    Dernier message: 29/07/2002, 11h33
  5. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50

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