OVH Cloud OVH Cloud

Quel système de BD utiliser?

59 réponses
Avatar
Douns
Bonjour,

Je vous présente rapidement mon projet :
Je souhaite faire un programme qui recherche une string dans une liste de
quelques dizaines de miliers de string.

Pour l'instant, ces strings sont stoquées à la suite (avec un caractère de
séparation) dans un fichier texte et elles sont chargé au début de mon prog
dans une listbox.
Cette listbox est ensuite parcouru avec une boucle for à chque fois qu'on le
souhaite.

Le problème c'est que cette liste peut-être parcouru assez souvent (de
l'ordre d'une fois par seconde) et le système de boucle Fopr est quand même
assez long!

L'idéal serait donc de créer une base de donnée. J'aimerais juste éviter le
système Access, car cela rajoute des fichiers très volumineux dans
l'installation et que je suis limité en taille d'installation.

Bref : Connaissez vous un moyen de faire une BD qui ne demande pas trop de
fichier d'installation supplémentaire?
Je ne sais pas si cela est faisable, mais je remercie ceux qui pourront
m'aider!

Douns

10 réponses

1 2 3 4 5
Avatar
[___FreGoLi___]
l'impertinent "Douns" a lissé echapé de son clavier :

Bonjour,

Je vous présente rapidement mon projet :
Je souhaite faire un programme qui recherche une string dans une liste de
quelques dizaines de miliers de string.

Pour l'instant, ces strings sont stoquées à la suite (avec un caractère de
séparation) dans un fichier texte et elles sont chargé au début de mon prog
dans une listbox.
Cette listbox est ensuite parcouru avec une boucle for à chque fois qu'on le
souhaite.

Le problème c'est que cette liste peut-être parcouru assez souvent (de
l'ordre d'une fois par seconde) et le système de boucle Fopr est quand même
assez long!

L'idéal serait donc de créer une base de donnée. J'aimerais juste éviter le
système Access, car cela rajoute des fichiers très volumineux dans
l'installation et que je suis limité en taille d'installation.

Bref : Connaissez vous un moyen de faire une BD qui ne demande pas trop de
fichier d'installation supplémentaire?
Je ne sais pas si cela est faisable, mais je remercie ceux qui pourront
m'aider!

Douns



Si le problème est le temps de réponse, je ne crois pas qu'une base de
données soit une solution car si tu penses à faire quelque chose du style
select * from MaTable where Zone likke "xyz"
pour trouver l'enregistrement, il faudra de toutes façons que le moteur de
la base fasse les comparaisons dans chaque enregistrement, et tu ajoutes une
couche en plus, sans compter les accès.

Tu peux aussi tout mettre à la queue leu leu dans une zone texte y compris
le délimiteur de champ (taille maxi 4 MO je pense) et utiliser directement la
fonction instr pour tourver le matching et puis la même pour récupérer le
champ complet en te basant sur les délimiteurs. Problème: on parcourt tout du
début à la fin pour trouver même si c'est avec une fonction interne donc
rapide. (tests à faire)
Avatar
Carrère Loïc
Je suis une fois de plus affigé de te lire. Quand tu né réponds pas à
côté du racontes n'importe quoi par l'affirmative...

Ce n'est pas moi qui avait fait l'applie FoxPro, je l'utilisais simplement...


Ca je n'en doute pas!
Ca m'explique l'état de fait que tu ne sembles pas être au courant que
visual foxpro est un environnement de programmation.
Me concernant, je ne fais que de la programmation, je fais mes bases
moi-même, je ne bidouille jamais avec des bases de données


Et quand tu as des millions d'informations relationnelles à stocker tu
fais comment ?
"Bidouilles" ??? Tu n'as pas l'impression d'inverser les rôles là ??
Pour info y'a de nombreux DESS et certificats accés sur la conception
de bases de données via des SGBD comme oracle ou sqlserveur. Tu oses
dire que ça c'est de la bidouille et qu'il vaut mieux se faire son
système sois-même ?? La vache t'es vachement fort!
D'un côté je comprends que tu en ais jamais eu besoin dans la mesure où
je ne vois pas comment on oserait te confier la gestion de gros flux de
données.
comme Excel ou Word, ce n'est pas portable, trop de problèmes, faut sans
cesse mettre à jour...


