Aller au contenu

Sujets conseillés

Posté

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 ?

Posté

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).

Posté

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?

Posté

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?

Posté
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 ;)

Posté

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é.

Posté
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 ;)

Posté

le but n'étant pas de me vanter (désolé si c'est comme çà que c'est sorti :blushing: ) mais d'illustrer que ce genre d'opérations récursives sont hyper consommatrices de ressources.

voilà c'est tout :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...