Přeskočit navigaci

Co je ukládání do mezipaměti?

Vývojáři a odborníci z oblasti IT používají ukládání do mezipaměti k ukládání a přístupu k datům typu klíč-hodnota v dočasné paměti rychleji a s menším úsilím, než tomu je u dat uložených v konvenčním úložišti dat. Mezipaměti jsou užitečné v několika scénářích zahrnujících několik technologií, jako je ukládání do mezipaměti prostřednictvím počítače s pamětí RAM, síťové ukládání do mezipaměti v síti pro doručování obsahu, webová mezipaměť pro webové multimediální data nebo cloudová mezipaměť, která pomáhá zvyšovat odolnost cloudových aplikací. Vývojáři často navrhují aplikace tak, aby ukládaly zpracovaná data do mezipaměti a přetvořily je pro rychlejší zpracovávání žádostí, než jaké je běžné u standardních databázových dotazů.

Ukládání do mezipaměti můžete použít ke snížení nákladů na databáze, k zajištění vyšší propustnosti a nižší latence, než dokáže nabídnout většina databázi, a ke zvýšení výkonu cloudových a webových aplikací.

Jak funguje ukládání do mezipaměti v databázích?

Vývojáři můžou primární databázi doplnit o mezipaměť databáze, kterou můžou umístit do data nebo do aplikace, nebo ji nastavit jako samostatnou vrstvu. Ačkoli se při ukládání rozsáhlých, odolných a úplných datových sad obvykle spoléhají na konvenční databáze, používají mezipaměť k ukládání přechodných podmnožin dat pro rychlé načtení.

Ukládání do mezipaměti můžete používat pro všechny typy datových úložišť, včetně databází NoSQL i relačních databází, jako jsou SQL server, MySQLnebo MariaDB. Ukládání do mezipaměti funguje dobře i s mnoha konkrétními datovými platformami, jako jsou Azure Database for PostgreSQL, Azure SQL Database nebo Azure SQL Managed Instance. Než začnete s konfigurací datové architektury, doporučujeme vám zjistit, který typ datového úložiště bude nejlépe splňovat vaše požadavky. Měli byste například porozumět tomu, co je to PostgreSQL, než ho použijete ke kombinování relačních a nestrukturovaných datových úložišť.

Výhody vrstev mezipaměti a co to vlastně Redis je?

Vývojáři používají víceúrovňové mezipaměti, neboli vrstvy mezipaměti, k ukládání různých typů dat v oddělených mezipamětích podle požadavků. Přidáním vrstvy mezipaměti, nebo několika takových vrstev, můžete výrazně zvýšit propustnost a výkon latence datové vrstvy.

Redis je oblíbená open source datová struktura v paměti, která se používá k vytváření vrstev mezipaměti a dalších úložišť dat. Nedávná studie ukázala, že přidání Azure Cache for Redisdo ukázkové aplikace zvýšilo propustnost dat o 800 procent a zlepšilo výkon latence o více než 1 000 procent1.

Mezipaměti také dokáží snížit celkové náklady na vlastnictví u datové vrstvy. Použitím mezipamětí k obsluhování nejběžnějších dotazů a snížení zátěže databáze můžete snížit nutnost nadměrného zřizování instancí databáze, což výrazně ušetří náklady a sníží celkové náklady na vlastnictví.

Typy ukládání do mezipaměti

Vaše strategie ukládání do mezipaměti závisí na tom, jak vaše aplikace čte a zapisuje data. Je vaše aplikace náročná na zápis, nebo se data zapíší jednorázově a dochází k jejich častému čtení? Jsou vrácená data vždy jedinečná? Různé vzory přístupu k datům budou mít vliv na to, jak mezipaměť nakonfigurujete. Běžné typy ukládání do mezipaměti zahrnují doplňování mezipaměti, ukládání pro čtení nebo zápis a opožděný zápis či zpětný zápis.

Doplňování mezipaměti

U aplikací s úlohami náročnými na čtení vývojáři často využívají programovací vzor doplňované mezipaměti (neboli side-cache). Doplňovanou mezipaměť umístí mimo aplikaci, která se pak může s mezipamětí spojit, aby se dotazovala na data a načítala je. Pokud data v mezipaměti nejsou, může se spojit přímo s databází. Při načítání dat je aplikace kopíruje do mezipaměti pro účely budoucích dotazů.

