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

WinDev Discussion :

[WD24] Un projet test de performance bdd


Sujet :

WinDev

  1. #1
    Membre extrêmement actif
    [WD24] Un projet test de performance bdd
    Bonjour,

    Je voudrais réaliser un petit projet qui me permettrait de réaliser des tests de performances sur plusieurs moteurs de bases de données.

    L'idée serait de ne faire qu'un programme, qui, en fonction de paramètres de connexion, se connecterait à un serveur de données, sur une base de données.
    Les bases auraient exactement la même strucure, et les mêmes données.
    Je déterminerai un certain nombre de traitement, dont je mesurerai les temps afin de me donner une idée des performances de moteur.

    D'après vous, est-ce réalisable ? Avec une seule analyse ? Quel sont les risques ?

    Pour info, les moteurs que je pense comparer, sont : HFSQL C/S, MySQL et PostgreSQL.

    Merci de vos avis éclairés

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Membre confirmé
    C'est tout à fait possible mais attention car si on ne prend que MySQL, il y aura différents résultat pour un même traitement selon :
    - Si on utilise l'accès natif ou non (fonction H* ou SQL*)
    - Si on utilise une requete ou non (fonction HLit* ou HExecuteRequete ou HExecuteRequeteSQL(*, hRequeteDefaut,*) ou HExecuteRequeteSQL(*, hRequeteSansCorrection,*) ou SQLExec)

    Et pour l'ajout / modification des données on sera confronté aux mêmes différences si ce n'est que MySQL permet de réaliser des requête d'UPDATE plus complexe que HFC/S (requête d'UPDATE avec jointure).

    Et pour des traitements de calcul précédents une mise à jour de la base de données (typiquement des calculs nocturnes de statistiques remplissant une table Resultat), il y aura une différence entre un programme qui fera plusieurs requêtes au serveur de données et les calculs via le programme Windev ou un l'utilisation d'une procédure stockée qui fera les calculs et les écritures au sein même du SGBD.

    Le but est-il de comparer les différents SGBD pour en choisir un ou déterminer la meilleurs façon de programmer pour pouvoir utiliser indifféremment l'un ou l'autre de ces SGBD ?
    Si c'est la première raison jusqu'à quel point le développeur est prêt à modifier ces habitudes de codage pour optimiser ces traitements ?
    Si c'est la première raison jusqu'à quel point le développeur est-il prêt à éventuellement exceptionnellement s'autoriser des fonctionnements spécifique selon le SGBD ?

  3. #3
    Membre extrêmement actif
    Merci de ta réponse.

    Le but est de ne pas faire le mauvais choix. Le développeur (ce sera moi ) n'a pas d'apriori sur le choix de la base de données.

    Je dois redévelopper un ERP pour remplacer celui qui a été développé avec WinDev 5.5 et des bases DBF.

    Donc, avant de me lancer, je cherche à savoir quelle est le moteur de bases de données le plus à même de satisfaire aux besoins. Un des points qui revient, c'est la vitesse. Le confort du développeur vient après .

    Comme l'outil de développement sera WinDev 24, j'imagine que le moteur HFSQL C/S est le plus adapté, mais est-ce qu'en terme de performances, de maintenances et de traitements en procédures stockées. Il y aura, bien évidemment, des traitements qui se feront la nuit, périodiquement. Donc, il me faut déterminer lequel des ces moteurs est le plus adapté.

    Autre question, en parcourant le net, j'entends beaucoup parler de MaraDB. Est-ce vraiment une alternative possible et valable à MySQL ?
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Membre averti
    hchangeconnexion()

  5. #5
    Membre régulier
    bonjour,

    sans hésitation MySQL ou PostgreSQL couplé à SQLManagerX (http://www.sqlmanagerx.com/telechargez-sqlmanagerx)
    Cordialement JeAn-PhI

  6. #6
    Membre éprouvé
    Bonjour,

    Sans aucune hésitation, postgresql qui évolue bien et dans le bon sens. J'ai jamais été fan de MySQL qui n'est au final pas du tout un SGBD gratuit contrairement à ce que l'on pourrait penser.


    @JeAn-PhI
    sans hésitation MySQL ou PostgreSQL couplé à SQLManagerX (http://www.sqlmanagerx.com/telechargez-sqlmanagerx)
    Beau placement de produit. Je me souviens avoir voulu utiliser SQLManagerX il y a un peu plus de 10 ans et j'avais, à l'époque, trouvé ça lourd. Aujourd'hui je l'ai réessayé et je trouve que c'est graphiquement totalement old school, ce qui laisse à penser que ce qu'il y a derrière n'a pas du beaucoup évoluer.

    Le problème des surcouches c'est le temps de traitement. Les couches d'accès aux données de windev sont déjà relativement lentes. L'exécution des requêtes semble être plus ou moins cohérente, mais la lecture et le remplissage d'un tableau est tellement lent par rapport à d'autres langages que rajouter une couche comme SQLManagerX ou autre ne me semble pas être une bonne solution.

    C'est mon avis , il n'est que personnel et totalement subjectif. Peut-être que je trompe, mais je n'ai pas le courage de faire des tests...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  7. #7
    Membre régulier
    bonjour
    j'ai utilisé une classe par le passé de sqlmanagerx afin d'attaquer des bases firebird.
    Globalement cela fonctionnait bien.

    Je me pose la même question aujourd'hui avec un usage mixte (selon le choix du client) postgresql / sqlserver.
    Comment s'y connecter, avoir le même code, les bons usages et sans passer par les accès natifs de pcsoft.

  8. #8
    Membre régulier
    Citation Envoyé par philouZ Voir le message
    Bonjour,

    Sans aucune hésitation, postgresql qui évolue bien et dans le bon sens. J'ai jamais été fan de MySQL qui n'est au final pas du tout un SGBD gratuit contrairement à ce que l'on pourrait penser.


    @JeAn-PhI


    Beau placement de produit. Je me souviens avoir voulu utiliser SQLManagerX il y a un peu plus de 10 ans et j'avais, à l'époque, trouvé ça lourd. Aujourd'hui je l'ai réessayé et je trouve que c'est graphiquement totalement old school, ce qui laisse à penser que ce qu'il y a derrière n'a pas du beaucoup évoluer.

    Le problème des surcouches c'est le temps de traitement. Les couches d'accès aux données de windev sont déjà relativement lentes. L'exécution des requêtes semble être plus ou moins cohérente, mais la lecture et le remplissage d'un tableau est tellement lent par rapport à d'autres langages que rajouter une couche comme SQLManagerX ou autre ne me semble pas être une bonne solution.

    C'est mon avis , il n'est que personnel et totalement subjectif. Peut-être que je trompe, mais je n'ai pas le courage de faire des tests...
    Pour placer un produit il faut y avoir un intérêt (financier ou autre) hors je n'en ai aucun juste la satisfaction de son utilisation depuis plus de 10 ans, de plus c'est gratuit, concernant l'aspect graphique je ne vois pas le lien car ce sont des classes, le projet exemple ne sert que pour la prise en main et la mise en place du jeu de classes. les classes ont évolué quand cela a été nécessaire mais pas le projet exemple.
    ici cela n'utilise pas les couches d'accès aux données de windev mais une dll c++ pour implémenter la dll de mysql (libmysql.dll) donc pour moi cela me parait rapide, il ne s'agit pas ici de comparer à d'autres langage, la question concernait l'accès multibase avec windev donc une classe principale SQLManagerX pour uniformiser le code (remplace les fonction H de lecture/écriture/suppression pour accéder aux enreg de façon unitaire), une classe d'accès par base (permet de faire les requêtes) maintenant il est évident que je ne servirais pas de cela ni de windev d'ailleurs pour calculer une trajectoire de satellite.

    parcours de table par requête (lecture de chaque enreg sans affichage) :
    11 colonnes / 470 241 enreg : 11 sec
    154 colonnes / 116 852 enreg : 7 sec

    parcours de table par requête (lecture de chaque enreg avec affichage dans un champs table) :
    11 colonnes / 470 241 enreg : 21 sec
    154 colonnes / 116 852 enreg : 19 sec

    c'est suffisant pour moi et pour une appli de gestion en général
    Cordialement JeAn-PhI

  9. #9
    Membre éprouvé
    Je te rassure moi non plus je n'utiliserai pas Windev pour du scientifique. J'ai déjà du mal à l'utiliser pour afficher des stats pour les clients...

    parcours de table par requête (lecture de chaque enreg sans affichage) :
    11 colonnes / 470 241 enreg : 11 sec
    154 colonnes / 116 852 enreg : 7 sec

    parcours de table par requête (lecture de chaque enreg avec affichage dans un champs table) :
    11 colonnes / 470 241 enreg : 21 sec
    154 colonnes / 116 852 enreg : 19 sec
    Je dois avouer que c'est déjà beaucoup plus rapide que ce qu'est capable de faire PC Soft, ce qui est relativement grave étant donné qu'ils ont la main sur le code source et qu'ils développent en bas niveau.

    Cependant, à titre de comparaison, le parcours de 524 288 lignes avec remplissage d'un tableau en .NET prend moins de 2 secondes, soi plus de 11 fois plus rapide que SQLManagerX, quant à Windev il n'entre même pas dans la compétition. Le parcours simple des lignes prend à peine 500 ms.

    C'est là que Windev est mauvais à mon sens. Je trouve dommage que PC Soft n'ouvre pas les yeux et ne se mette pas à optimiser Windev...
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.