![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Litkevich Yuriy |
![]()
Сообщение
#1
|
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
с лета никак не определюсь как должна быть устроена система.
Итак, есть море оборудования, на них датчики. С датчиков собирается информация и акумулируется в БД (FireBird). На клиентских машинах (их может быть очень много) стоит прога (назовем её клиент). С клиента всю ситему можно настривать (какие датчики опрашивать, параметры оборудования задавать и т.п.), и получать отчеты о работе оборудования (т.е. история изменения параметров, история показаний датчиков). Отчеты в общем случае одинаковые, то есть почасовое состояние оборудования (например, сигналов с датчиков), но формулы расчета разные зависят от типа датчиков и оборудования. Текущая структура выглядит так: Хочется сделать так, чтобы пользователь мог в водить формулы расчета для заданного параметра. Но пока они жестко зашиты и вся обработка данных (разные расчеты, подготовка промежуточных результатов для отчетов) ведется в нутри БД с помощью тригеров, а при запросе с клиента еще и ХП'шки подключаются к этому процессу, досчитывая/выбирая необходимые данные. последний факт приводит к тормозам на стороне клиента. Собирать отчетные данные помере сбора данных годится только для данной конкретной обстановке (определяемой настройками оборудования). Вот я думаю заменить на этой схеме желтый квадратик либо на приложение, которое будет принимать события от БД (уведомления) заниматся расчетами и складывать в некую выходную таблицу, либо на UDF'ку, которая будет вызыватся тригером делать расчет, а тригер будет помещать результат в некую выходную таблицу. Т.е. вынести прикладную часть (т.н. бизнес логику) Может у кого есть мысли по этому поводу, а то и вовсе опыт создания подобных систем? |
|
|
||
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
зашиты в код ХрПр? да. Например для расчета потребления эл.энергии для заданной точки учета (далее Т.У.) из таблицы эл.счетчиков берется параметр счета (кол-во импульсов на кВт*ч) и считается кВт*ч. Для другого типа Т.У. свой расчет.Чем занимается scanner??? софтина на Qt'ях опрашивающая через последовательный порт контроллеры расположенные в оборудовании и складывает информацию в БД.сначало Scaner запрашивает у БД, что нужно опрашивать, вызовом процедуры P_GETDEVICE. Получает масив из трех столбцов: PORT, ADDRESS, FIELD - Номер порта, адрес устройства в сети ModBus и номер поля данных Опрашивает устройства по полученому списку, затем возвращает в БД данные с помощью ХП P_APPENDDATA(PORT, ADDRESS, FIELD, VALUE) эта процедура складывает данные в табличку и еще завёт какую нибудь ХП для промежуточных расчетов (примитивных) |
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Лучше все промежуточные расчеты вынести из СУБД в приложение. Если не ошибаюсь, ПО быстрее делает расчет, чем СУБД (если правильно сделать, конечно!
![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 15.6.2025, 14:16 |