Cette question concerne un Java JTree ou un arbre Windows .Net (Winforms) ou un arbre Adobe Flex.Le grand arbre: quand publier des données dans un RIA
Dans une application client-serveur (pour Flex c'est Web, vraiment), j'ai un arbre avec des données hiérarchiques (dans une interface de type Windows Explorer). En ce moment, je charge paresseusement l'arbre que l'utilisateur demande plus de données du serveur. C'est très bien et fonctionnera jusqu'à environ 750K nœuds (testés empiriquement sur .Net Winforms et Adobe Flex), mais après ça ça devient lent. Mais les bases de données se développent rapidement (surtout parce que les utilisateurs peuvent coller d'énormes quantités de nœuds) et une base de données de 20 millions de nœuds n'est pas du tout improbable.
Dois-je libérer des données de l'arborescence lorsqu'une branche est réduite afin que le Garbage Collector puisse libérer la mémoire? C'est bien, mais que faire si les utilisateurs ne sont pas efficaces et ne réduisent pas les branches? Devrais-je faire un module de gestion de la mémoire qui consiste à fermer des branches qui n'ont pas été touchées depuis un moment?
Tout cela semble beaucoup de travail afin de ne pas manquer de mémoire.
Editer: Dois-je publier des données sur l'effondrement d'un noeud? Si oui, quand? L'idée de cache d'objets faibles est bonne, mais devrais-je juste continuer à remplir l'interface utilisateur jusqu'à ce qu'elle bute (ce n'est peut-être pas une mauvaise idée)?
Point intéressant. D'un autre côté, je pense à des structures non arborescentes qui pourraient fonctionner. Travailler sur PHP récemment dans Eclipse m'a convaincu que la structure de l'arbre elle-même est assez agaçante pour un grand nombre de nœuds. –
D'accord, mais ma question restante est SI je devrais libérer des données sur l'effondrement du nœud. –