captain_torche Posté 7 Septembre 2007 Posté 7 Septembre 2007 Bonjour, J'ai une structure de table assez simple : chaque page possède un id, et l'id de la page parent. Je peux donc avoir une architecture hiérarchique étendue. Pour la création d'un "fil d'ariane", j'aimerais, de la manière la plus simple possible pouvoir retourner, depuis un ID donné, tous les éléments parents jusqu'à la racine. Est-ce possible en une seule requête ?
Portekoi Posté 7 Septembre 2007 Posté 7 Septembre 2007 C'est pas encore possible Sous Oracle oui grâve à "CONNECT BY PRIOR". Cette fonctione devrait voir le jour prochainement sous Mysql ( http://dev.mysql.com/doc/refman/5.0/fr/todo-future.html ) Sinon tu peux le faire en PHP : http://touv.ouvaton.org/spip.php?article8
captain_torche Posté 7 Septembre 2007 Auteur Posté 7 Septembre 2007 Ok, merci de ta rapidité, je vais m'orienter dessus
Portekoi Posté 7 Septembre 2007 Posté 7 Septembre 2007 Et si tu veux développer l'arbo "au click", j'ai un bout de code chez moi Résultat ici : http://kit.portekoi.com/
TheRec Posté 7 Septembre 2007 Posté 7 Septembre 2007 Avec une arborescence par adjacence, sans utiliser la récursivité (ce qui implique en l'occurrence plus d'une requête) ce n'est pas possible. À moins de stocker une information supplémentaire pour la page représentant l'arborsence (c'est ce qu'on appelle un chemin matérialisé, du genre "1.1.3", l'ordre des ID correspondant à la hiérarchie). Par contre avec une arborescence avec un parcours prédéfini (par exemple Nested Sets), en une seule requête tu peux obtenir cette information. J'avais écrit un article au sujet des Nested Sets (il me semble l'avoir déjà cité ici). L'avantage de cette solution et la rapidité d'accès, par contre les modifications de la structure prennent plus de temps (plus la structure est grande, car il faut mettre é jour tous les noeuds en aval).
Portekoi Posté 7 Septembre 2007 Posté 7 Septembre 2007 Quel est le rapport entre une requête récursive et le cache? Et le cache de quoi d'ailleurs? Peux tu "étayer" ta réponse?
JulienCoquet Posté 7 Septembre 2007 Posté 7 Septembre 2007 sur de gros volumes de relations hierarchiques, on a généralement intérêt à faire appel a un fichier cache pour éviter de faire tourner la requete à chaque fois, surtout si la récursivité de la chose fait que de nombreuses requêtes sont éxécutées... donc en gros, on peut générer un arbre sous forme de fichier texte ou XML qui peut être traité de façon plus souple que d'éxécuter la requête à chaque fois. çà répond à la question?
Portekoi Posté 7 Septembre 2007 Posté 7 Septembre 2007 Le problème n'est pas le moyen mais le fais justement de "générer" l'arbre en lui même
captain_torche Posté 7 Septembre 2007 Auteur Posté 7 Septembre 2007 Et un système de cache pour gérer un simple fil d'ariane, c'est un peu sortir un bazooka pour achever un moustique
JulienCoquet Posté 7 Septembre 2007 Posté 7 Septembre 2007 Et un système de cache pour gérer un simple fil d'ariane, c'est un peu sortir un bazooka pour achever un moustique je travaille avec des bases de données qui pèsent jusqu'à 4Go; chacun son truc, hein? Et pour Portekoi, j'essaie de prévoir ce qui va se passer pendant l'exploitation pour limiter les dégats
captain_torche Posté 7 Septembre 2007 Auteur Posté 7 Septembre 2007 Pour info, la page est tout de même cachée, après que tout son contenu soit généré (en incluant le fil d'ariane). Mettre le cache juste pour le fil d'ariane, aurait été un peu disproportionné.
Portekoi Posté 7 Septembre 2007 Posté 7 Septembre 2007 je travaille avec des bases de données qui pèsent jusqu'à 4Go; chacun son truc, hein? Et pour Portekoi, j'essaie de prévoir ce qui va se passer pendant l'exploitation pour limiter les dégats Cela ne veut rien dire. J'ai bossé pour Renault et 4 Go, c'est rien. C'est pas pour autant que je m'en vante, chacun son truc
JulienCoquet Posté 7 Septembre 2007 Posté 7 Septembre 2007 le but n'étant pas de me vanter (désolé si c'est comme çà que c'est sorti ) mais d'illustrer que ce genre d'opérations récursives sont hyper consommatrices de ressources. voilà c'est tout
Portekoi Posté 7 Septembre 2007 Posté 7 Septembre 2007 Y a pas de soucis et tu as tout à fait raison de le souligner
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant