両方とも非常に大きい(100GBなど)2つのファイルAとBを保存する必要があります。ただし、BはAと大部分が類似している可能性が高いため、Aとdiff(A、B)を格納できます。この問題には2つの興味深い側面があります。
- ファイルはメモリ内にあるため、私が知っているdiffライブラリで分析するには大きすぎます
- 私は実際にはdiffを必要としません-diffは人間が読むことを目的としているため、通常は挿入、編集、削除があります。より少ない情報で逃げることができます:「新しいバイト範囲」と「任意のオフセットから古いファイルからバイトをコピーする」だけが必要です。
私は現在、これらの条件下でAからBへのデルタを計算する方法に迷っています。誰かがこれのためのアルゴリズムを知っていますか?
繰り返しになりますが、問題は単純です。ファイルAとBの両方が非常に類似しているという事実を考慮して、ファイルAとBを可能な限り少ないバイト数で格納できるアルゴリズムを記述します。
追加情報:大きな部品は同一である可能性がありますが、オフセットが異なり、故障している可能性があります。最後の事実は、従来の差分があまり節約できない理由です。