Построение отчета с нескольких серверов
От: Lonely Dog Россия  
Дата: 27.05.10 21:04
Оценка:
Привет!

Есть база, живущая на разных серверах. До одних серверов можно быстро достучаться, до других нельзя.
База состоит из данных двух видов: реплицируемые (одинаковы на всех серверах) и нереплицируемые (на каждом сервере свои, например дата последнего обращения к строке).

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

Реализовать это можно двумя путями:
1. Для каждого сервера делаем select recid, lastAccessTime from MyTable. Далее, для каждой записи обновляем текущую дату последнего обращения. В итоге за одну итерацию получаем данные с одного сервера и уточняем дату для всех записей.
2. Для каждой записи делаем select lastAccessTime from MyTable where recid='CurrentRecID'. Запрос выполняется на всех серверах. В итоге получаем за одну итерацию правильную дату для одной записи.

Очевидно, что способ 1 быстрее. Гораздо быстрее. С другой стороны, пока он не отработает до конца, мы не получим данные по всем записям.
Способ 2 тормозной. С другой стороны, пользователь может прервать операцию и работать с теми данными, которые мы успели получить. Причем это будут правильные данные.

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

13.06.10 14:04: Перенесено модератором из 'Пользовательский интерфейс: проектирование, usability' — Кодт
Re: Построение отчета с нескольких серверов
От: Lonely Dog Россия  
Дата: 28.05.10 07:35
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

Судя по бомбочке, мой вопрос был неправильно истолкован.
Я хочу понять, как лучше сделать UI для построения и отображения отчетов в описанной выше ситуации.
Re[2]: Построение отчета с нескольких серверов
От: goto Россия  
Дата: 28.05.10 12:58
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>Здравствуйте, Lonely Dog, Вы писали:


LD>Судя по бомбочке, мой вопрос был неправильно истолкован.

LD>Я хочу понять, как лучше сделать UI для построения и отображения отчетов в описанной выше ситуации.

Для рассуждений не хватает конкретики: общее кол-во записей; характерные времена ожидания; скорость заполнения "экрана" данными; наконец, в каком виде их должен видеть пользователь и какая реакция (скорость, сложность, точность обработки) от него, собственно, требуется...

Так возможно много вариантов. Например, таблица, в которой одна из колонок — прогресс индикатор степени обработки данной записи, другая показывает степень ее "достоверности". Чмыкая по заголовку таблицы, пользователь может сортировать записи по этим признакам (примерно как это сделано в download manager'ах или торрент клиентах). И/или можно использовать чекбоксы, включающие фильтры: показывать/прятать только полностью обработанные записи или еще какие-нибудь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.