Большое дерево: когда публиковать данные в RIA

Этот вопрос касается Java JTree, Window .Net Tree (Winforms) или Adobe Flex Tree.

В клиент-серверном приложении (для Flex это на самом деле Web) у меня есть дерево с иерархическими данными (в интерфейсе типа Windows Explorer). Прямо сейчас я лениво загружаю дерево, поскольку пользователь запрашивает дополнительные данные с сервера. Это нормально и будет работать примерно до 750 тыс. Узлов (эмпирически протестировано на .Net Winforms и Adobe Flex), но после этого все становится медленно. Но базы данных быстро растут (в основном потому, что пользователи могут вставлять огромное количество узлов), и база данных из 20 миллионов узлов вовсе не является маловероятной.

Должен ли я освобождать данные из дерева, когда ветвь свернута, чтобы сборщик мусора мог освободить память? Это нормально, но что, если пользователи неэффективны и не сворачивают ветки? Должен ли я сделать модуль управления памятью, который закрывает ветки, которые давно не трогались?

Похоже, что все это требует большого количества работы, чтобы не исчерпать память.

Редактировать: Должен ли я публиковать данные о коллапсе узла? Если да, то когда? Идея кеширования слабых объектов хороша, но следует ли мне просто продолжать заполнять пользовательский интерфейс, пока он не выйдет из строя (может быть, это неплохая идея)?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
494
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

в большинстве фреймворков, которые я видел, сама древовидная структура довольно эффективна, но если у вас есть нетривиальный объект на каждом листе дерева, он быстро добавляется.

Самым простым было бы не хранить что-либо в листьях дерева, а в методе render / draw / update / любой другой выбрать свой объект из кеша с слабыми ссылками. если его нет, загрузите с сервера. Уловка состоит в том, чтобы не хранить в кэше никаких других ссылок на объект, а только слабую. Таким образом, он будет по-прежнему доступен, но будет собираться по мере необходимости.

Спасибо за ответ. Это интересный момент. В настоящее время я делаю что-то подобное для не-древовидных данных (данных, связанных с узлами).

Dan Rosenstark 13.11.2008 02:30
Ответ принят как подходящий

Если пользователи не сворачивают ветки, то, я думаю, они будут прокручивать узлы с 750К до 20М, верно? Мне это кажется довольно неэффективным с точки зрения пользователя. Так что проблема вполне может быть самодостаточной.

Интересный момент. С другой стороны, я думаю о не-древовидных структурах, которые могут сработать. Недавняя работа над PHP в Eclipse убедила меня в том, что сама древовидная структура довольно раздражает для большого количества узлов.

Dan Rosenstark 13.11.2008 02:31

Хорошо, но мой оставшийся вопрос: следует ли мне публиковать данные о коллапсе узла.

Dan Rosenstark 15.12.2008 18:48

Другие вопросы по теме