Существует ли компонент DBGrid, который может быстро обрабатывать большие наборы данных? - PullRequest
2 голосов
/ 14 октября 2008

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

Я хочу знать, есть ли готовые компоненты для Delphi (DBGrids), которые делают это автоматически?

РЕДАКТИРОВАТЬ Например: некоторые базы данных имеют такие функции, как выборка 1-й X записей (например, 100 записей). Когда я достигаю дна с помощью прокрутки, я хочу автоматически получить следующие 100. И наоборот, когда я достигаю начала, я хочу получить предыдущие 100. Я знаю, что могу запрограммировать это, но, несомненно, можно распространить эту функцию на DBGrid контролирует, где DBGrid выполняет буферизацию. Это сэкономит немало времени на программирование - вам просто нужно установить, так сказать, «размер буфера».

Ответы [ 5 ]

4 голосов
/ 14 октября 2008

Возможно, вы захотите взглянуть на замечательный (бесплатный, с открытым исходным кодом, с двойной лицензией MPL 1.1 и GPL, который можно использовать в приложениях с закрытым исходным кодом) Virtual TreeView и его потомки, предоставленные пользователем (прокрутите вниз страницу, чтобы найти их.)

Изменить, чтобы отредактировать вопрос: Virtual TreeView не только позволяет обрабатывать миллионы узлов, не сохраняя их в памяти, но фактически является предпочтительным способом его использования. Вы предоставляете данные через обратные вызовы событий, когда это необходимо, и можете указать дереву кэшировать эти данные (или нет).

О, и, конечно, он также имеет режим сетки / отчета, в котором он может функционировать как таблица (просто установите для свойства GridExtensions значение True.)

3 голосов
/ 14 октября 2008

Я бы посмотрел на Developer Express QuantumGrid Suite . (@birger: ты просто был на галочку быстрее ;-)) Так что я не просто дублирую ответ, некоторые уточнения:

DevExpress Grid использует контроллер данных, который имеет несколько режимов для управления данными, привязанными к сетке. Одним из них является именно то, что вы ищете:

Режим сетки

При использовании Grid Mode, только фиксированный количество записей набора данных загружено в память. Потому что только ограниченный набор записей извлекается из набор данных, автоматическая сортировка, фильтрация и сводные расчеты отключены в режиме сетки (необходимо контролировать вместо этого вручную). По умолчанию это режим отключен и ExpressDataController загружает все записей в наборе данных.

У него есть некоторые недостатки, которые кажутся довольно очевидными: вы не можете делать сводку, сортировать или фильтровать, если у вас нет всех записей под рукой.

2 голосов
/ 14 октября 2008

Я думаю, DevExpress Quantumgrid поддерживает это очень хорошо.

2 голосов
/ 14 октября 2008

NextGrid - это легкая, быстрая и красивая сетка для Delphi

http://www.bergsoft.net/component/next-grid/features.htm

ОБРАБОТКА БОЛЬШОГО КОЛИЧЕСТВА КЛЕТОК БЕЗ СКОРОСТИ РАЗБИРАТЕЛЬНОСТИ

NextGrid может обрабатывать очень большое количество клеток без потери скорости. скорость добавления, изменения и удаления данных не зависит от количества клеток. В демоверсии NextGrid вы можете увидеть, насколько быстро NextGrid работает с 100 000 строк и 10 столбцы = 1 000 000 ячеек

0 голосов
/ 14 октября 2008

извините, я только что увидел ваш комментарий к Нефтали

если вы хотите принести 100 записей за раз, а затем получить следующие 100, эта работа связана с компонентами доступа к базе данных, посмотрите на devart компоненты, они предлагают компоненты прямого доступа к наиболее используемой базе данных, и у них есть функция, о которой вы спрашиваете, и многое другое:

http://www.devart.com/products-vcl.html

...