Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Работа с массивами данных


Автор: Karrde 7.10.2011, 14:16
Доброго времени суток. Не уверен, в эту ли тему...
Допустим, в базе хранится некоторый объем данных. Пользователь программы должен иметь доступ к любой из записей массива. Т.е. получается, желательно загружать весь массив структур в память программы? или всё таки брать как-нибудь по частям и выводить постранично, а при переходе на другую страницу выгружать следующий пакет данных из базы?
Кто что посоветует?

Автор: Earnest 7.10.2011, 17:09
Размер (данных) таки имеет значение.
Если всех данных не сильно много (влазит в виртуальную память; для Виндоус32, например, это порядка 1гб, чтобы без особых проблем было), то загружайте все, так проще.
Если данные значительно больше, то организовывайте подкачку.

Автор: Akina 7.10.2011, 17:10
Фреймы.
В память загружается фрейм, который в несколько раз больше окна отображения. И производится отображение части фрейма. Как только текущее отображение начинает приближаться к границе фрейма, в фоновом режиме производится подчитывание данных так, чтобы текущее окно отображения опять было приблизительно в середине фрейма. Само собой далёкие от текущей области отображения блоки выгружаются.

Автор: Pavia 7.10.2011, 19:11
Karrde,  При такой постановки задачи нет принципиальных различий для выбора между двумя мотодами. Но с учётом того что интерфейс СУБД развит в отличии от вашего я бы оставил  бы все на стороне сервера.

Автор: _Y_ 8.10.2011, 12:34
Я когда-то в древности (когда компьютеры были с большими номерами типа 286, 386  smile и маленькой памятью) делал быстрый поиск построки по БД. Оптимальным по времени оказалась двухступенчатая структура. Загрузка с диска шла "постранично", например 400 записей за раз, проводился поиск в рамках страницы, потом загружалась следующая страница.

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

Автор: Karrde 10.10.2011, 14:35
Спасибо) Значит, всё таки буду делать постраничную обработку.

Автор: Karrde 11.10.2011, 11:59
Хм, я извиняюсь. Допустим, есть сервак, связанный с базой данных, и, соответственно, клиент.  Может, серваку вообще лучше не хранить данные, просто на любые запросы читать из базы. а клиент выводит поступившие данные на форму(в таблицу, или ещё куда нить), и собственно списки данных не сохраняет. Всё, что надо клиенту для дальнейшей работы или дальнейших запросов, он может взять из формы. Или всё таки на одной из сторон лучше хранить хотя бы одну страницу данных в памяти?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)