Deduplikacja danych jest używana by zmniejszyć ilość danych – zarówno do przechowywania, jak i do przesyłu przez sieć – od lat dziewięćdziesiątych ubiegłego wieku. Fenomen deduplikacji polega na dwóch czynnikach. Po pierwsze, deduplikacja wykorzystuje algorytmy hash’owe zamiast tradycyjnego porównywania danych bajt-po-bajcie. Zapewnia to szybkość całemu procesowi, bez rezygnowania z niezawodności. Po drugie, globalna kompresja rozbija dane na małe kawałki (bloki), co usprawnia proces ich porównywania. To właśnie metody rozbijania danych na porównywalne cząstki sprawiły, iż spotykane są cztery metody deduplikacji.
Eliminacja identycznych duplikatów, Deduplikacja blokiem o stałej wielkości, Deduplikacja blokiem o zmiennej wielkości, Deduplikacja progresywna
Eliminacja identycznych duplikatów
Historia deduplikacji rozpoczęła się od eliminacji plików będących identycznymi kopiami pliku uprzednio zapisane go. Była to pierwsza metoda globalnej kompresji oparta na algorytmie hashowym – jeśli hashe dwóch plików są takie same, pliki są traktowane jako identyczne, nawet jeśli mają inne nazwy, czy daty modyfikacji. Metoda ta była szczególnie przydatna w przypadku eliminacji duplikatów w postaci załączników rozsyłanych pocztą elektroniczną lub plików systemowych rezydujących na komputerach spiętych w sieć. Dużą wadą tego rozwiązania jest fakt, iż jeśli plik zostanie w jakikolwiek sposób zmodyfikowany (wystarczy zmiana pojedynczego bajtu), musi on zostać w całości zapisany na nowo.
Deduplikacja blokiem o stałej wielkości
Deduplikacja fixed-block dzieli pliki na bloki (czyli omawiane wyżej sekwencje bajtów) o stałej wielkości (typowo między 4kB a 64kB). Nie porównuje ona hash’ów całych plików, jak w przypadku Single-Instance Storage, lecz tworzy hash dla każdego bloku z osobna. Daje to wymierne korzyści, gdy duże pliki rosną przez dodawanie do nich nowych danych, lub kiedy długie sekwencje bajtów są modyfikowane między zadaniami backupowymi. Przykładem danych, które rosną w sposób umożliwiający deduplikację fixed-block są pliki poczty elektronicznej (np. MS Outlook .PST) oraz niektóre rodzaje baz danych. Minusem tego rodzaju deduplikacji jest niemożność rozpoznania kopii sekwencji bajtów, gdy dane zostają zmodyfikowane w miejscu innym niż na końcu – jedynie dopisanie nowych rekordów danych w miejscu, gdzie uprzednio zapisany plik się kończy umożliwia efektywne działanie deduplikacji fixed-block.
Deduplikacja blokiem o zmiennej wielkości
Deduplikacja variable-block ustala „w locie” wielkość bloku porównującego. Dzięki temu ten rodzaj deduplikacji jest w stanie rozpoznać zmiany nie tylko dodane na końcu pliku, ale też te dokonane na jego początku, bądź w środku. Przykładowo, jeśli dane są modyfikowane wewnątrz pliku (pomiędzy poszczególnymi blokami), wielkość bloku zmienia się wraz ze zmianą zawartości, co umożliwia zapis jedynie nowo dodanych danych i referencję do następujących po nich danych uprzednio zapisanych. Mimo większej efektywności pod względem osiąganego współczynnika kompresji, deduplikacja variable-block wymaga znacznie bardziej żmudnego przetwarzania danych niż fixed-block. Jest to o tyle problematyczne, iż w przypadku tego rodzaju globalnej kompresji nie ma możliwości prostej kontroli nad wielkością bloku. Co prawda średnie wielkości bloków mogą zostać predefiniowane, ale nie zmienia to faktu, iż pozostałe bloki mogą mieć rozmiar od pojedynczego bajtu aż do wielkości całego pliku. W rezultacie proces eliminacji duplikatów jest wolny. Ogólną efektywność deduplikacji blokiem o zmiennej wielkości pogarszają także przypadki skrajnych wielkości bloków. Referencje bloków zbyt małych nie zajmują wymiernie mniej miejsca od duplikatów tych sekwencji. Z kolei rozmiar bloków zbyt dużych ogranicza użyteczność deduplikacji do poziomu eliminacji identycznych duplikatów (Single-Instance Storage).