Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc

Radim.NET

Radim Hampel : Microsoft business intelligence, performance management and data warehousing
Jak bude ve Whidbey fungovat sql cache dependency?

Spousta vývojářů smutnila nad tím, že v asp.net není možné(bezpracně) svázat položdy v cache s tabulkami v databázi. Museli jsme si poháhat různými pomocnými soubory, na které pak byly cache položky navázány. Já jsem si vytvořil pro jádro eshopu cachovací framework, který pro načítané objekty z db(kategorie, zboží,...) vytvářel xml soubory, na které se objekty odkazovaly. Kromě žádané závislosti to mělo i výkonnostní přínos, protože nebylo nutné pokaždé generovat složité xml dokumenty, načtení z disku je přece jenom rychlejší. Pak, při importu dat do obchodu, se promazaly příslušné xml soubory a při dalším načtení některé stránky se xml dokument vygeneroval opět z db.

Ve Whidbey je možno kromě závislosti na souboru(třída CacheDependency) použít i závislost na sql tabulce(SqlCacheDependency):

HttpContext.Current.Cache.Insert ("Zbozi_121", ObjektZbozi, new SqlCacheDependency ("ObchodDB", "Zbozi");

Kromě tohoto způsobu je možné použí sql závislost i pro output caching, kde myslím tato funkčnost vynikne ještě více. Jako příklad by mohla sloužit stránka, která generuje ceník všech produktů z tabulky, díky sql závislosti tak stránka bude obsahovat vždy aktuální data a díky výstupnímu cachování pak bude zároveň celá v cache, paráda.

<%@ OutputCache Duration="10" VaryByParam="Kategorie" SqlDependency="ObchodDB:Produkty" %>

Pro použití sql závislosti bude nutné(pro sql 7 a 2000) nutné pro požadované tabulky vytvořit trigery, které budou hlídat změny. Tyto změny budou zapisovat do nově vytvořené tabulky, kterou si bude v pravidelných intervalech prohlížet thread určený k promazávání sql závislosti. Je možné si nastavit interval, v kterém bude thread spouštěn, takže je možné kontrolovat tabulku každých několik sekund nebo jednou za hodinu.

 

Zveřejněno 27. května 2004 10:10 by radim

Vedeno pod: ,

Komentář

# re: Jak bude ve Whidbey fungovat sql cache dependency? @ 28. května 2004 8:28

To vypada zajimave, az na ten posledni odstavecek. Fakt to bude muset by takhle pres ruku, tzn. na tabulce, ktera me zajima bude muset byt trigger, ktery cosi narve do jiny tabulky, nad kterou bude cosi hlidat?

FYK

# re: Jak bude ve Whidbey fungovat sql cache dependency? @ 28. května 2004 8:43

No je to tak. V Yukonu uz ten triger byt muset nebude, ten si to bude delat interne. Nevim presne jak ten triger vydapa, rekl bych, ze to bude jenom update sql_dep_db.dbo.update_table set updated = getdate() where table_name = 'db', nic vic.

Radim Hampel

Nejsou povoleny nové komentáře k tomuto příspěvku