tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

[feature request – snad?] Kešování v dibi

před 10 lety

Inza
Člen | 330

Zdravím, prošel jsem si celou dostupnou doku k dibi, API, tohleto fórum i všechny examply v releasech ke stažení, ale nikde sem nenašel nic o tom, zda dibi umí kešovat výsledky SELECT dotazů?

Buďto mi někde něco uniklo a nebo to opravdu neumí?

Mám na mysli tohleto:

dejme tomu, že aplikace pokládá při každém přítupu databázi jeden SELECT dotaz. Třeba na výpis článků. Ty články se zas tak často nemění, třebas jednou denně. A já bych chtěl zařídit, abych v kódu dibi stále pokládal ten jeden a tentýž dotaz a ono mi normálně vracelo výsledky. Ale volitelně bych mohl nastavit u tohoto dotazu kešování a jeho platnost. V takovém případě by dibi při prvním načtení dotazu uložila jeho výsledky do souboru na disk (někam do v konfiguraci dibi specifikovaného adresáře). Jméno souboru by dibi vygenerovalo jako hash SQL příkazu a v něm by mělo uložené výsledky. No a když bych se ho potom ptal na nějaký dotaz, napřed by se podívalo na disk, zda v keši nemá soubor, který odpovídá hashi příkazu a když ano, tak by ho načetlo a zacházelo by s ním stejně, jako s normálním resultem z databáze…

Má dibi nějakou takovouto funkcionalitu? Nebo nemá? Pokud nemá, mohlo by v budoucnu mít? Nebo jsou nějaké zásadní potíže při implementaci takovéto keše?

před 10 lety

kravco
Člen | 723

dibi takúto funkcionalitu nemá, je maličká a svižná, čo je podľa môjho názoru dobre. Dobrá správa je, že ju má niečo iné – Nette.

Logiku, ktorú popisuješ, budeš musieť implementovať sám, no celú starosť o keš, ukladanie, spravovanie, invalidovanie a pod. na seba preberie Nette\Caching (API)

Verím, že pomôže…

před 10 lety

Whitek
hledá kolegy | 299

no hodi se to vubec do db layeru? IMHO by to melo byt spise ve frameworku (tedy v Nette, kde to uz je ; )

//kravco byl rychlejsi : )

Editoval Whitek (21. 3. 2009 12:41)

před 10 lety

Inza
Člen | 330

Jasný. Na tu cache v Nette jsem už koukal a je velmi nice. Chtěl jsem se zeptat, jestli to náhodou nemá dibi také, abych nedělal něco co už je. Díky moc! Jdu ji implementovat;-)…

před 10 lety

phx
Člen | 652

No nevim zda to ma cenu. Jednoduche dotazy trvajici 0,000nic aby z HDD nebudou rychlejsi. Maximalne se usetri dotaz na DB.

Pokud jde o dotaz slozitejsi tak otazka zni KDE kesovat. V DB (query cahce), v dibi, v aplikaci, v sablone? Ale to uz castecne zabiham do Nette.

před 10 lety

deric
Člen | 93

Pokud máš jeden web na který generuješ stejný výstup, tak je určitě lepší vygenerovat celý HTML kód a ten uložit do cache. Případnému návštěvníkovi je přeposlán přímo obsah tohoto souboru a není nutné zpracovávat další php kód (⇒ nižší zátěž na server). Kdyby jsi generoval pro různé weby (podstránky) stejný SQL dotaz, který by byl jinak formátovaný (to jde většinou zajistit pomocí CSS), tak se pořád vyplatí kus HTML kódu (řekněme nějakou tabulku) a ten tahat z cache. Pokud bys chtěl ukládat SQL dotaz, pak by bylo nejlepší uložit přímo DibiResult (serialize do souboru, unserialize, zpracování php kódu – je to docela náročné).