Objektové cachování v Javě

Z FI WIKI
(Přesměrováno z DP:xdolozil)
Přejít na: navigace, hledání
Tato stránka obsahuje neaktuální informace a měla by být aktualizována. Berte ji proto prosím s rezervou!


Předběžné zadání

Cílem práce je analýza cachování objektů v Javě a porovnání frameworků pro cachovaní. Zejména: http://java-source.net/open-source/cache-solutions

JSR 107 - Java Caching API

Pro objektové cachování v Javě existuje jsr https://jsr-107-interest.dev.java.net/. Základní principy a funkcionalita je popsána zde JSR 107

Seznam zpracovávaných frameworků

Obsah práce

  • Vysvětlení pojmu kešování, obecné výhody a nevýhody, užití v praxi, vysvětlení základních implementačních principů
  • Základní charakteristika zpracovávaných frameworků, co mají společné, v čem se liší
  • Testování výkonnosti, porovnání

Úvod

Vyrovnávací paměť je soubor dočasných dat, které buď duplikují data umístěná původně někde jindy nebo jsou výsledkem počítání. V okamžiku, kdy jsou data v paměti, k nim může opakovaně přistupovat. Důležité je, že tyto přístupy jsou rychlejší než původní dotazy a tím i levnější.

Cache pracuje na principu lokality. Data, která jsou blíž nebo která byla použita, budou s velkou pravděpodobností použita v blízké době znovu.

Paretův princip

Základem tohoto principu je fakt, že osmdesát procent následků pochází z dvaceti procent příčin. Pokud se pohybujeme v IT prostředí, lze tento princip využít v optimalizaci zdrojů na základě pozorování, že 80% zdrojů je použito 20% operací. V softwarovém inženýrství lze udělat ještě lepší aproxamaci a říci, že 90% výpočtu programu použije 10% kódu.

Princip lze použít i v případě zdůvodnění přínosu cachování. Pokud se k 20% objektů přistupuje v 80% času a lze optimalizovat získávání těchto 20% pomocí cachování, výkon aplikace se zvýší.

Kdy zvolit cachování

Otázku, zda cachování zvýší vždy výkon aplikace, není lehké odpověděť. Obecně lze říci, že většinou ano, zejmnéna kvůli Paretovu principu. Záleží na tom, jestli je aplikace vázaná na CPU nebo na I/O operace. Pokud se jedná o I/O aplikaci, tak čas výpočtu závisí především na rychlosti vstupních a výstupních operací. V případě vazby na CPU je rychlost celé aplikace závislá na rychlosti CPU a operační paměti.

Vylepšení výkonu aplikací vázaných na CPU

  • vylepšení algoritmu
  • paralelizace procesu
  • zvýšení výpočetního výkonu (větší rychlost CPU)

Cachování lze v těchto aplikacích použít k udržování výpočtů nebo mezivýpočtů. Pokud to princip aplikace povoluje, mohou být tato data znovu využita. Příkladem například mohou být dynamické webové stránky, jejichž příprava je výpočtově velmi náročná.

Vylepšení výkonu aplikací vázaných na I/O operace

Tento typ aplikací většinou komunikuje pomocí počítačové sítě nebo provádí operace na pevném disku. Optimalizace sítě spočívá ve vylepšení:

  • vytváření a rušení spojení (například do databáze)
  • optimalizace zpoždění nebo doby obrátky
  • optimalizace vytváření objektů na základě získaných dat a naopak (marshalling, unmarshalling)

Pokud je to možné, tak udržování objektů, které ke svému vzniku využívají vyjmenované možnosti, zvýší výkon aplikace.

Jak moc zvýší cachování výkon aplikace

Obecně lze říci, že to závisí na několika faktorech.

  • kolikrát jsou načtená data znovupoužita aplikací
  • jak moc se zmenší čas odpovědi při použití cachování

V aplikacích vázaných na vstupní a výstupní operace odpovídá většina času odpovědi získání dat z databáze. Těchto aplikací je většina. Zrychlení v těchto případech závisí na znovupoužití načtených dat.

V systémech, kde jsou získaná data použita právě jednou je nulové zrychlení. Pokud jsou data použita mnohokrát je zrychlení velké.

Distribuované cachování