Existuje online aplikace pro vysokoškolské knihkupectví, kde si mnoho studentů může koupit knihy. Pokaždé, když se student přihlásí, zobrazí se seznam návrhů na základě jeho předchozí historie nákupů. SQL Server, který uchovává zákaznická data, je v Seattlu, ale tito studenti se přihlašují z celého světa. Proto může utrpět výkon a ti, kteří jsou dále přes WAN, mohou zaznamenat časovou prodlevu pro dotazy.
Místo toho, aby studenti, kteří jsou daleko, trpěli pomalým načítáním stránek, lze replikaci použít ke kopírování a údržbě databázových objektů na více místech a později k synchronizaci, aby byla zachována konzistence. Každý web uchovává tu část databáze, která obsahuje data, která jsou pro něj nejrelevantnější a nejčastěji používaná. Nyní si každý student může zakoupit knihy na webu a data budou synchronizována později.
Jak funguje replikace dat
Existuje několik serverových komponent a za účelem implementace replikace přebírají různé role. Role vydavatele je instance databáze, kde je umístěn zdroj dat a obsahuje objekty, které jsou navrženy jako replikační články. Tyto články jsou seskupeny a publikovány v publikaci, takže data jsou replikována jako jednotka. Vydavatel může mít více publikací.
Role distributora je instance databáze, která obsahuje distribuční databáze. Každý vydavatel je namapován na jednu distribuční databázi, která ukládá replikovaná data od vydavatele, která mají být předána odběrateli. Distributor by mohl být nastaven jako místní distributor, což znamená, že jedna instance serveru může sloužit v rolích vydavatele i distributora. Pokud je distributor nakonfigurován na samostatných serverech, označuje se jako vzdálený distributor.
Role odběratele je instance (instance), která přijímá replikovaná data přihlášením k odběru publikací. Předplatitel není omezen a je oprávněn přijímat data od více vydavatelů a objekty mohou být aktualizovány v závislosti na typu replikace. Pokud je to možné, vydavatel obdrží tyto změny od předplatitele a údaje znovu zveřejní.
Obecně platí, že předplatitel přijímá změny dat dvěma způsoby:prostřednictvím předplatného push nebo předplatného. Rozdíl je v tom, která serverová komponenta aktualizace provádí. Pomocí push distributor podsouvá nebo přímo aktualizuje databázi předplatitelů. Pomocí pull se předplatitel ověří u distributora, aby zjistil, zda došlo k nějakým změnám, a sám provede aktualizaci.
Tři typy replikace dat
K implementaci replikace se používá několik agentů, kteří provádějí úlohy spojené s kopírováním změn, sledováním změn a distribucí dat. Jaké agenty jsou potřeba, závisí na typu použité replikace. Existují tři hlavní typy replikace.
1. Replikace snímku
Replikace snímků je nejjednodušší typ replikace dat a používá se, pokud se data nemění tak často nebo pokud je třeba replikovat malé objemy dat. Pokud například existují tabulky, které se příliš neaktualizují, lze pomocí agentů Snapshot zkopírovat celou databázi jednou nebo opakovaně podle plánu. Distribuční agent je potom zodpovědný za přenos těchto souborů odběrateli.
Tato technika vyžaduje malou údržbu, protože to, co se distribuuje, je snímek dat v konkrétním okamžiku. Také není potřeba sledovat změny, protože pokaždé, když předplatitel obdrží aktualizaci, přepíše celou kopii dat.
Bohužel kopírování celé databáze může přispět k vysoké latenci nebo delšímu čekání, než je žádoucí. Generování snímků vyžaduje držení zámků na objektech. Není vhodné, pokud se data mění často a pravděpodobně to ovlivní výkon – například pokud vydavatel má mnoho aktivit vkládání, aktualizace a odstraňování.
Kromě použití agentů Snapshot Agents k vytváření snímků využívají transakční replikace také agenty Log Reader Agents, které běží u distributora. Agent Log Reader čte transakční protokoly databáze vydavatele a namísto čekání na celou databázi doručuje pouze označené změny. To poskytuje flexibilitu, protože vám dává prostor pro rozhodnutí, jakou část databáze publikovat (např. sloupec). Distribuční agent poté přesune transakce k předplatitelům a tam, kde běží, přizpůsobí strategii předplatného push a pull.
2. Transakční replikace
Standardní transakční replikace znamená, že data u odběratele jsou jen pro čtení. Existují však různé typy publikací, které umožňují provádět úpravy u předplatitele. Pokud jsou tyto změny provedeny, mohou být předány zpět vydavateli, aby je znovu publikoval. Agent Queue Reader Agent se používá pro obousměrnou transakční replikaci a bude číst změny z fronty a aplikovat je u vydavatele.
Transakční replikace je velmi výhodná v prostředí server-to-server, kde lze změny provádět u vydavatele a u předplatitele v reálném čase – například data v reálném čase týkající se toho, jaké lety jsou aktuálně dostupné pro leteckou společnost. V tomto případě nemá smysl používat replikaci snímků, protože aktualizace se obvykle synchronizují jednou denně nebo podle plánu.
3. Sloučit replikaci
Slučovací replikace je jako transakční replikace, ale umožňuje sloučit aktualizace u odběratele i vydavatele. Mnoho předplatitelů může přejít do režimu offline, provádět aktualizace dat v různých časech a poté se vrátit online a synchronizovat tyto změny později.
Tento typ replikace bude pravděpodobně použit v prostředích server-to-client, jako jsou mobilní klienti. Stejně jako snímek a replikace transakce je počáteční snímek vytvořen agentem snímku, ale poté bude agent sloučení sledovat změny a řešit konflikty se spouštěči. Pokud více odběratelů aktualizuje stejné řádky, mohou způsobit problém. Proto je třeba počítat s řešením konfliktů.