[python] Databázový engine ?
superman
feed na centrum.cz
Neděle Listopad 25 17:40:47 CET 2007
Já tedy co vím, tak prakticky každá rozumná databáze je thread safe, ale
ještě jsem se u databází nesetkal s jiným přístupem, než že databázové
přiojení smí využívat jen thread, který provedl funkci connect. Tedy že
je možné pracovat se stejnou databází v mnoha threadech, ale každý
thread se musí zvlášť připojit na databázi a pracovat s vlastním
spojením k db - nelze connection objekty předávat mezi thready. Tudíž
ani rozpracované transakce. Ale takto to fungovalo, když jsem psal pro
C/C++, třeba něco překvapí.
Ono je potřeba si uvědomit, že dokonalý thread safe přístup je nesmírně
náročný a v podstatě i spotřebovává vysokou režii. Proto neexistuje na
světě nic, co by bylo dokonale thread safe bez omezení (vyjma
jednoduchých věcí). Prostě vždy je nějaké omezení.
Jinak ohledně sqlite a thread safe je naprosto zbytečné zatěžovat tuto
konferenci, protože sám autor na tuto otázku vyčerpávajím způsobem
odpovídá v sql FAQ, takže při aspoň naprostém minimu snahy od
dotazovaného se nemuselo muset v této konferenci toto řešit:
http://www.sqlite.org/faq.html#q6
(našel jsem cca za 5 sekund hledání)
Miloslav Ponkrác
Filip Štědrosnký napsal(a):
> Zdravím,
> měl bych jeden takový dotaz. Pracuji v Pythonu na trochu komplikovanějším
> databázovém systému a potřeboval bych poradit, jaký databázový engine zvolit.
> Může být jak client-server, tak in-process a stačí běžná relační databáze s
> pár typy, žádné objektové hračky nepotřebuji (ale nevadily by). Hlavně
> potřebuji, aby to zvládlo uživatelské funkce (nebo lépe vypočítávané sloupce)
> v Pythonu spouštěné v kontextu procesu, který s databází pracuje (je jen
> jeden). V případě inprocess řešení bych potřeboval, aby bylo thread-safe a
> aby bylo možné používat db z více threadů současně, ideálně včetně více
> rozpracovaných transakcí v různých vláknech. Uvažoval jsem o sqlite3, ale
> tam byl nějaký problém s přístupem z více threadů. Dá se to vůbec nějak
> vyřešit ?
>
> Předem děkuji za všechny odpovědi,
> regnarg
>
>
Další informace o konferenci Python