A replikáció ( angol replikáció ) egy olyan mechanizmus, amely egy objektum több másolatának tartalmát (például egy adatbázis tartalmát) szinkronizálja . A replikáció az adatok másolása egyik forrásból a másikba (vagy sok más forrásba) és fordítva.
A replikációval az objektum egy példányán végrehajtott módosítások átvihetők más másolatokra.
Szoftvermegoldásra példa lehet a DRBD , egy blokkeszköz, amelyet arra terveztek, hogy hibatűrő fürtrendszereket építsen Linux kernellel rendelkező operációs rendszeren .
A replikáció lehet szinkron vagy aszinkron , az alábbiak szerint.
Szinkron replikáció esetén , ha egy adott replikát frissítenek, akkor ugyanannak az adatnak az összes többi replikáját is frissíteni kell ugyanabban a tranzakcióban . Logikusan ez azt jelenti, hogy az adatoknak csak egy verziója létezik.
A legtöbb termékben a szinkron replikáció triggereljárásokkal valósul meg (talán rejtve és a rendszer által kezelt). A szinkron replikációnak azonban megvan az a hátránya, hogy további többletterhelést hoz létre minden olyan tranzakcióhoz, amelyben a replikák frissítésre kerülnek (ezenkívül problémák adódhatnak az adatok elérhetőségével kapcsolatban).
Aszinkron replikáció esetén az egyik replika frissítése egy idő után továbbadódik másoknak, és nem ugyanabban a tranzakcióban. Így az aszinkron replikáció késleltetést vagy időtúllépést vezet be, amely alatt az egyes replikák nem feltétlenül azonosak (vagyis a replika definíciója nem teljesen megfelelő, mivel nem pontos és időben készített másolatokkal van dolgunk).
A legtöbb termékben az aszinkron replikáció a tranzakciós napló vagy a terjesztendő frissítések állandó sorának beolvasásával valósul meg. Az aszinkron replikációnak megvan az az előnye, hogy a frissítési tranzakciókhoz nem jár több replikációs többlet, ami kritikus lehet az egész vállalat működése szempontjából, és magas teljesítménykövetelményeket támaszthat.
Ennek a sémának a hátrányai közé tartozik, hogy az adatok inkonzisztensek lehetnek (vagyis a felhasználó szemszögéből nem kompatibilisek). Más szóval, a redundancia logikai szinten is megnyilvánulhat, ami szigorúan véve azt jelenti, hogy az irányított redundancia kifejezés ebben az esetben nem alkalmazható.
Tekintsük röviden a következetesség (vagy inkább az inkonzisztencia) problémáját. A helyzet az, hogy a replikák összeférhetetlenné válhatnak olyan helyzetek következtében, amelyeket nehéz (vagy akár lehetetlen) elkerülni, és amelyek következményeit nehéz korrigálni.
Konfliktusok különösen a frissítések alkalmazási sorrendjében merülhetnek fel. Tegyük fel például, hogy az A tranzakció beszúr egy sort az X replikába, majd a B tranzakció törli a sort, és azt is, hogy Y az X replikája. Ha a frissítéseket Y-re továbbítják, de az Y replikába fordított sorrendben injektálják (pl. például az eltérő átviteli késleltetések miatt), akkor a B tranzakció nem talál törlendő sort Y-ban, és nem hajtja végre a műveletet, ami után az A tranzakció beszúrja ezt a sort. A nettó hatás az, hogy az Y replika tartalmazza a megadott sort, de az X replika nem.
Általánosságban elmondható, hogy a konfliktushelyzetek kiküszöbölésének és a replikák konzisztenciájának biztosításának feladatai nagyon összetettek. Meg kell jegyezni, hogy legalábbis a kereskedelmi adatbázis-felhasználók közösségében a replikáció kifejezés túlnyomórészt (vagy akár kizárólag) aszinkron replikációt jelent.
A replikáció és a másolásvezérlés közötti fő különbség a következő:
Ha replikációt használ, akkor az egyik replika frissítése végül automatikusan átterjed az összes többire.
Másolásvezérlő módban ezzel szemben nincs ilyen automatikus frissítések elosztása. Az adatmásolatok létrehozása és kezelése kötegelt vagy háttérfolyamattal történik, amely időben elkülönül a frissítési tranzakcióktól.
A másoláskezelés általában hatékonyabb, mint a replikáció, mivel egyszerre nagy mennyiségű adat másolható. A hátrányok közé tartozik, hogy az adatok másolatai legtöbbször nem azonosak a mögöttes adatokkal, így a felhasználóknak tisztában kell lenniük azzal, hogy pontosan mikor szinkronizálták az adatokat.
A másolatkezelést általában leegyszerűsíti az a követelmény, hogy a frissítéseket az elsődleges másolati séma szerint kell alkalmazni.