|
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 24
|
|
DataSet и большие объемы данных28.02.2010, 15:48. Показов 2911. Ответов 5
Метки нет (Все метки)
Доброе время суток.
Имеем Borland C++ Builder (по части работы с данными и соотв. библиотек одно и то же). В базе, с которой работает программа, объемы справочников очень велики (100-200 тыс. записей и более). Обычная двухзвенка. Требуется организовать 'быстрый' просмотр данных без избыточного траффика. Быстрый, т.е. такой, при котором не все данные из справочника загружаются на клиента (как это происходит при открытии DataSet и фетче), а только те, которые будут отображаться в гриде. Что-то типа постраничной загрузки, наверное. Т.е. когда жмем кнопку 'пролистать', то грузится следующая страница выборки, а старая удаляется. Тоже самое при движении назад. Это пока только мысли и 'наметки'. Если кто-нибудь уже сталкивался, напишите как решали подобную проблему. У меня пока мысли следующие. Написать какого-нибудь потомка от TDBNavigator, в нем при подключении считывать кол-во записей в справочнике, определять номер текущей страницы просмотра. Дальше переопределить нажатие на кнопки навигации и при их нажатии старое собержимое очищать и грузить данные новой страницы. Вот только пока не очень понятно как на сервере разбивать данные на эти самые страницы и выдавать по запросу очередную страницу. Я работаю с ORACLE. Компоненты доступа Direct Oracle Access. Если кто знает как решить возникшую задачу (может в каких-то компонентах доступа к данным проблема постраничной загрузки уже решена, например, а я и не догадываюсь о существовании этих компонент) или кто-нибудь уже решал подобную задачу, пишите. Буду благодарен за ответ. У кого есть соображения на эту тему, не стесняйтесь ))
0
|
|
| 28.02.2010, 15:48 | |
|
Ответы с готовыми решениями:
5
Выбор базы данных, поддерживающей большие объемы данных
Большие объемы печати |
|
3 / 3 / 0
Регистрация: 16.01.2008
Сообщений: 359
|
|
| 07.03.2010, 04:07 | |
|
а в хранимых процедурах oracle нет оператора типа: suspend ?
0
|
|
|
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 24
|
||
| 07.03.2010, 12:25 [ТС] | ||
В случае, если я прав, то получается: 1. Если пользователь хочет посмотреть только конец справочника (последнюю страницу), то у него на клиентской машине все равно окажется весь набор записей (опять получаем тот избыточный траффик в сети, ради ухода от которого и планировалась постраничная загрузка). 2. Полученный эффект можно достичь установив всего одно свойство свойства компонента TDataSet, и тогда при открытии DataSet не будет происходить Fetch All, а данные будут 'подгружаться по мере пролистывания. Или вы хотели добиться другого эффекта при помощи этого оператора? Напишите, пожалуйста.
0
|
||
|
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 10
|
|
| 07.03.2010, 15:05 | |
|
В С++ не знаю, в Дельфи есть TClientDataSet у которого есть свойство PacketRecords. Там есть еще FetchOnDemand для BLOB'ов и т.д.
Посмотри, может в Билдере есть аналоги... Но это трехзвенкой попахивает...
0
|
|
|
3 / 3 / 0
Регистрация: 16.01.2008
Сообщений: 359
|
|
| 18.03.2010, 12:33 | |
|
про suspend вы совершенно правильно поняли... добавить нечего.
но других вариантов и не придвидется, кроме 'скачивания' всех записей на клиента, либо сразу, либо по мере надобности кстати, не думали о сервере приложений?
0
|
|
|
0 / 0 / 0
Регистрация: 07.01.2010
Сообщений: 3
|
|
| 18.04.2010, 09:32 | |
|
День добрый!
Вообще мне непонятно, как можно юзеру продуктивно пролистывать весь справочник, состоящий из > 200к записей? Ну если уж нет возможности как то ограничить выборкой набор данных, используйте первичный ключ + ХП В хранимую процедуру передается параметр - стартовое значение ключа и направление т.е. допустим начиная с 300-й записи пролистать -50 записей. Поскольку это справочник, дырок в ключе особо быть не должно. Для пущего эффекта поиграть с where ROWNUM <, > и вообще, сходить по этой ссылке: http://www.sql.ru/faq/faq_topic.aspx?fid=105
0
|
|
| 18.04.2010, 09:32 | |
|
Помогаю со студенческими работами здесь
6
Как быстро копировать большие объемы информации? Хеш-таблица, большие объёмы, переход от C++ Builder к Visual C++ Считать/записать большие объемы строк в txt файле Передача данных из таблицы одной dataSet в таблицу другой dataSet Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|