Comparer Excel ou World à des environnement de développement... Ceux
qui ont un minimum de culture informatique comprendront que je ne sais
même pas par où commencer ma réponse... Mais bon sang que viennent
foutre Word et Excel dans cette conversation... Autant parler de ton
désherbant préféré...
Mais bon, toi tu fais des applications, moi des logiciels


Je ne veux surtout pas me mettre en avant ni exposer mes compétences
sur ce forum mais pour ton information je supervise et développe des
suites de logiciels de GEIDE qui sont vendus à des comptes comme
Motorola France Telecom Airbus à plus de 10 k¤ ... Ce sont des projets
qui demandent des semaines voir des mois d'analyse afin de respecter
les règles métiers ainsi que les normes et conventions régient par des
organismes tels que l'Afnor.
Je te trouve d'une extrème prétention! Quand on voit tes inutiles
"logiciels" à 15¤ exposés par dixaine sur ton site on ne peut plus
moche, on comprend très vite don degré de compétence... Le bouquet ce
sont les 1000 images poprnographiques pour 15 ou 25¤ dans la même
rubrique :-?
Alors par pitié ne juge pas mon travail que tu es à 1000 lieux de
connaître...

j'ai besoin que ce soit portable (sous Windows avec le Run évidemment, ou
tout inclus à l'exe)...



Pour ton info la solution que j'ai préconisé fonctionne sur tout OS
microsoft postérieur à Windows 95 inclu. Un copier/coller suffit pour
faire tourner la solution. Pas d'odbc à installer ni se serveur si on
ne le souhaite pas. C'est un peu la même philosophie que les
environnement .NET sauf que ça existe depuis de nombreuses années.

--
http://www.gdpicture.com
http://www.gdpicture.com
Avatar
Carrère Loïc
Son choix devra dépendre de la quantité d'informations à stocker.

Si le problème est le temps de réponse, je ne crois pas qu'une base de
données soit une solution car si tu penses à faire quelque chose du style
select * from MaTable where Zone likke "xyz"
pour trouver l'enregistrement, il faudra de toutes façons que le moteur de
la base fasse les comparaisons dans chaque enregistrement, et tu ajoutes une
couche en plus, sans compter les accès.


Non les moteurs de bdd sont bien plus avancés que ça. un index sur le
champ Zone pour reprendre ton exemple fera en sorte que la requête sera
quasi instantanné sur certain sgbd.
La couche en plus c'est rien du tout tout comme les accès.

--
http://www.gdpicture.com
http://www.gdpicture.com
Avatar
LE TROLL
Ah, si je puis me permettre, je pense de même, je
pense comme toi, la base de donnée n'est pas le plus rapide,
ni le moins gros, ni le plus portable... C'est surtout utile
pour ceux qui n'ont pas envie de programmer, ou qui ne
savent pas :o)
Bon, ici c'est pas le cas, les gens savent développer, mais
on pense trop peu aux fichiers, qui bien agencés avec des
recherches pertinentes, sont "plus mieux" que les bases,
faite à l'origine comme le VBa, pour ceux qui voulait faire
sans savoir... On peut à la rigueur imaginer une gigantesque
entreprise qui mettrait de titanesques données dans un base,
tout au plus...
Conclusions : A mort les bases de données, lol :o)
-------------


"[___FreGoLi___]" a
écrit dans le message de news:

l'impertinent "Douns" a lissé echapé de son clavier :

Bonjour,

Je vous présente rapidement mon projet :
Je souhaite faire un programme qui recherche une string
dans une liste de
quelques dizaines de miliers de string.

Pour l'instant, ces strings sont stoquées à la suite
(avec un caractère de
séparation) dans un fichier texte et elles sont chargé au
début de mon prog
dans une listbox.
Cette listbox est ensuite parcouru avec une boucle for à
chque fois qu'on le
souhaite.

