Delphi+InterBase :(
13 отговора
413 прегледа
Delphi+InterBase :(
Poluchawa mi se slednia stranen efekt - dwe ednakwi prilojenia pishat w edna i syshta tablica , sled koeto wsiako prilojenie 'wijda' samo negowite si promeni...
Wse edno si cash-wat bazata pri otwariane... To moje i taka da e, no ne znam kakwo triabwa da butna, che da se oprawiat neshtata...?!?!?!
Niakakwi idei?
Wse edno si cash-wat bazata pri otwariane... To moje i taka da e, no ne znam kakwo triabwa da butna, che da se oprawiat neshtata...?!?!?!
Niakakwi idei?
Re: Delphi+InterBase :(
Heeee :) Wiarno :))
Mersi mnogo... Iawno zatypiawam weche... :)
Oshte edin typ wypros?
i dwete mi prilojenia triabwa da pishat i chetat ot edna tablica. No neshto ne moga da si nastroia isolation level-a na transaction-a taka, che da ne se poluchawat deadlock.
znachi ideiata mi e, che kogato ednoto prilojenie naprawi niakakwi promeni po bazata, drugoto triabwa da se "swetne" i da se refresh-ne..
opitwam se da go naprawia s edna tablichka s 2 polenca
p1 i p2...
pril. 1 pishe w p1 edinica, pril.2 - w p2...
i proweriawam, ako p1 e prazno - pril. edno triabwa da se refresh-ne.
loshoto e, che i dwete triabwa da chetat i pishat ednowremenno w tablicata.
A moje bi se prawi po drug nachin? :))
Mersi mnogo... Iawno zatypiawam weche... :)
Oshte edin typ wypros?
i dwete mi prilojenia triabwa da pishat i chetat ot edna tablica. No neshto ne moga da si nastroia isolation level-a na transaction-a taka, che da ne se poluchawat deadlock.
znachi ideiata mi e, che kogato ednoto prilojenie naprawi niakakwi promeni po bazata, drugoto triabwa da se "swetne" i da se refresh-ne..
opitwam se da go naprawia s edna tablichka s 2 polenca
p1 i p2...
pril. 1 pishe w p1 edinica, pril.2 - w p2...
i proweriawam, ako p1 e prazno - pril. edno triabwa da se refresh-ne.
loshoto e, che i dwete triabwa da chetat i pishat ednowremenno w tablicata.
A moje bi se prawi po drug nachin? :))
Re: Delphi+InterBase :(
А върху точно едни и същи данни ли ще правят промени ( имам предвид върху един и същи запис примерно) ?
Ако е това - малко кофти изпълнение става - и май ще трябва да търсиш допълнително решение.
---
Е т'ва е живот!
Ако е това - малко кофти изпълнение става - и май ще трябва да търсиш допълнително решение.
---
Е т'ва е живот!
Re: Delphi+InterBase :(
Ami.. uj takawa mi beshe ideiata...
S Paradox - niama problemi :)
drugoto, koeto se seshtam, e da izprashtam message-i na ostanalite prilojenia...
Ama towa e malko kofti... Sega kato se zamislia - ne e chak tolkowa, ama...
basi, kakwo tolkowa ima dwama da pishat wyrhu edin i syshti zapis? Mrazia ogranicheniata :((
S Paradox - niama problemi :)
drugoto, koeto se seshtam, e da izprashtam message-i na ostanalite prilojenia...
Ama towa e malko kofti... Sega kato se zamislia - ne e chak tolkowa, ama...
basi, kakwo tolkowa ima dwama da pishat wyrhu edin i syshti zapis? Mrazia ogranicheniata :((
Re: Delphi+InterBase :(
1. Не се сърди, но ми се струва, че трябва да попрочетеш още малко за работата с транзакции.
Подходящи материали има на [линк]
2. При работа с файлсървърни БД се работи само в т.н. режим на "мръсно четене" (durty read) с възможности за блокиране на ниво таблица. Впрочем и някои клиентсървъри работят по подобен начин с цел бързодействие. (Напр. MySQL). При IB имаш възможност да организираш различни режими на достъп, в зависимост от параметрите, които задаваш при стартиране на транзакцията. В IBX напр. има 4 готови режима, но ти имаш възможност да си комбинираш и други. Докато свикнеш ти препоръчвам да използваш Read Commited.
3. Refresh-ването можеш да си го организираш с Events, но някои спецове са на мнение, че при много клиенти и Ins/Upd/Del операции едновременно е по-добре се извършва рефреш само при заявка от усера.
4. При IB не е никакъв проблем това, че няколко клиента четат и пишат едновремено един и същи запис, дори едно и също поле. Валидизирането става при commit като се пазят версии на записите в контекста на всяка неприключена транзакция. Трябва обаче да зададеш параметър consistency, ако имаш операции от вида: update MyTbl set F1=F1+5 where ....
Но тогава трябва да си обработваш deadlock Error-а
Успех
Подходящи материали има на [линк]
2. При работа с файлсървърни БД се работи само в т.н. режим на "мръсно четене" (durty read) с възможности за блокиране на ниво таблица. Впрочем и някои клиентсървъри работят по подобен начин с цел бързодействие. (Напр. MySQL). При IB имаш възможност да организираш различни режими на достъп, в зависимост от параметрите, които задаваш при стартиране на транзакцията. В IBX напр. има 4 готови режима, но ти имаш възможност да си комбинираш и други. Докато свикнеш ти препоръчвам да използваш Read Commited.
3. Refresh-ването можеш да си го организираш с Events, но някои спецове са на мнение, че при много клиенти и Ins/Upd/Del операции едновременно е по-добре се извършва рефреш само при заявка от усера.
4. При IB не е никакъв проблем това, че няколко клиента четат и пишат едновремено един и същи запис, дори едно и също поле. Валидизирането става при commit като се пазят версии на записите в контекста на всяка неприключена транзакция. Трябва обаче да зададеш параметър consistency, ако имаш операции от вида: update MyTbl set F1=F1+5 where ....
Но тогава трябва да си обработваш deadlock Error-а
Успех
Редактирано от NDeu на
Re: Delphi+InterBase :(
1. :)) Mersi mnogo :) Ne se syrdia, az opredeleno ne sym bog na tranzakciite :)
Prawil sym razni neshta s MS SQL Server, ama tam e po-razlichno.
Tuk prosto ne moga da dokaram "dirty read" ... Izteglih si api-to na Interbase i sega shte se porowia.
2. Zaiawka ot user-a ne me ustroiwa po princip. Ideiata e, che userite NE triabwa da mogat da prawiat gluposti... Syotwetno i as de :)
znachi towa ako ne stane - TNMMSG.postit shte mi swyrshi rabota za izwestiawaneto :)
Mersi mnogo otnowo :)
Prawil sym razni neshta s MS SQL Server, ama tam e po-razlichno.
Tuk prosto ne moga da dokaram "dirty read" ... Izteglih si api-to na Interbase i sega shte se porowia.
2. Zaiawka ot user-a ne me ustroiwa po princip. Ideiata e, che userite NE triabwa da mogat da prawiat gluposti... Syotwetno i as de :)
znachi towa ako ne stane - TNMMSG.postit shte mi swyrshi rabota za izwestiawaneto :)
Mersi mnogo otnowo :)
Re: Delphi+InterBase :(
А бе не разбирам каква е цялата идея на нещата - и защо точно ти е цялата тази дандания - ама мислил ли си специално да направиш едно малко app server приложение. То да прави точно това и да се синхронизира с клиентите - защото ако имаш 2 клиента добре - ама утре ще станат 3 (или 5 или 10) и положението ще стане плачевно.
---
Е т'ва е живот!
---
Е т'ва е живот!
Re: Delphi+InterBase :(
Бе то и при 5, 10 и 20 клиента няма проблем. Хубавото на app server - e, че откачаш усеринтерфаса от бизнеслогиката, и тогава можеш лесно да разкрасяваш прозорчетата, без да бъркаш из по-дълбоко. А клиентите се радват на шарени и разнообразни справчици
Re: Delphi+InterBase :(
1.Dirty read не се поддържа в явен вид от IB, но не е и нужно да се мъчиш да го постигнеш
2.Ако ще правиш незабавна реакция на промените
- ползвай сървърския post_event в тригерите after I/U/D. Това ще извести всички клиенти, които са се регнали за съответния евънт при commit без да се налага всеки път да пишеш код
- Помисли как ще се чувства усер, на който грида му се рефрешва на няколко секунди без никаква забележима (според него) причина. Ако са ти често пишештите транзакции можеш да помислиш за рефреш не по-често от ... мин, но да е имало поне една промяна и т.н. в този дух.
2.Ако ще правиш незабавна реакция на промените
- ползвай сървърския post_event в тригерите after I/U/D. Това ще извести всички клиенти, които са се регнали за съответния евънт при commit без да се налага всеки път да пишеш код
- Помисли как ще се чувства усер, на който грида му се рефрешва на няколко секунди без никаква забележима (според него) причина. Ако са ти често пишештите транзакции можеш да помислиш за рефреш не по-често от ... мин, но да е имало поне една промяна и т.н. в този дух.
Re: Delphi+InterBase :(
Много мерси - тръгнаха нещата :)
Колкото до refresh-a - просто в един грид триабваше да ми се опресняват автомобилите на територията на предприятието. Сега само един проблем им остана - Interbase имал само 2 лиценза :))
Както и да е, пак мерси :)
Колкото до refresh-a - просто в един грид триабваше да ми се опресняват автомобилите на територията на предприятието. Сега само един проблем им остана - Interbase имал само 2 лиценза :))
Както и да е, пак мерси :)
Re: Delphi+InterBase :(
Сега само един проблем им остана - Interbase имал само 2 лиценза :))
Ползвай Firebird
Ползвай Firebird
Re: Delphi+InterBase :(
Не пия само газ и мастика, защото и двете много миришат
Да не пропуснеш прехвърлянето на базата от IB към FB да го направиш през Backup/Restore
Миналата седмица вече излезе FB 1.5 RC3
Да не пропуснеш прехвърлянето на базата от IB към FB да го направиш през Backup/Restore
Миналата седмица вече излезе FB 1.5 RC3
Редактирано от NDeu на