Enregistrer un graphe dans une base... - SQL/NoSQL - Programmation
Marsh Posté le 29-03-2003 à 12:31:56
Les graphs c'est un peu loin derrière moi, et habituellement, je me base sur des applications physiques pour modéliser mes bases et alogs, par sur des concepts mathématiques qui m'embrouillent.
Donc si tu pouvais poster un petit exemple, ou une appplication physique pour qu'on puisse mieu se représenter ton problème, ça pourrait certainement nous aider...
Bon, ton histoire de ligne avec variations me fait bêtement penser à une évolution d'une valeur dans le temps, comme le cours de la bourse par exemple.
-> Si les points sont répartis de façon homogène selon X, et que chaque point n'est connecté qu'aux points ayant la valeur précédente et suivante de X, alors il suffit que tu stockes ton graphe dans une table ne reprennant comme clé les couples X,Y et la valeur associée s'il y en a une.
Pour les requêtes, tu pourras sans problème te baser sur les fonctions statistiques telles que éccart type ou autres, ce sera très rapide, et tu n'aura pas de perte de place.
-> Si les points forment un nuage, c'est plus chiant. Tu stockes de la même façon, mais avec un ID en plus, et une seconde table qui va stocker les liaisons entre les points. A priori, là tu devrait pouvoir t'en sortir de la même façon. A savoir que sous Oracle il y a une instruction "conect by" qui permet de suivre un cheminement père/fils, qui pourrait te venir en aide lors de l'interrogation. Je ne sais pas s'il y a un équivalent sous MySQL.
-> Si non seulement les points mais aussi les segments sont pondérés, alors il faudra stocker les pondérations des segments en plus.
Exemple des deux structures :
Code :
|
Voilà, j'espère que ça pourra t'être utile, mais vu que je vois pas ce qu'est ton graph, et encore moins ce que tu veux en faire, je peux pas t'aider plus.
Marsh Posté le 30-03-2003 à 22:01:14
Mon graphe est une mesure dans le temps ( donc c'est lineaire et j'ai qu'a les relier )
Mes donnees sont du type :
|
Le Y ne variant pas enormement, et le X est pour l'instant fixe ( donc pas la peine de l'enregistrer ).
Pour l'instant, j'enregistre mon graphe sous la forme :
2.2|2.3|2.1|2.1|...
Et je me demandais si il y avait plus pratique, car comme j'ai 5 courbes chacunes faites de 40 mesures, je tape le Ko dans la base et c'est beaucoup trop
Marsh Posté le 30-03-2003 à 23:17:31
Non non, utilise mon premier système.
1) Enregistre X, car pour certains calculs il te sera utile.
2) Fait une ligne par mesure, comme ça tu peux faire la plupart des calculs directement dans la base, ce qui sera bien plus rapide que tout récupérer à chaque fois, spliter dans un tableau, et traîter en PHP ou autre.
3) Ajoute un champs pour stocker l'ID de la courbe.
Genre :
Code :
|
Marsh Posté le 29-03-2003 à 06:58:48
Hello tous !
J'ai besoin d'enregistrer un graphe dans une base tournant sous un MySQL.
Le graphe se compose actuellement de 40 valeurs relevees a des espaces predefinis.
Ce graphe est principalement compose de variation minimes sur l'axe des y, et a beaucoup l'apparence d'une ligne droite augmentant un peu et baissant un peu.
Quel est la meilleure facon de l'enregistrer a votre humble avis ?
Tout d'abord le format. Pour l'instant, j'utilise une chaine de caractere avec | comme separateur, en limiutant les float au format 9.99 . Une meilleure idee ? Ca doit passer sous MySql
Ensuite, les mesures. Quelle est la facon la plus efficace d'enregistrer ce graphe ? Trouver des points de controle ? Chercher a quel endroit ca change enormement ?
Je vous remercie de toutes les idees que vous pourrez apporter =)
Pensez que l'espace est plus important que le temps de calcul dans mon cas, mais que les deux parametres se doivent de rester modestes quand meme Jre peux pas lacher des integrales et autres quoi