Page 1 sur 1

format pour manipulation et stockage de données

Publié : mer. 02/juin/2010 15:18
par cowpowah
Bonjour,

Je viens de decouvrir PureBasic (et accessoirement la programation :mrgreen: ), je voudrais faire un petit programme mais qui doit jongler avec beaucoups de données (plusieurs miliers, voir dizaines de miliers) de type coordonnée datée (x, y, date, plus peut-être 1 ou 2 valeurs).

Pouvez-vous m'aider a choisir la meilleure façon de les stocker? (BDD, fichier txt, preference, ou autre...?) Je cherche a avoir un fichier de données de taille raisonnable, et pouvoir accéder à une donnée precise (ou groupe de données) le plus rapidement possible.

Je suppose que la façon de traiter les données depend un peu de la façon dont elles sont stockées. A priori, l'ideal c'est la base de données, mais avec par exemple 20 000 entrées, est-ce que ça reste acceptable niveau rapidité d'utilisation, utilisation des ressources systeme et taille de la BDD?

Merci :)

Re: format pour manipulation et stockage de données

Publié : mer. 02/juin/2010 15:27
par Geo Trouvpatou
Salut.

Dans la doc, regarde la lib Map et LinkedList.
Par contre pour la question dans quoi stocker tout ça, je ne fait pas partie des gens qui ont déjà dû stocker énormément de données, alors peut-être que d'autres pourront mieux te répondre.

Bye.

Re: format pour manipulation et stockage de données

Publié : mer. 02/juin/2010 15:42
par gnozal
Pour la base de données, jette un coup d'oeil du côté de SQLite, qui est supporté par la librairie Database de Purebasic.

Re: format pour manipulation et stockage de données

Publié : mer. 02/juin/2010 17:14
par cowpowah
En regardant Map, je suis tombé sur Structure. A priori c'est exactement ce que je cherchais.

c'est possible de charger un fichier ASCII formaté dans une structure et de s'en servir comme une BDD virtuelle?

Re: format pour manipulation et stockage de données

Publié : mer. 02/juin/2010 17:21
par G-Rom
oui , tu peut.
regarde du coté de ReadFile()

Re: format pour manipulation et stockage de données

Publié : mer. 02/juin/2010 19:10
par Cls
Salut !

Il n'y aura jamais mieux que les bases de données (comme leurs noms l'indiquent, elles sont faites pour ça...). Si tu débutes, prend dès à présent l'habitude de les utiliser.

Maintenant pour des besoins ponctuels simples (sans relation entre les données), tu peux utiliser des fichiers plats.

Bon courage.

Re: format pour manipulation et stockage de données

Publié : jeu. 03/juin/2010 1:20
par cowpowah
J'ai essayé de jouer avec les bases de données mais la je bloque:

Code : Tout sélectionner

xdecs$=StrD(xdec)
ydecs$=StrD(ydec)
DatabaseUpdate(#BDD, "INSERT INTO table (x, y) VALUES ('"+xdecs+"', '"+ydecs+"')")
il me dit: "peut pas mixer des Strings avec des valeurs numeriques" 8O

edit: ça fonctionne comme ça

Code : Tout sélectionner

DatabaseUpdate(#BDD, "INSERT INTO table (x, y) VALUES ('"+xdecs$+"', '"+ydecs$+"')")
:|

Re: format pour manipulation et stockage de données

Publié : jeu. 03/juin/2010 5:34
par venom
salut,

si tu souhaite mixer les strings et les valeurs numérique tu peut par exemple renvoyer la valeur numérique en string avec la fonction Str()
si j'ai bien compris :) donc sa reviens a ceci :

Code : Tout sélectionner

DatabaseUpdate(#BDD, "INSERT INTO table (x, y) VALUES ('"+xdecs$+"', '"+ydecs$+"')")






@++

Re: format pour manipulation et stockage de données

Publié : sam. 05/juin/2010 2:19
par cowpowah
Hello,

Encore un petit soucis:

Code : Tout sélectionner

purgebdd.s=Str(Date()-3600)
DatabaseUpdate(#BDD, "DELETE FROM table WHERE date < '"+purgebdd$+"'")
(Je stocke la date en timestamp dans la base de donnée, la colonne "date" est du type UNSIGNEDINT, et ce code arrive juste après un FinishDatabaseQuery(#BDD))

Et il m'efface toute la base! :?

Je vois pas ce qui cloche... :|

Re: format pour manipulation et stockage de données

Publié : sam. 05/juin/2010 2:54
par Geo Trouvpatou
Salut.

Tapes cela :

Code : Tout sélectionner

purgebdd.s = Str(Date()-3600)

Debug "purgebdd$ vaut : "+ purgebdd$
Debug "purgebdd vaut : "+ purgebdd
Dans la doc dans la rubrique : Variables, Types et Opérateurs -> Section : Notation des variables chaîne de caractères il est écrit : De cette façon vous pouvez utiliser 'a$' et 'a.s' , ce sont deux variables différentes.

Pour ma part, je préfère utiliser : "purgebdd$" parce que dans 6 mois si tu ré-ouvres ton code de 3000 lignes et qu'en plein milieu tu vois "purgebdd$", tu sais que tu as affaire à une variable qui contient une chaine, alors que si tu mets "purgebdd.s" par la suite tu es obligé de mettre "purgebdd" donc en plein milieu de ton programme, tu ne sais plus forcement si la variable contient un entier ou une chaine et tu es obligé de rechercher à droite à gauche ce que contient "purgebdd"
Maintenant c'est un choix personnel.

Au passage, prend l'habitude de mettre en haut de ton code "EnableExplicit"
Parce qu'en mettant ce code :

Code : Tout sélectionner

EnableExplicit

purgebdd.s = Str(Date()-3600)

Debug "purgebdd$ vaut : "+ purgebdd$
Tu te serais plus vite fait aperçu de ton erreur.

Bye.

Re: format pour manipulation et stockage de données

Publié : sam. 05/juin/2010 3:19
par cowpowah
8O
pourtant je l'ai potassé la page des variables... :oops:

bein du coup ça explique aussi ma question précédente! :idea: :mrgreen:

Merci beaucoup Geo!! :D je prend bonne note aussi de ton conseil sur les explicit :wink: