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