Replikering ( engelsk replikation ) er en mekanisme til at synkronisere indholdet af flere kopier af et objekt (f.eks. indholdet af en database ). Replikering er processen med at kopiere data fra en kilde til en anden (eller mange andre) og omvendt.
Med replikering kan ændringer foretaget i én kopi af et objekt udbredes til andre kopier.
Et eksempel på en softwareløsning kan være DRBD , en blokenhed designet til at bygge fejltolerante klyngesystemer på et operativsystem med en Linux-kerne .
Replikering kan være synkron eller asynkron , som beskrevet nedenfor.
I tilfælde af synkron replikering , hvis en given replika opdateres, skal alle andre replikaer af det samme stykke data også opdateres i den samme transaktion . Logisk betyder det, at der kun er én version af dataene.
I de fleste produkter implementeres synkron replikering ved hjælp af triggerprocedurer (måske skjult og administreret af systemet). Men synkron replikering har den ulempe, at det skaber en ekstra overhead for alle transaktioner, hvor eventuelle replikaer opdateres (derudover kan der være problemer relateret til datatilgængelighed).
I tilfælde af asynkron replikering udbredes opdateringen af én replika til andre efter nogen tid og ikke i samme transaktion. Således introducerer asynkron replikering en forsinkelse eller timeout, hvor individuelle replikaer muligvis ikke er identiske (det vil sige, at definitionen af en replika ikke er helt passende, da vi ikke har at gøre med nøjagtige og rettidigt oprettede kopier).
I de fleste produkter implementeres asynkron replikering ved at læse transaktionsloggen eller en vedvarende kø af de opdateringer, der skal distribueres. Asynkron replikering har den fordel, at yderligere replikeringsomkostninger ikke er forbundet med opdateringstransaktioner, hvilket kan være afgørende for driften af hele virksomheden og stille høje ydeevnekrav.
Ulemperne ved denne ordning omfatter, at dataene kan være inkonsistente (det vil sige inkompatible fra brugerens synspunkt). Med andre ord kan redundans vise sig på det logiske niveau, hvilket strengt taget betyder, at begrebet kontrolleret redundans ikke er gældende i dette tilfælde.
Overvej kort problemet med konsistens (eller rettere, inkonsistens). Faktum er, at replikaer kan blive uforenelige som følge af situationer, der er svære (eller endda umulige) at undgå, og hvis konsekvenser er svære at rette op på.
Især kan der opstå konflikter om rækkefølgen, hvori opdateringer skal anvendes. Antag for eksempel, at transaktion A indsætter en række i replika X, og derefter sletter transaktion B rækken, og antag også, at Y er en replika af X. Hvis opdateringer udbredes til Y, men injiceres i replika Y i omvendt rækkefølge ( f.eks. for eksempel på grund af forskellige transmissionsforsinkelser), så finder transaktion B ikke en række i Y, der skal slettes, og udfører ikke sin handling, hvorefter transaktion A indsætter denne række. Nettoeffekten er, at replika Y indeholder den angivne række, men replika X gør det ikke.
Generelt er opgaverne med at eliminere konfliktsituationer og sikre konsistensen af replikaer meget komplekse. Det skal bemærkes, at i det mindste i det kommercielle databasebrugerfællesskab er udtrykket replikering kommet til at betyde overvejende (eller endda udelukkende) asynkron replikering.
Den største forskel mellem replikering og kopikontrol er:
Hvis der bruges replikering, udbredes opdateringen af en replika til sidst automatisk til alle de andre.
I kopikontroltilstand er der derimod ingen sådan automatisk distribution af opdateringer. Datakopier oprettes og administreres ved hjælp af en batch- eller baggrundsproces, der er adskilt i tid fra opdateringstransaktioner.
Kopiering er generelt mere effektiv end replikering, fordi store mængder data kan kopieres på én gang. Ulemperne omfatter, at kopier af data for det meste ikke er identiske med de underliggende data, så brugerne skal være opmærksomme på præcis, hvornår dataene blev synkroniseret.
Typisk forenkles kopihåndtering af kravet om, at opdateringer skal anvendes i henhold til det primære kopiskema af den ene eller anden art.