Le problème c'est que cette liste peut-être parcouru
assez souvent (de
l'ordre d'une fois par seconde) et le système de boucle
Fopr est quand même
assez long!

L'idéal serait donc de créer une base de donnée.
J'aimerais juste éviter le
système Access, car cela rajoute des fichiers très
volumineux dans
l'installation et que je suis limité en taille
d'installation.

Bref : Connaissez vous un moyen de faire une BD qui ne
demande pas trop de
fichier d'installation supplémentaire?
Je ne sais pas si cela est faisable, mais je remercie
ceux qui pourront
m'aider!

Douns



Si le problème est le temps de réponse, je ne crois pas
qu'une base de
données soit une solution car si tu penses à faire quelque
chose du style
select * from MaTable where Zone likke "xyz"
pour trouver l'enregistrement, il faudra de toutes façons
que le moteur de
la base fasse les comparaisons dans chaque enregistrement,
et tu ajoutes une
couche en plus, sans compter les accès.

Tu peux aussi tout mettre à la queue leu leu dans une zone
texte y compris
le délimiteur de champ (taille maxi 4 MO je pense) et
utiliser directement la
fonction instr pour tourver le matching et puis la même
pour récupérer le
champ complet en te basant sur les délimiteurs. Problème:
on parcourt tout du
début à la fin pour trouver même si c'est avec une
fonction interne donc
rapide. (tests à faire)



Avatar
Christian Hubert-Hugoud
Salut,

Je ne pense pas qu'une BD soit adaptée dans ton cas. De toute façon, le
moteur fera plus de travail que tu ne le feras en code pur.

Ce qui me semble :

l'accès à une propriété d'objet (listbox) est très lent. Personnellement, je
stockerais toutes les strings dans un tableau de strings.

Ensuite, j'utiliserais instr sur chaque élément du tableau. Boucler sur le
tableau sera beaucoup plus rapide que de boucler sur une propriété d'objet.

Variante : une mahousse string (si c'est possible) qui comprend toutes les
styring à la queue leu leu. Avec un appel sur instr. Après quoi tu détectes
début et fin de la string concernée si instr a renvoyé quelque chose.

Hope this helps...

Christian

"Douns" a écrit dans le message de news:

Bonjour,

Je vous présente rapidement mon projet :
Je souhaite faire un programme qui recherche une string dans une liste de
quelques dizaines de miliers de string.

Pour l'instant, ces strings sont stoquées à la suite (avec un caractère de
séparation) dans un fichier texte et elles sont chargé au début de mon
prog
dans une listbox.
Cette listbox est ensuite parcouru avec une boucle for à chque fois qu'on
le
souhaite.

Le problème c'est que cette liste peut-être parcouru assez souvent (de
l'ordre d'une fois par seconde) et le système de boucle Fopr est quand
même
assez long!

L'idéal serait donc de créer une base de donnée. J'aimerais juste éviter
le
système Access, car cela rajoute des fichiers très volumineux dans
l'installation et que je suis limité en taille d'installation.

Bref : Connaissez vous un moyen de faire une BD qui ne demande pas trop de
fichier d'installation supplémentaire?
Je ne sais pas si cela est faisable, mais je remercie ceux qui pourront
m'aider!

Douns


Avatar
[___FreGoLi___]
Le valeureux Carrière Loic a tenté effectievement frappé avec les touches de
son clavier

"Son choix devra dépendre de la quantité d'informations à stocker.

Si le problème est le temps de réponse, je ne crois pas qu'une base de
données soit une solution car si tu penses à faire quelque chose du style
select * from MaTable where Zone likke "xyz"
pour trouver l'enregistrement, il faudra de toutes façons que le moteur de
la base fasse les comparaisons dans chaque enregistrement, et tu ajoutes une
couche en plus, sans compter les accès.


Non les moteurs de bdd sont bien plus avancés que ça. un index sur le
champ Zone pour reprendre ton exemple fera en sorte que la requête sera
quasi instantanné sur certain sgbd.
La couche en plus c'est rien du tout tout comme les accès.