Pomocí doplňované mezipaměti můžete zlepšit výkon aplikace, udržet konzistenci mezi úložištěm dat a mezipamětí a zabránit v zastarání dat v mezipaměti.

Mezipaměť pro čtení i zápis

Mezipaměti pro čtení se udržují v aktualizovaném stavu, zatímco u ukládání do mezipaměti se zápisem aplikace zapisuje data do mezipaměti a potom do databáze. Obě mezipaměti leží jsou v souladu s databází a aplikace s nimi zachází jako s hlavním úložištěm data.

Mezipaměti pro čtení pomáhají zjednodušit aplikace, ve kterých dochází k opakovanému vyžadování dat ale samotná mezipaměť je daleko složitější, zatímco proces dvoustupňového zápisu může způsobit latenci. Vývojáři párují obě z nich, aby zajistili konzistenci dat mezi databází a mezipamětí, snížili latenci zápisu do mezipaměti a usnadnili aktualizaci mezipaměti pro čtení.

Díky ukládání do mezipaměti pro čtení i zápis můžou vývojáři zjednodušit kód aplikace, zvýšit škálovatelnost mezipaměti a minimalizovat zatížení databáze.

Mezipaměť s opožděným zápisem nebo zpětným zápisem

V tomto scénáři aplikace zapisuje data do mezipaměti, což je okamžitě potvrzeno, a samotná mezipaměť poté na pozadí zapisuje data zpět do databáze. Mezipaměti s opožděným zápisem, které se jsou někdy označované jako mezipaměti se zpětným zápisem, jsou nejvhodnější pro úlohy s velkými nároky na zápis, a zlepšují výkon zápisu, protože aplikace nemusí před přechodem na další úlohu čekat na dokončení zápisu.

Distribuovaná mezipaměť vs. úložiště relace

Lidé často zaměňují distribuované mezipaměti s úložišti relací, které jsou si sice podobné, ale mají různé požadavky a účely. Místo aby vývojáři použili k doplnění databáze distribuovanou mezipaměť, implementují pro profily, zprávy a ostatní uživatelská data v relačně orientovaných aplikacích (jako jsou webové aplikace) úložiště relací, což jsou dočasná úložiště dat v uživatelské vrstvě.

Co je to úložiště relací?

Aplikace orientované na relace sledují akce, které uživatele provádějí, když jsou k těmto aplikacím přihlášeni. Abyste tato data zachovali, když se uživatel odhlásí, můžete je uchovávat v úložišti relací, což zlepší správu relací, sníží náklady a navýší výkon aplikace.

Jak se liší úložiště relace od ukládání databáze do mezipaměti?

V úložišti relací nedochází ke sdílení dat mezi různými uživateli, zatímco u ukládání do mezipaměti mají různí uživatelé přístup ke stejné mezipaměti. Vývojáři používají ukládání do mezipaměti ke zlepšení výkonu databáze nebo instance úložiště, zatímco úložiště relací používají ke zvýšení výkonu aplikací, tím, že zapisují data do úložiště v paměti. Tím se eliminuje nutnost vůbec přistupovat k databázi.

Data zapsaná do úložiště relace jsou obvykle krátkodobá, zatímco u dat zapsaných do mezipaměti primární databáze se čeká, že obvykle vydrží mnohem déle. Úložiště relací vyžaduje replikaci, vysokou dostupnost a odolnost dat aby se zajistilo, že nedojde ke ztrátě transakčních data a že uživatelé zůstanou aktivní. Na druhou stranu, pokud dojde ke ztrátě dat v doplňováné mezipaměti, je vždy k dispozici kopie v trvalé databázi.

Výhody ukládání do mezipaměti

Lepší výkon aplikace

Čtení dat z mezipaměti v paměti je mnohem rychlejší, než přístup k datům v datovém úložišti založeném na disku. Díky rychlejším přístupu k datům se výrazně zlepší celkové prostředí aplikace.

Snížené využití databáze a náklady

Ukládání do mezipaměti vede k menšímu počtu databázových dotazů, zlepšuje výkon a snižuje náklady omezením nutnosti škálovat databázovou infrastrukturu a snížením poplatků za propustnost.

Škálovatelný a předvídatelný výkon

