DBI (DBD::Oracle) a udalostni smycka
Honza Pazdziora
adelton na fi.muni.cz
Pondělí Únor 4 13:39:33 CET 2008
On Mon, Feb 04, 2008 at 11:16:13AM +0100, Jan Kasprzak wrote:
>
> uz proto, ze to umi i nejake pokrocilejsi vnitrnosti nez select() nebo poll()
> - napriklad epoll nebo eventfd. Problem je, ze bych potreboval, aby jednou
> z tech sitovych sluzeb se kterymi budu komunikovat byl Oracle (cili
> DBD::Oracle).
>
> Umim ja nejak z DBI vytahnout ten filedeskriptor ktery me spojuje
> s databazi, a navesit ho nejak na tu udalostni smycku? Neco jako
Nemyslim, zvlaste ne v pripade OCI.
> - az bude socket do DB pripraveny, udelej prepare.
> - pak obsluhuj ostatni deskriptory
> - az bude socket do DB pripraveny ke cteni, precti si vysledek prepare
> - az bude socket do DB pripraveny pro zapis, zavolej execute.
> - obsluhuj deskriptory ktere jsou prubezne pripravene.
> - az bude odpoved od execute, precti si ji.
> - kdyz bude socket do DB zrovna pripraveny ke cteni, volej fetch, jinak
> obsluhuj prubezne i ostatni deskriptory.
Ten problem je v tom, ze to, ze se Ti socket jevi jako pripraveny,
vubec nemusi znamenat, ze fetch nebude blokovat. A naopak, to volani
muze vyridit primo klientska vrstva, takze cekani na pripravenost toho
sitoveho socketu taky neprojde. A to uz nemluvim o IPC ...
Myslim, ze ridit volani DBI pomoci nejakeho stavu nejake vnitrnosti
DBI / DBD::Oracle / OCI knihoven neni rozumna cesta.
> Toto je idealni pripad, ve skutecnosti bych pripustil
> i ze v dobe connect, prepare a execute bude proces zablokovany,
> ale na fetch uz bych cekat nechtel a chtel bych stihat obsluhovat
> i ostatni spojeni.
>
> Muzu samozrejme databazoveho klienta dat do samostatneho procesu,
> ale to neni prilis rozumne (delal bych vlastne jen proxy tomu DBI).
>
> Jak byste tohle v perlu delali?
Ja bych to delal presne tim samostatnym procesem. Pripadne, pokud bych
chtel byt hrdina, tak bych udelal nejaky pokus s thready.
--
--------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Satellite, Catalyst | Only self-confident people can be simple.
Další informace o konferenci Perl