Replikace ( anglicky replikace ) je mechanismus pro synchronizaci obsahu několika kopií objektu (například obsahu databáze ). Replikace je proces kopírování dat z jednoho zdroje do druhého (nebo mnoha dalších) a naopak.
Díky replikaci lze změny provedené v jedné kopii objektu přenést do dalších kopií.
Příkladem softwarového řešení může být DRBD , blokové zařízení určené k budování clusterových systémů odolných proti chybám na operačním systému s linuxovým jádrem .
Replikace může být synchronní nebo asynchronní , jak je popsáno níže.
V případě synchronní replikace , pokud je daná replika aktualizována, všechny ostatní repliky stejného kusu dat musí být také aktualizovány ve stejné transakci . Logicky to znamená, že existuje pouze jedna verze dat.
Ve většině produktů je synchronní replikace implementována pomocí spouštěcích procedur (možná skrytých a spravovaných systémem). Synchronní replikace má však nevýhodu v tom, že vytváří další režii pro všechny transakce, ve kterých se aktualizují jakékoli repliky (kromě toho mohou nastat problémy související s dostupností dat).
V případě asynchronní replikace se aktualizace jedné repliky po určité době rozšíří na ostatní a ne ve stejné transakci. Asynchronní replikace tedy zavádí zpoždění neboli timeout, během kterého nemusí být jednotlivé repliky ve skutečnosti identické (to znamená, že definice repliky není zcela vhodná, protože se nejedná o přesné a včas vytvořené kopie).
Ve většině produktů je asynchronní replikace implementována čtením protokolu transakcí nebo trvalé fronty aktualizací, které mají být distribuovány. Asynchronní replikace má tu výhodu, že další režie replikace není spojena s aktualizačními transakcemi, které mohou být kritické pro chod celého podniku a klást vysoké požadavky na výkon.
Mezi nevýhody tohoto schématu patří, že data mohou být nekonzistentní (tedy nekompatibilní z pohledu uživatele). Jinými slovy, redundance se může projevit na logické úrovni, což přísně vzato znamená, že termín řízená redundance v tomto případě neplatí.
Zvažte krátce problém konzistence (nebo spíše nekonzistence). Faktem je, že repliky se mohou stát nekompatibilními v důsledku situací, kterým je obtížné (nebo dokonce nemožné) předejít a jejichž důsledky je obtížné napravit.
Konflikty mohou vznikat zejména v pořadí, ve kterém by měly být aktualizace aplikovány. Předpokládejme například, že transakce A vloží řádek do repliky X a poté transakce B odstraní řádek, a také předpokládejme, že Y je replikou X. Pokud se aktualizace šíří do Y, ale vkládají se do repliky Y v opačném pořadí ( např. například kvůli různým zpožděním přenosu), pak transakce B nenajde řádek v Y, který má být odstraněn, a neprovede svou akci, načež transakce A tento řádek vloží. Výsledný efekt je, že replika Y obsahuje zadaný řádek, ale replika X nikoli.
Obecně jsou úkoly eliminace konfliktních situací a zajištění konzistence replik velmi složité. Je třeba poznamenat, že alespoň v komunitě uživatelů komerčních databází pojem replikace znamená převážně (nebo dokonce výhradně) asynchronní replikaci.
Hlavní rozdíl mezi replikací a kontrolou kopírování je:
Pokud se použije replikace, pak se aktualizace jedné repliky nakonec automaticky rozšíří na všechny ostatní.
V režimu kontroly kopírování naopak k žádné takové automatické distribuci aktualizací nedochází. Kopie dat jsou vytvářeny a spravovány pomocí dávkového procesu nebo procesu na pozadí, který je časově oddělený od aktualizačních transakcí.
Správa kopírování je obecně efektivnější než replikace, protože lze zkopírovat velké množství dat najednou. Mezi nevýhody patří, že většinou nejsou kopie dat identické s podkladovými daty, takže uživatelé musí přesně vědět, kdy byla data synchronizována.
Správa kopírování je obvykle zjednodušena požadavkem, aby byly aktualizace aplikovány podle primárního schématu kopírování toho či onoho druhu.