2012-04-03 2 views
1

Я хочу показать список (Таблица) с почти 20 миллионами строк. Как это сделать, с меньшим использованием памяти и не позволяя моему серверу умереть (перестать отвечать) при этом.Огромные данные в списке (Таблица)

Даже у вас есть теоретическая идея, пожалуйста, разделите (я постараюсь реализовать). Нужно решение очень срочно.

Я знаю, что не могу загрузить сразу все строки. Мне нужно каждый раз прокручивать новые строки с сервера. Я пробовал, но мой свиток не достаточно гладкий.

Благодарности & С уважением, Аман

+0

со всей серьезностью с количеством данных, о котором вы говорите, я бы искать компоненты, чтобы предварительно построенном делать тяжелую работу здесь в противном случае вам» долгое время проводите оптомизацию, которую некоторые из поставщиков компонентов проводят месяцами и месяцами. –

+2

Список или таблица, загруженная с помощью 20m * anything * сразу немного сумасшедшая, когда связана с любым из тегов в вашем вопросе, что вы точно пытаетесь сделать? –

+0

@krystanhonour может предложить любой такой компонент с открытым исходным кодом, с которым я могу пройти? –

ответ

3

Почему не только получить первые 100 записей, а затем один раз клиента прокручивается на дно вы добавляете еще 100 записей и так далее.

+0

следующий? может у вас объяснить подробнее. –

+0

Загрузите 100 записей и проверьте положение полосы прокрутки, если полоса прокрутки находится в нижней части страницы (все записи просмотрены) вы отправляете запрос ajax и добавляете еще 100 записей после уже существующих. – Eric

+0

В этом случае мне нужно знать высоту каждой строки, чтобы я мог соответственно установить высоту своего прокрутки.но у меня есть данные в моих строках, так что они не могут вписаться в одну строку, которую они обернули в следующую строку. –

0

Вы можете использовать http://books.zkoss.org/wiki/ZK Developer's Reference/MVC/View/Renderer/Listbox Renderer.

public void render(Listitem listitem, Object data, int index) 

Для начала, вы можете реализовать визуализации в пути, так что вы получите элемент визуализации из источника данных под руку индекс от визуализации методы. Вы можете использовать стандартный кеш (если Hibernate на месте) или пользовательский, если в противном случае (посмотрите также на EhCache).

Решение @ Erik действительно быстро реализуется. Чтобы добавить, вы можете сделать кнопку, чтобы пользователь знал, что загрузка большего количества записей будет стоить какое-то время и подумает, действительно ли нужно загружать больше. Прокрутка может заставить вас Listbox просто повесить трубку на мгновение.

И всегда делайте верхнее ограничение на максимальное количество записей, которые вы покажете за один раз, - не загрязняйте память вашего сервера.

0

Сделать пейджинг для значений таблицы и получить определенное количество записей по запросу.

Использование может использовать dataTable pluging, чтобы сделать разбивку на страницы для записей данных.

Обратите внимание, что вы можете получить данные по синхронным и асинхронным способом, используя эту библиотеку