Istnieje wiele opcji; Najprostszym oczywiście jest po prostu nagrywanie wszystkich wersji niezależnie. W przypadku witryny takiej jak stackoverflow, gdzie posty nie są zwykle edytowane bardzo wiele razy, jest to właściwe. Jednak dla czegoś jak wikipedia, trzeba być bardziej sprytnym, aby zaoszczędzić miejsce.
W przypadku Wikipedii strony są początkowo przechowywane z każdą wersją oddzielną, w text table. Okresowo wiele starszych wersji jest kompresowanych razem, a następnie pakowane do jednego pola. Ponieważ będzie wiele powtórzeń, w ten sposób zaoszczędzisz dużo miejsca.
Możesz również sprawdzić, jak radzą sobie niektóre systemy kontroli wersji - na przykład subversion używa skip deltas, gdzie wersje są przechowywane jako różnica w porównaniu z wersją do połowy historii. Oznacza to, że będzie trzeba zbadać co najwyżej korekty O (lg n), aby zrekonstruować weryfikację zainteresowania.
Git, z drugiej strony, używa czegoś bardziej podobnego do podejścia Wikipedii. Wersje są najpierw przechowywane jako indywidualnie skompresowane "luźne" obiekty, a następnie okresowo git przejmuje wszystkie luźne obiekty, sortuje je według nieco złożonej heurystyki, a następnie buduje skompresowane delty między "pobliskimi" obiektami i zrzuca wynik jako packfile. Liczba wersji, które należy odczytać w celu odtworzenia pliku, jest ograniczona przez argument do procesu budowania pakietu. Ma to interesującą właściwość, że delty mogą być budowane między obiektami, które nie są ze sobą powiązane, w niektórych przypadkach.
+1 dobre pytanie –