Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

Реализация бизнес логики приложения   Найти похожие ветки 

 
Sinus ©   (2007-03-26 13:29) [0]

привет всем.

есть программа написанная на Clipper, предназначенная для обработки стат.  данных. В связи с резким увеличением нагрузки  на операторов вводящих данные( количество отчетов увеличилось в 1,5 раза ) , возникла необходимость сетевой версии программы( Firebird 1.5.3 ). в старой программе арифметический и логический контроль реализовывался следующим образом..

1.  есть таблица с данными отчетов

id_kod  kod   g1        g2        g3       g4
3432    101   455,23  150,86  -          -
3432    111   400,23   50,86   -         -
3432    112   55,0      100,86  -          -

то есть сумма по коду строки отчета 101 должна равняться
=111+112
2. есть таблица в которой эти правила записанны ввиде формул
 
kod     znak      uslov
101     =          111+112

Вопрос:
1. объясните как это в принципе может быть реализованно( через фильтр, запрос.. или еще как ???) по тому как мне сложно представить фильтр котрый сравнивает поля 2- х разных записей...

2. и если возможно объяснить как это можно реализовать в Firebird

плиз прошу отнестись с уважением и не пинать сильно ;-)


 
Val ©   (2007-03-26 13:37) [1]

stored procedure


 
sinus ©   (2007-03-26 13:50) [2]


> stored procedure


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

меня интересует именно такой вариант


 
Sergey13 ©   (2007-03-26 14:17) [3]

> [2] sinus ©   (26.03.07 13:50)
> видимо ты имел ввиду что надо жестко записать все правила в процедурах,
Видимо он имел в виду, что в хранимке можно реализовать парсинг формулы, из таблицы формул, и сформировать запрос, который вернет нужный результат.

Хранить исходные данные и подсчитанные вроде как некошерно в этом случае.


 
Jan   (2007-03-26 14:18) [4]


> 2. есть таблица в которой эти правила записанны ввиде формул
>  
> kod     znak      uslov
> 101     =          111+112

а почему не просто два поля: ссылка на главный счет, и ссылка на подчененные?
А контроль будет вида:
select * from table1 t1
where (select sum(g1) from table1 t2
where t2.kod = t1.kod) <> (select sum(g1) from table1 t3
where exists(select * from table2 t4
where t3.kod = t4.subkod
and t4.kod = t1.kod))


 
Jan   (2007-03-26 14:23) [5]

вместо <> надо not:

select * from table1 t1
where not (select sum(g1) from table1 t2
where t2.kod = t1.kod) = (select sum(g1) from table1 t3
where exists(select * from table2 t4
where t3.kod = t4.subkod
and t4.kod = t1.kod))


 
Petr V. Abramov ©   (2007-03-26 14:36) [6]

в FB есть динамический sql


 
sinus ©   (2007-03-26 15:50) [7]


> Видимо он имел в виду, что в хранимке можно реализовать
> парсинг формулы, из таблицы формул, и сформировать запрос,
>  который вернет нужный результат.

спасибо это более интересный вариант, чем все жестко прописывать..
надо попробывать


 
ANB ©   (2007-03-26 17:03) [8]


> sinus ©   (26.03.07 15:50) [7]

Судя по всему, в программе на клиппере использовались макросы.
Аналог макросов - динамический SQL.
Кистате, а кто мешает работать в сети на клиппер-программе ? Он хоть и файл-серверный, но человек 5 пользователей без проблем тянуть должен.


 
sinus ©   (2007-03-26 20:59) [9]

спасибо всем за советы ,сейчас решаю что удобнее и быстрее реализовать
динамический SQL или парсить данные из процедуры.

> Кистате, а кто мешает работать в сети на клиппер-программе
> ? Он хоть и файл-серверный, но человек 5 пользователей без
> проблем тянуть должен.

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


 
Val ©   (2007-03-26 22:49) [10]

динамический скл следует использовать, когда не удается качественно реализовать алгоритм в статическом.


 
Petr V. Abramov ©   (2007-03-26 23:01) [11]

> Val ©   (26.03.07 22:49) [10]
... либо когда он может меняться по воле юзера. тчк.


 
ANB ©   (2007-03-27 11:54) [12]


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

Не факт, что новая программа юудет работать намного шустрее, чем клипперовая. А вы тесты на 10 человек проводили ?


> да и уровень написания программ на клипере средний..

Чтобы это значило ? Я более крутого языка, чем клиппер 5.2 еще не видел.


 
Jan   (2007-03-27 12:03) [13]


> Не факт, что новая программа юудет работать намного шустрее,
>  чем клипперовая. А вы тесты на 10 человек проводили ?

а проводили тесты на базе в 60 ГБ и нагрузкой в 150-200 человек?


 
ANB ©   (2007-03-27 12:23) [14]


> а проводили тесты на базе в 60 ГБ и нагрузкой в 150-200
> человек?

Я проводил тесты с нагрузкой, правда всего 10 человек, но на базе в 160 Террабайт.

ИМХО - и МС СКЛ и ФБ такой нагрузки не выдержат тоже.


 
Jan   (2007-03-27 12:36) [15]


> Я проводил тесты с нагрузкой, правда всего 10 человек, но
> на базе в 160 Террабайт.

может Мбайт?


> ИМХО - и МС СКЛ и ФБ такой нагрузки не выдержат тоже.

для МС 60Гб с нагрузкой в сотню пользователей - пустяк... Для ФБ не пробовал.


 
ANB ©   (2007-03-27 14:31) [16]


> может Мбайт?

Нет, именно террабайт. Меня сильно поразила разница в работе приложения у нас на тестовой базе и на этой - слепке с рабочей.

Я к тому, что у каждой СУБД своя область применения. Если база не очень большая, то вполне может оказаться, что дешевле не переписывать все с клиппера.


 
Jan   (2007-03-27 15:03) [17]


> Нет, именно террабайт.

прикольно. я таких и не видел :)
Ну и как выборки? Шустренько?


 
ANB ©   (2007-03-27 15:11) [18]


> Ну и как выборки? Шустренько?

По первичному ключу, если хинтануть - то шустро. Но сильно влияет еще селективность индексов. Впрочем, сразу признаюсь - это был мой первый опыт работы с такой огромной базой, собственно в оптимизации я не силен, если бы не сидел 10 лет на клиппере - вообще бы плавал.
Там и сервак - 64 бита, 16 процов, 64 гектара озу, оракла 64 бита. Т.е. все круто.



Страницы: 1 вся ветка

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
1-1177061372
Лысеющий Самурай
2007-04-20 13:29
2007.06.17
Как получить выделенный текст


2-1179871107
ari_9
2007-05-23 01:58
2007.06.17
и снова мерцание картинки при перерисовке (использую BitBlt)


2-1179782454
Meganop
2007-05-22 01:20
2007.06.17
DBImage и как с ним работать


1-1177302041
Vidog@mobzone.org
2007-04-23 08:20
2007.06.17
Ресурсы в программе


1-1177304343
IMHO
2007-04-23 08:59
2007.06.17
Папка Program Files