Jediná instance mezipaměti dokáže zpracovat miliony žádosti za sekundu a proto nabízí úroveň propustnosti a škálovatelnosti, které se databáze nemůžou vyrovnat. Ukládání do mezipaměti také nabízí flexibilitu, kterou potřebujete ať už škálujete na více instancí, nebo vertikálně škálujete vaše aplikace a úložiště dat. Vaše aplikace pak může mnoha uživatelům umožnit souběžný přístup ke stejným souborům, aniž by se zvýšilo zatížení back-endových databází. A pokud v aplikaci často dochází ke skokovým nárůstům využití a k vysoké propustnosti, můžou mezipaměti v paměti latency mírnit.

K čemu se používá ukládání do paměti?

Ukládání výstupů do mezipaměti

Ukládání výstupů do mezipaměti pomáhá zvýšit výkon webové stránky, tím, že dochází k uložení celého zdrojového kódu stránky, jako jsou skripty HTML a klientské skripty, které server odesílá k vykreslování do prohlížečů. Pokaždé, když si uživatel stránku zobrazí, server uloží výstupní kód v paměti aplikace do mezipaměti. Toto aplikaci umožňuje zpracovávat žádosti aniž by docházelo ke spuštění kódu stránky nebo ke komunikaci s jinými servery.

Ukládání dat a databází do mezipaměti

Rychlost a propustnost databáze můžou bát klíčovými faktory celkového výkonu aplikace. Ukládání databází do mezipaměti se používá pro častá volání dat, která se často nemění, jako jsou cenová data nebo data inventáře. Pomáhá webovým stránkám a aplikacím rychleji načítat při zvyšování propustnosti a snižování latence načítání dat z back-endových databází.

Ukládání dat o relaci uživatele

Uživatelé aplikací často generují data, která musí být uložena po krátkou dobu. Úložiště dat v paměti, jako je Redis, je ideální pro efektivní a spolehlivé ukládání velkých objemů relačních dat, jako jsou uživatelské vstupy, položky v nákupních košících nebo předvolby přizpůsobení s nižšími náklady, než úložiště nebo databáze.

Zprostředkovatelé zpráv a architektury publikace/odběru

Pro cloudové aplikace je často nezbytná výměna data mezi službami a pomocí ukládání do mezipaměti můžou implementovat architektury pro publikaci nebo odběr a architektury zprostředkovatele zpráv. Ty sníží latenci a urychlují správu dat.

Aplikace a rozhraní API

Podobně jako tomu je v prohlížečích, i aplikace ukládají důležité soubory a data, aby v případě potřeby mohly daná data rychle znovu načíst. Odpovědi rozhraní API uložené v mezipaměti eliminují požadavky nebo zátěž na serverech a v databázích aplikací a tím zajišťují rychlejší odezvu a lepší výkon.

1tvrzení o výkonu se zakládají na datech ze studie zadané společností Microsoft a provedené společností GigaOm v říjnu 2020. Studie porovnávala výkon testovací aplikace používající databázi Azure s implementovanou službou Azure Cache for Redis jako řešení ukládání do mezipaměti a její výkon bez této implementace. Ve studii byly jako databázové prvky použity Azure SQL Database a Azure DB for PostgreSQL. Použila se instance Azure SQL Database pro obecné účely se 2 virtuálními jádry Gen5 a instance Azure DB for PostgreSQL pro obecné účely se 2 virtuálními jádry se 6 Gigabajtovou P1 prémiovou instancí Azure pro službu Redis. Tyto výsledky se porovnávaly s instancemi Azure SQL Database pro obecné účely s 8, 16, 24 a 32 virtuálními jádry Gen5 a s instancemi Azure Database for PostgreSQL pro obecné účely s 8, 16, 24 a 32 virtuálními jádry bez služby Azure Cache for Redis. Referenční (benchmark) data pocházejí z testu zatížení databáze webové aplikace simulujícího běžnou webovou aplikaci a back-endovou databázi, které zaplavují narůstající HTTP požadavky. Skutečné výsledky se můžou lišit v závislosti na konfiguraci a oblasti. Přečtěte si úplnou studii..

Pomocí plně spravované služby Redis můžete do vaší aplikace přidat vrstvu hbitého ukládání do mezipaměti: Zjistěte, jak začít používat Azure Cache for Redis.

Pokud chcete u vysoce výkonných aplikací spouštět flexibiliní ukládání do paměti založené na souborech, přečtěte si informace mezipaměti o Azure HPC Cache.