Мне нужно хранить два файла A и B, которые очень большие (например, 100 ГБ). Однако B, вероятно, будет похож на A в больших частях, поэтому я мог бы хранить A и diff (A, B). У этой проблемы есть два интересных аспекта:
- Файлы слишком велики для анализа любой известной мне библиотекой различий, потому что они находятся в памяти.
- На самом деле мне не нужен diff - diff обычно имеет вставки, изменения и удаления, потому что он предназначен для чтения людьми. Я могу обойтись меньшим количеством информации: мне нужен только «новый диапазон байтов» и «скопировать байты из старого файла с произвольным смещением».
В настоящее время я не понимаю, как вычислить дельту от A до B в этих условиях. Кто-нибудь знает алгоритм для этого?
Опять же, проблема проста: напишите алгоритм, который может хранить файлы A и B как можно меньшим количеством байтов, учитывая тот факт, что оба они очень похожи.
Дополнительная информация: хотя большие детали могут быть идентичными, они, скорее всего, будут иметь разное смещение и быть не в порядке. Последний факт заключается в том, почему обычный дифференциал может не сэкономить много.