Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.041 c
6-1164180002
jorsand
2006-11-22 10:20
2007.06.17
Подскажите как получить доступ к сетевому ресурсу


2-1179993652
roughneck
2007-05-24 12:00
2007.06.17
DLL + MDI окна


2-1180037373
Kostafey
2007-05-25 00:09
2007.06.17
Как узнать высоту панели задач и заголовка формы ?


2-1180188689
zadrot
2007-05-26 18:11
2007.06.17
Папки и файлы


11-1162470019
Thaddy
2006-11-02 15:20
2007.06.17
FPC and koldef.inc





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский