|
Отображение графиков
|
|||
---|---|---|---|
#18+
Доброго времени суток. В настоящее время встала задача разработать компонент который должен отображать данные загружаемые из БД в виде графика. Приложение WinForms .NET. Все вопросы вроде решили остался один. Как лучше организовать передачу данных между БД и приложением. А именно допустим пользователь запросил данные из БД за определенный период, размер выборки может составить 100000 точек или более, а допустим разрешение монитора позволяет отобразить всего 1000 точек за раз. Получается или приложение должно будет сжать 100000 точек или более до 1000 или можно сделать это в БД. Вопрос где лучше это делать в БД или приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 12:02 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982, как один из вариантов, можно просто поставить ограничение по дате для выбираемых данных. Например, не больше 3-х месяцев. Это поможет решить Вашу проблему + ограничит пользователя ввести очень большой срок для выборки что бы прежде всего не завалить сам сервак ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 12:20 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
itnovicemikola1982, как один из вариантов, можно просто поставить ограничение по дате для выбираемых данных. Например, не больше 3-х месяцев. Это поможет решить Вашу проблему + ограничит пользователя ввести очень большой срок для выборки что бы прежде всего не завалить сам сервак спасибо, ограничение сделаем. но дело в том что данные пишутся раз в секунду, месяц это 2592000 точек. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 12:34 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982, Ну смотри, можно лезть в настройки монитора, и определить какое разрешение установлено у клиента. На .NET как сделать не знаю но в жабе есть такая фича точно. Если параметры не подходять, тогда только одно - маштабирование ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 12:46 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
itnovicemikola1982, Ну смотри, можно лезть в настройки монитора, и определить какое разрешение установлено у клиента. На .NET как сделать не знаю но в жабе есть такая фича точно. Если параметры не подходять, тогда только одно - маштабирование Все верно. вопрос в том где лучше сжимать данные на стороне БД или в приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 12:55 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
При "сжатии" на стороне БД не нужно будет передавать все точки приложению - это плюс, если количество точек уменьшится в разы. Но нужно еще оценивать и алгоритм "сжатия". Если он нетривиален, или его выполнение требует больших ресурсов, то может быть имеет смысл реализовать его в приложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 15:22 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982, "сжимать" над не данные а изображение ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 16:23 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982, а зачем сжимать данные? я имел ввиду поставить маштабирование на рисунок\график того что ты будешь выводить. Если у клиента монитор не позволяет все нормально отобразить тогда делать возможность приближения\удаления\производить перемешение по графику. вот что я имел ввиду ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2011, 16:46 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
ViPRosmikola1982, "сжимать" над не данные а изображение поясните. может у меня подход не верен. но самое простое что мне пришло в голову это определять количество точек которое может отображать экран, далее определять сколько точек есть в БД для заданного интервала, и если количество точек в БД больше чем помещается на экран, вычисляю соотношение сколько точек в БД приходится на одну точку на экране (для месяца если данные пишутся раз в 1 секунду и на экране может отобразится 1000 точек, то одной точке на экране соответствует 43.63 минуты). Далее нахожу для каждой точке на экране среднее точек в БД. Реализовал пока на стороне БД (MS SQL Server 2005 Pentium D 3.4 ГГц ОЗУ 1Гб), время выборки 1 секунда в БД находится порядка 16 млн. записей. Вот я и думаю правильный подход или надо тянуть милионы строк в приложение и там делать обработку. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 05:40 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982, правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 06:00 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982Вот я и думаю правильный подход или надо тянуть милионы строк в приложение и там делать обработку.Правильно. Ещё один подход - хранить в базе несколько вариантов данных для разных разрешений. А уже для данного сохранённого разрешения можно делать и пересчёт (возможно). При большом числе запросов это более выйгрышная стратегия - не нужно зачитывать и пересчитывать много данных каждый раз при выводе, при этом накладные расходы на хранение будут маленькие - ведь разрешение небольшое, данных мало. Известные системы типа всяких карт так и делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 10:54 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
большое всем спасибо. как реализую отпишусь. если хватит времени то попробуем сделать и так и так. результаты выложить постараюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2011, 13:58 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
Зависит от того, какие данные. Например, при простом прореживании, ты не отправишь из БД данные, которые больше всего интересуют пользователя. Какой-нибудь резкий всплеск. Решение нужно принимать исходя из прикладной задачи. Для чего график нужен пользователю? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 19:05 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
pirovindosЗависит от того, какие данные. Например, при простом прореживании, ты не отправишь из БД данные, которые больше всего интересуют пользователя. Какой-нибудь резкий всплеск. Решение нужно принимать исходя из прикладной задачи. Для чего график нужен пользователю?Тут же не вопрос об алгоритме прореживания, а о том, где его делать - на клиенте или сервере, и в какой момент - при сохранении данных в базу или при запросе информации. А алгоритм, понятно, нужно выбирать в зависимости от задачи. Это уже второстепенная вещь, это и поменять легко можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2011, 20:52 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
alexeyvg, По-моему, прежде чем решать ГДЕ реализовывать, нужно решить ЧТО реализовывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 09:26 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
pirovindosalexeyvg, По-моему, прежде чем решать ГДЕ реализовывать, нужно решить ЧТО реализовывать.Считаю, это несвязанные вещи. Где реализовывать алгоритм - это архитектура системы. Если она зависит от конкретного алгоритма прореживания, то это плохая архитектура. Плохая архитектура - это значит, что при изменении требований (типа подошёл бизнес-юзер и сказал - а вот с нового года мы не будем показывать всплески, если они вылазят больше чем на 50 процентов от среднего), программисты начинают ныть - нуууу, это надо всё переписывать.... Надо исходить из того, что конкретные алгоритмы пока изместны только приблизительно, и их уточнят после нескольких месяцев использования системы, причём уточнить могут очень сильно. Вначале можно только определить базовые принципы - например, зависят ли алгоритмы от пользователя или они общие и т.п. - то, что влияет на архитектуру системы. И то, хорошая архитектура позволит менять и такое, не выбрасывая то, что уже было сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 10:40 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
alexeyvgВначале можно только определить базовые принципы - например, зависят ли алгоритмы от пользователя или они общие и т.п. - то, что влияет на архитектуру системы. Согласен. Ровно это я и понимаю под "ЧТО реализовывать". Нужно определить границы возможных будущих изменений требований. Вполне возможно, что вывод будет такой: обработка в общем случае состоит из нескольких ступеней и эти ступени могут быть в разных частях системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 10:52 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
данные о технологическом процессе. допустим изменение температуры окружающей среды. алгоритм пока еще не выбрали, если подскажете буду очень благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 12:34 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
mikola1982данные о технологическом процессе. допустим изменение температуры окружающей среды. алгоритм пока еще не выбрали, если подскажете буду очень благодарен. Пример понятен, но порождает набор следующих вопросов. Диапозон температур, диапазон градиентов? Пожары в окружающей среде бывают? И т.п. Повторю свой вопрос. Для чего график нужен пользователю? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 13:19 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
pirovindosПример понятен, но порождает набор следующих вопросов. Диапозон температур, диапазон градиентов? Пожары в окружающей среде бывают? И т.п. Повторю свой вопрос. Для чего график нужен пользователю? Диапазон от -50 до 50 температура. Изменение может быть по 1 градусу в минуту. Но температура слишком частный случай, приведу еще пару параметров: процент открытия (от 0 до 100), уровень жидкости, давление, напряжение, влажность в %, расход (от 0 до 1000) и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 13:26 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
Для цего график нужен пользователю? а) ни для чего не нужен б) показывать начальнику, которому он тоже не нужен в) напечатать и обклеить стены дома в сортире .... я) для принятия срочных управленческих решений ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2011, 15:17 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
pirovindos, для просмотра изменения параметров во времени, оценки стабильности работы системы, принятия срочных решений, расследовании аварий. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2011, 07:05 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
куда-то пропал ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2011, 05:21 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
Если еще актуально, то 1. "принятия срочных решений" не нужно делать запросы к базе в 10000 точек. Все это должно быть автоматически в онлайне, подгружаться постепенно и показываться в режиме скользящего окна. (Детали опускаю). 2. Расследование аварий - процесс неспешный, скорее всего потребуется не очень простая обработка (если не сегодня, то завтра), поэтому наверняка обработку лучще делать вне базы. "для просмотра изменения параметров во времени, оценки стабильности работы системы" - если "на ходу", то в первую группу, если постфактум, то во вторую. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2011, 20:13 |
|
Отображение графиков
|
|||
---|---|---|---|
#18+
pirovindosЕсли еще актуально, то 1. "принятия срочных решений" не нужно делать запросы к базе в 10000 точек. Все это должно быть автоматически в онлайне, подгружаться постепенно и показываться в режиме скользящего окна. (Детали опускаю).Понятно, что в режиме скользящего окна, ТС об этом писал. Он как раз спрашивал о деталях. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2011, 22:06 |
|
|
start [/forum/topic.php?fid=33&msg=37077258&tid=1548048]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 442ms |
0 / 0 |