Работа с большими объемами данных. Проблемы и пути их решения.

 

Работа с большими объемами данных. Проблемы и пути их решения

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

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

Следует заметить, что пользователю не нужны все данные из большого массива. Как правило, нужно не более десятка записей, содержащих необходимую информацию. Но эти записи могут находиться в разных участках базы данных. В создавшейся ситуации налицо противоречие: с одной стороны пользователю необходимы несколько записей из сотен или тысяч имеющихся, с другой - необходимая информация находится в различных местах, и пользователь не всегда заранее знает, какая именно.

Разумным выходом из создавшейся ситуации является использование метода подкачки, т.е. передачи данных на клиентскую часть небольшими фрагментами. Подобный метод используется в некоторых системах. Но, используя такую подкачку, мы не решим проблему - в итоге может оказаться, что на клиентское место были закачены все данные (представьте, что из списка деталей сборки пользователю необходимы были параметры двух - первой и последней в списке из 100000 наименований). Следовательно, необходим механизм, позволяющий передавать пользпользователю данные с сервера частями и, в тоже время, предоставляющий возможность поиска и сортировки по всему объему, при этом на клиентском рабочем месте единовременно должно находиться небольшое количество данных.

Существует практическое решение данной проблемы в современных инструментах разработки информационных систем с помощью визуального компонента «подкачиваемая таблица». Этот компонент позволяет программисту организовать двухступенчатую передачу данных: с сервера базы данных на сервер приложений и с сервера приложений на клиентское рабочее место небольшими фрагментами. При этом поддерживается возможность сортировки и поиска во всем массиве данных, причем эти операции выполняются на сервере базы данных, а сервер приложений и клиент частями получают результат. В конкретный момент времени в оперативной памяти сервера приложений и клиентского рабочего места находится лишь небольшая часть данных. То есть, пользователю поступает очередной фрагмент данных, если он каким-то образом меняет структуру представления (сортировка по другому полю, изменение направления сортировки, контекстный поиск), то преобразования происходят на сервере со всем объемом, а пользователь вновь получает небольшой фрагмент, содержащий именно ту запись, на которой он находился до этого. Для реализации подобной задачи не требуется написания ни одной строки кода!

Внешне работа с подкачиваемыми таблицами ничем не отличается от работы с обыкновенными таблицами. Время реакции системы на порядок меньше времени реакции пользователя. Быстрая выборка необходимой информации благоприятно сказывается на общем психологическом климате на рабочем месте, что ведет к повышению производительности труда (http://consulting.msk.ru/materials/o1_otchet.html ).

Это решение реализовано компанией Омега ( http://www.omega.ru ) в инструменте разработки ABACUS Builder (http://www.omega.ru/ab/ ).

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