Ukládání do mezipaměti databáze - Database caching

Ukládání do mezipaměti databáze je proces zahrnutý do návrhu počítačových aplikací, které generují webové stránky na vyžádání (dynamicky) přístupem k back-endovým databázím.

Když jsou tyto aplikace nasazeny ve vícevrstvých prostředích, která zahrnují klienty založené na prohlížeči, webové aplikační servery a back-endové databáze, pro dosažení vysoké škálovatelnosti a výkonu se používá ukládání do mezipaměti na střední úrovni.

V architektuře tři stupně se aplikační software tier a ukládání dat vrstva může být v různých hostitelích. Propustnost aplikace může být omezena rychlostí sítě . Toto omezení lze minimalizovat tím, že bude databáze na úrovni aplikace. Protože komerční databázový software rozsáhle využívá systémové prostředky, není vždy praktické mít aplikaci a databázi na stejném hostiteli. V tomto případě lze k ukládání dat do mezipaměti dat z komerčního systému správy databáze použít lehčí databázovou aplikaci .

Výhody

Ukládání do mezipaměti databáze zlepšuje škálovatelnost distribucí vytížení dotazů z back-endu do několika levných front-end systémů. Umožňuje flexibilitu při zpracování dat; například data platinových zákazníků lze ukládat do mezipaměti, zatímco data běžných zákazníků nejsou. Ukládání do mezipaměti může zlepšit dostupnost dat tím, že poskytuje nepřetržitou službu pro aplikace, které závisí pouze na tabulkách v mezipaměti, i když je back-end server nedostupný. Další výhodou je vylepšená rychlost přístupu k datům způsobená lokalitou dat a vyhlazení špiček zatížení tím, že se zamezí zpáteční cestě mezi střední a datovou vrstvou.

Potenciální prvky návrhu

  • Aktualizovatelné tabulky mezipaměti: Mnoho systémů mezipaměti je pouze ke čtení, což omezuje jejich použití na malý segment aplikací, aplikace v reálném čase.
  • Obousměrné aktualizace: U aktualizovatelných mezipamětí by se aktualizace, které se dějí v mezipaměti, měly šířit do cílové databáze a všechny aktualizace, které se dějí přímo v cílové databázi, by měly přijít do mezipaměti automaticky.
  • Synchronní a asynchronní šíření aktualizací: Aktualizace v tabulce mezipaměti se šíří do cílové databáze ve dvou režimech. Synchronní režim zajišťuje, že po dokončení operace s databází se aktualizace použijí také v cílové databázi. V případě asynchronního režimu jsou aktualizace zpožděny do cílové databáze. Synchronní režim poskytuje vysokou konzistenci mezipaměti a je vhodný pro aplikace v reálném čase. Asynchronní režim poskytuje vysokou propustnost a je vhodný pro aplikace téměř v reálném čase.
  • Granularita více mezipaměti - úroveň databáze, úroveň tabulky a ukládání do mezipaměti sady výsledků: Hlavní části podnikových databází jsou historické a zřídka přístupné. Existují však některé informace, které by měly být okamžitě přístupné, jako jsou data prémiových zákazníků atd.
  • Obnova pro tabulky v mezipaměti: V případě selhání systému nebo napájení by během restartu platformy pro ukládání do mezipaměti měly být obnoveny všechny potvrzené transakce v tabulkách v mezipaměti.
  • Nástroje k ověření koherence mezipaměti: V případě asynchronního režimu šíření aktualizací se může mezipaměť v různých uzlech mezipaměti a cílové databázi lišit. To je třeba vyřešit ručně, s identifikovanými neshodami a v případě potřeby s nápravnými opatřeními.
  • Horizontálně škálovatelné: Clusterové výpočty mohou zvýšit dostupnost a dosáhnout vyvážení zátěže. Ukládání do mezipaměti v klastrovaném prostředí zahrnuje více uzlů a udržuje data v mezipaměti koherentní napříč uzly.
  • Transparentní přístup k tabulkám bez mezipaměti se nachází v cílové databázi: Mezipaměť databáze by měla sledovat dotazy a měla by být schopná inteligentně směrovat do mezipaměti databáze nebo do původní databáze na základě lokality dat bez jakékoli úpravy kódu aplikace .
  • Transparentní selhání při selhání: V případě selhání mezipaměti platformy by neměly být žádné výpadky služby. Připojení klienta by měla být směrována do cílové databáze.
  • Žádné nebo jen velmi málo změn v aplikaci: Podpora standardních rozhraní JDBC, ODBC atd., Díky nimž bude aplikace fungovat bezproblémově bez jakýchkoli změn kódu aplikace. Mělo by směrovat všechna volání uložené procedury do cílové databáze, aby nebylo nutné je migrovat.

produkty

  • Couchbase - https://www.couchbase.com/caching
  • Redis - Distribuovaný databázový systém v paměti, který také podporuje různé scénáře distribuovaného ukládání do mezipaměti
  • GigaSpaces - InsightEdge SmartCache
  • CSQL Cache - do mezipaměti tabulek z MySQL, Postgres a Oracle.
  • memcached - Do mezipaměti výsledková sada dotazů
  • Windows Azure Caching - do mezipaměti výsledková sada dotazů v systému Windows Azure
  • TimesTen - do mezipaměti tabulek ORACLE
  • SafePeak - automatické ukládání výsledných sad dotazů a procedur ze serveru SQL Server do mezipaměti s automatickým vyřazováním mezipaměti pro úplnou správnost dat
  • Apache Ignite
  • GridGain systémy
  • Tarantool - otevřená databáze mezipaměti v paměti s plným aplikačním serverem Lua
  • Heimdall Data - komerční modul pro ukládání do mezipaměti SQL pro Postgres, SQL Server, MySQL a jakýkoli zdroj dat JDBC, s automatickým vystěhováním mezipaměti a mnoha dalšími funkcemi

Reference

externí odkazy