--
http://www.gdpicture.com
http://www.gdpicture.com

"


Hélas,

Sa recherche porte sur une portion du champ et non sur le champ en entier
(sinon une recherche dichotomique en table aurait fait l'affaire sans
problème, voir une recherche avec hash coding beaucoup plus rapide qu'une
recherche par moteur de base de donnée).
Donc il n'y a pas d'utilisation d'index possible (recherche "toto" dans
"tatatototiti" qui n'est qu'un enregistrement parmi des milliers dixit douns).
Autrement dit le moteur de BDD sera obligé de prendre tous les
enregistrements pour regarder si la chaîne est contenue dedans. Il ne peut
rien optimiser.
Avatar
Loïc
[___FreGoLi___] a émis l'idée suivante :
sur une portion du champ et non sur le champ



Autant pour moi Fre.

Par conter j'ai fait un petit test en foxpro (j'insiste avec ça :) mais
je ne vous en reparle plus après c'est promis ).

J'ai une table tbtest composée d'un champ champ1 de type caractères sur
50 positions.
J'ai rempli 1 000 000 d'enregistrements avec des chaines de caractères
aléatoires.
J'ai effectué la requête suivante:

SELECT * from tbtest WHERE tbtest.champ1 like "%KZ"


J'obtiens 750 enregistrements en 0.55 secondes avec un P4 2 gigas et
256 megas de ram.

Je doute qu'une implémentation vb maison faite maison marche mieux...

--
Loïc
Avatar
LE TROLL
Ah l'ami, comme c'est étrange, je n'avais pas
souvenir de t'avoir écrit, tu reprends donc ce que j'ai
écrit, ok, je réponds:

-1- Je schématisais le développeur typique, les graphiques,
paf, un petit coup par Excel, un peu de texte, et vlan dans
Word, un zest à enregistrer, qu'à cela ne tienne, une base
de donnée...
Désolé, ça ce n'est pas de la programmation, c'est du
paramétrage, ça ne veut pas dire que ceux qui font ça ne
savent pas programmer, ça veut dire qu'ils font du
paramétrage, ils définissent des paramètres d'un bout à
l'autre pour faire tourner une application hybride qui
dépend de moult autres applications...
Cette tendance là je l'a réfute, et je ne suis pas le seul
(certaines discussions par email), les développeur
deviennent peu à peu des paramétreurs...

-2- Ça c'était l'introduction, je poursuis pour que tu ne
dises pas que j'utilise la langue de bois:

-3- Concernant mes 1000 photos pornos, c'est à 15 Euros,
j'espère que tu les a acheté, tu sais (entre nous), elle
sont bandantes, lol

