Vycisteni DB session

Ing. Pavel PaJaSoft Janoušek PaJaSoft na FoNet.Cz
Pátek Únor 17 14:00:27 CET 2006


Jan Kasprzak <mailto:kas na fi.muni.cz> wrote:
> Mam verit aplikaci ze po sobe nezanecha neporadek? Nebo naopak ztrata
> vykonu neni tak velka a je lepsi pro jistotu uzavrit spojeni vzdy?

	Se stejným problémem se potýkám v JDBC a recyklací... - zkoumal jsem
i vnitřnosti implementací DB poolingů a v podstatě mi z toho vychází závěr,
že jsou jen dvě cesty, ale ani jedna nic moc:

- na recyklaci se vykašlat (- režie)
- dávat si setsakramentský bacha, jak s konexí nakládám v aplikaci (*)

(*) To mimo jiné znamená všudě řádně commitovat, odrolovat transakce, jinak
po úpadku konexe budeme v p...; na začátku po  získání konexe nic
nepředpokládat, ale vše si nastavit na hodnoty, jaké chci dále očekávat
apod.-  Také sranda je, že v tomto případě se liší co je garantováno via
JDBCv3 - objekt Connection a co je garantováno zase v JDBCv3 pro
DataSource... (problematika je to značně obsáhlá a překračující tento
příspěvek) - a nebo jsem blbej (problematiku jsem konzultoval i s jinými DB
guru a Ti mi souhrně sdělili - "neřešíme, spoléháme, že to funguje").
	
	Dále bych si k tomuto dovolil podotknout, a možná je podobný
"problém" i u jiných interfaců do databáze, že třeba MS SQL má režim
implicitních a neimplicitních transakcí... - já jsem na to opět narazil z
Javy, takže pokud používáte Connection, implicitní transakce nepoužíváte
(pokud si o to sami neřeknete), ale pokud využijete DataSource, resp.
mezivrstvu - třeba DBCP - tak už v nich jste ani nevíte jak...

	DB pooling je za málo peněž hodně muziky, ale je to opravdu špatný
pán v případě, kdy uděláme sebemenší chybu nad "řízením" konexe... - ono
obecně pooling ani nemá moc šanci dostat konexi do stavu po "open na TCP",
protože to nikde není definováno = konexe je vydána na pospas aplikaci a co
pošle do konexe... - včetně autocommitů a jiných věcí.

	Já osobně jsem zastánce DB poolingu, ale všechny operace nad konexí
100x projdu, protože nerad bych řešil znovu podobný jeden průšvih, který
nastal přesně za okolností psaných výše...

PS: Prosím no flame, pouze věcné připomínky - obávám se, že, ačkoli moje
experiences jsou vesměs nad JDBC (proti MS SQL (jTDS i MS nativní) a
PostgreSQL), princip je stejný a řešení nemůže být dokonalé, když v ANSI SQL
nic rozumného po této stránce není řečeno a "binární pokec" mezi datastore
(DB server) a klientem (aplikace, knihovna apod.) o ničem podobném také
neslyšel (= uklízí se po close)...

-------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)             FoNet, spol. s r. o.
Technicka podpora, Intranet/Internet     Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz         Tel.: +420  5  4324 4749
WWW:    http://WWW.FoNet.Cz/           E-mail: mailto:Info na FoNet.Cz
-------------------------------------------------------------------  



Další informace o konferenci Databases