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