-4- Ben si j'utilisais VFP c'est donc que j'utilisais une
application, j'ai pu donc en déduire qu'on pouvait
développer, avec un penchant pour le paramétrage, mais c'est
lent (à moins que ça ait changé, moi j'étais sous nt3), car
ce n'est pas compilé mais interprété, tout est dit!

-5- Au risque de te déplaire, tes 1.000.000 de données
relationnelles, avant les bases de données performantes, on
faisait ça avec des fichiers et ça fonctionnait très bien!

-6- Ceci étant dit, je concède, et uniquement dans ce cas,
que si un groupe important veut avoir accès à d'innombrables
données (relationnelles ou pas), la BDD peut être un bonne
solution, il n'en ressort pas moins que je ne mets pas en
doute tes capacités de développeur, mais que quand tu fais
ta base de donnée, tu ne développes pas, tu paramètres!

-7- DESS dis-tu, je crois que ça n'existe pas, si tu veux
dire "diplôme d'étude supérieures spécialisées", ça
s'appelle un "Master" :o)
Eh oui que les bases de données s'apprennent, car il y a
même des algorithmes costauds à faire parfois, je ne nie
pas, mais tous n'ont pas un Master. Avec un bouquin et
Access, n'importe quel particulier avec un minimum de QI te
fait une BDD, certes les requêtes seront pauvres, d'où
l'appellation de paramétrage...

-8- Le k Euro n'existe pas, on dit 1000 euros :o) Oh, là je
vais te mettre en boule...

-9- Un gros flux de données, comme si c'était une référence,
à partir du moment où la BDD fonctionne pour 10
enregistrements, elle fonctionnent pour 1.000.000, c'est la
même chose, si ce n'est qu'il faut gérer les dépassement de
capacité et les stockages, les temps divers, certes...

-10- Mais non d'un chien, une BDD c'est un tas de fichier,
plus ou moins indexé entre eux, c'est comme le disait l'ami
plus haut, une surcouche aux fichiers, ça va de facto moins
vite...
J'ai commencé avec des fichiers, jusqu'à 100.000
enregistrement (morcelés par spécification), en multi-tâche
et postes (sous OS Prologue-Bull-France), je peux te dire
que ça marchait du tonnerre sans BDD.

-11- Je dis donc, je persiste à dire, qu'un BDD c'est
l'atrophie à courte échéance de la programmation, et c'est
du paramétrage, ce qui pour ta gouverne n'enlève pas tes
compétences. Un mécanicien peut très bien changer une roue,
c'est pas pour autant qu'il devient un changeur de roues
speedy, non, il reste mécanicien.
Alors à aucun moment je n'ai mis en doute tes compétences
(celle que tu dis avoir), mais comme tu critiques mes
logiciels, dont certains sont relativement prisés, ben je ne
peux que te retourner le compliment, tu n'es pour moi qu'un
vulgaire paramétreur, qui paramètres des question pour
l'interface utilisateur (requêtes), et te contentes de vomir
un tas de donnée dans la base, etc...

-12- D'ailleurs la vraie base se fait en accès direct au
disque, on pointe en ASM l'adresse du contenu physique, ça
va encore plus vite qu'un fichier, mais ça j'ai oublié, ça
fait 25 ans...

-13- Une question, les fichiers ça sert à quoi???

-14- J'utilise comme chacun des BDD, ben je peux te dire que
c'est loin d'être aussi rapide qu'un fichier, ça mouline
furieusement avant, peut être est-ce du aux mauvaise
requêtes du paramétreur, lol ?

-15- Si j'ai oublié quelque chose, tu me dis hein.
Bon, c'est mon point de vue, un fichier est plus portable,
plus petit, plus indépendant et va plus vite qu'un base de
données (s'il est bien manié et bien fait), donc "moi" je
programme, je fais tout manuellement, c'est mon choix, ma
façon de penser, ma position, et ça marche, j'ai donc le
droit d'avoir cette position et de l'indiquer aux autres, de
la défendre.

-16- Certes tu as peut être été vexé par le mot bidouille
que j'ai employé, je faisais en fait surtout allusion à ce
que j'ai décrit au début, les paramétreur pro qui ne savent
pas programmer, j'aurais pu pour ce mot m'excuser, mais
comme tu as attaqué mes logiciels, ben je ne retire rien!

Mais je t'embrasse l'ami :o)
-----------


"Carrère Loïc" a écrit dans le
message de news:
Je suis une fois de plus affigé de te lire. Quand tu né
réponds pas à côté du racontes n'importe quoi par
l'affirmative...

Ce n'est pas moi qui avait fait l'applie FoxPro, je
l'utilisais simplement...


Ca je n'en doute pas!
Ca m'explique l'état de fait que tu ne sembles pas être au
courant que visual foxpro est un environnement de
programmation.
Me concernant, je ne fais que de la programmation, je
fais mes bases moi-même, je ne bidouille jamais avec des
bases de données


Et quand tu as des millions d'informations relationnelles
à stocker tu fais comment ?
"Bidouilles" ??? Tu n'as pas l'impression d'inverser les
rôles là ?? Pour info y'a de nombreux DESS et certificats
accés sur la conception de bases de données via des SGBD
comme oracle ou sqlserveur. Tu oses dire que ça c'est de
la bidouille et qu'il vaut mieux se faire son système
sois-même ?? La vache t'es vachement fort!
D'un côté je comprends que tu en ais jamais eu besoin dans
la mesure où je ne vois pas comment on oserait te confier
la gestion de gros flux de données.
comme Excel ou Word, ce n'est pas portable, trop de
problèmes, faut sans cesse mettre à jour...


Comparer Excel ou World à des environnement de
développement... Ceux qui ont un minimum de culture
informatique comprendront que je ne sais même pas par où
commencer ma réponse... Mais bon sang que viennent foutre
Word et Excel dans cette conversation... Autant parler de
ton désherbant préféré...
Mais bon, toi tu fais des applications, moi des logiciels


Je ne veux surtout pas me mettre en avant ni exposer mes
compétences sur ce forum mais pour ton information je
supervise et développe des suites de logiciels de GEIDE
qui sont vendus à des comptes comme Motorola France
Telecom Airbus à plus de 10 k¤ ... Ce sont des projets qui
demandent des semaines voir des mois d'analyse afin de
respecter les règles métiers ainsi que les normes et
conventions régient par des organismes tels que l'Afnor.
Je te trouve d'une extrème prétention! Quand on voit tes
inutiles "logiciels" à 15¤ exposés par dixaine sur ton
site on ne peut plus moche, on comprend très vite don
degré de compétence... Le bouquet ce sont les 1000 images
poprnographiques pour 15 ou 25¤ dans la même rubrique :-?
Alors par pitié ne juge pas mon travail que tu es à 1000
lieux de connaître...

j'ai besoin que ce soit portable (sous Windows avec le
Run évidemment, ou tout inclus à l'exe)...



Pour ton info la solution que j'ai préconisé fonctionne
sur tout OS microsoft postérieur à Windows 95 inclu. Un
copier/coller suffit pour faire tourner la solution. Pas
d'odbc à installer ni se serveur si on ne le souhaite pas.
C'est un peu la même philosophie que les environnement
.NET sauf que ça existe depuis de nombreuses années.

--
http://www.gdpicture.com
http://www.gdpicture.com




Avatar
LE TROLL
L'indexation, lol, oui, ça va plus vite une fois que c'est
indexé la BDD, mais ça met combien de temps pour l'indexer,
et combien à chaque modif du fichier ???
------------

"Carrère Loïc" a écrit dans le
message de news:
Son choix devra dépendre de la quantité d'informations à
stocker.

Si le problème est le temps de réponse, je ne crois pas
qu'une base de données soit une solution car si tu penses
à faire quelque chose du style
select * from MaTable where Zone likke "xyz"
pour trouver l'enregistrement, il faudra de toutes façons
que le moteur de la base fasse les comparaisons dans
chaque enregistrement, et tu ajoutes une couche en plus,
sans compter les accès.


Non les moteurs de bdd sont bien plus avancés que ça. un
index sur le champ Zone pour reprendre ton exemple fera en
sorte que la requête sera quasi instantanné sur certain
sgbd.
La couche en plus c'est rien du tout tout comme les accès.

--
http://www.gdpicture.com
http://www.gdpicture.com




Avatar
LE TROLL
C'est relatif, rajoute de temps d'indexation et de
réindexation, car tu peux aussi avec les fichier, créer un
fichier index et indexer tes fichiers data...
-------------

"Loïc" a écrit dans le message de news:

[___FreGoLi___] a émis l'idée suivante :
sur une portion du champ et non sur le champ



Autant pour moi Fre.

Par conter j'ai fait un petit test en foxpro (j'insiste
avec ça :) mais je ne vous en reparle plus après c'est
promis ).

J'ai une table tbtest composée d'un champ champ1 de type
caractères sur 50 positions.
J'ai rempli 1 000 000 d'enregistrements avec des chaines
de caractères aléatoires.
J'ai effectué la requête suivante:

SELECT * from tbtest WHERE tbtest.champ1 like "%KZ"


J'obtiens 750 enregistrements en 0.55 secondes avec un P4
2 gigas et 256 megas de ram.

Je doute qu'une implémentation vb maison faite maison
marche mieux...

--
Loïc



1 2 3 4 5