Wikipedia, к сожалению ... хранит каждую ревизию в базе данных в виде XML (?) В виде текста.
Взгляните на wikipedia database schema. В частности, последние изменения и текст.
Следовательно, у них есть замечательный O (1) поиск первой копии страницы «биология». У этого есть неудачный побочный эффект, вызвавший technology cost wikipedia на воздушный шар от $ 8 млн USD в 2010-2011 годах до 12 миллионов долларов США в 2011-2012 годах. Это несмотря на то, что жесткие диски (и все остальное) становятся дешевле, а не дороже.
Так много для контроля версий хранения каждого файла. Гит берет милый подход. См. Is the git storage model wasteful?.
В нем хранится каждый файл, аналогичный описанному выше методу. Как только пространство, занятое репо, превышает определенный предел, он выполняет переустановку грубой силы (существует возможность установить, как сильно он пытается - --window = [N], --depth = [N]), что может занять несколько часов.Он использует комбинацию дельта и сжатия без потерь для упомянутой репаки (рекурсивно дельта, а затем применяет без потерь к любым битам, которые у вас есть).
Другие, такие как SVN, используют простое дельта-сжатие. (из памяти, которой вы не должны доверять).
Сноска: Дельта-компрессия сохраняет инкрементные изменения. сжатие без потерь в значительной степени похоже на zip, rar и т. Д.