Дифференциальное сжатие на расстоянии

Дифференциальное сжатие на расстоянии (англ. Remote Differential Compression, RDC) — синхронизирующий алгоритм по клиент–серверной модели, позволяющий синхронизировать содержимое двух файлов путём передачи только различий между ними. Был представлен компанией Microsoft вместе с Windows Server 2003 R2, включён в последующие клиентские и серверные операционные системы Windows, однако по состоянию на 2019 год развитие технологии прекращено и ни один продукт Microsoft её не использует.

В отличие от бинарного дельта-сжатия (BDC), которое рассчитано на работу только с известными версиями одного файла, дифференциальное сжатие на расстоянии не предполагает схожести файлов или ведения их версий. Различия между файлами вычисляются «на лету», что делает RDC подходящим для эффективной синхронизации файлов, обновлённых независимо друг от друга, когда пропускная способность сети ограничена, либо когда файлы велики, но различия между ними малы.

Алгоритм основан на определении контрольных сумм блоков каждого файла локально на обеих сторонах репликации. Поскольку многие типы изменений в файле вызывают смещение содержимого без значительных изменений (например, небольшая вставка или удаление в начале файла может полностью сместить дальнейшее содержимое относительно исходного), границы блоков для сравнения определяются не произвольными постоянными точками разреза, а содержимым самих сегментов файла. Таким образом, если часть файла изменилась по длине или блоки содержимого были перемещены, границы блоков для неизменённых фрагментов сохраняются относительно содержимого, и последовательность контрольных сумм (отпечатков) для этих блоков не меняется, а только смещается по положению. Сравнивая все хеши файла с хешами той же версии файла на другой стороне репликационной пары, RDC выявляет, какие блоки изменились, а какие нет, даже если содержимое файла было существенно перемешано. Поскольку сравнение больших файлов требует существенных вычислений множественных подписей, алгоритм рекурсивно применяется к множествам хешей, чтобы определить, какие блоки изменились или были перемещены, что значительно сокращает объём передаваемых данных при сравнении файлов.

В более поздних версиях Windows поддерживается межфайловой режим RDC (cross-file RDC), который находит файлы, схожие с синхронизируемым, и использует идентичные блоки таких файлов для уменьшения передаваемых по сети данных. Межфайловой RDC способен использовать блоки до пяти схожих файлов[1].

По многим параметрам дифференциальное сжатие на расстоянии схоже со старым (1996) протоколом rsync, но реализует некоторые нововведения, в частности, рекурсивный алгоритм и межфайловой режим[2].

В операционных системах Windows RDC реализован в форме динамической библиотеки MSRDC.DLL, которая присутствует в каталоге %SYSTEMROOT%\System32 только если технология активирована. Существуют немногие программы, использующие данную технологию, особенно в клиентских системах. Согласно интернет-слухам, включение RDC якобы существенно замедляет локальные копирования файлов и не рекомендуется к использованию; этот миф детально опровергнут в публикации Microsoft TechNet[3], несмотря на регулярные сообщения в интернет-форумах о том, что отключение RDC приводит к восстановлению скорости передачи.

Прекращение поддержки

С выходом Windows Server 2019 поддержка RDC была включена в раздел «Функции, развитие которых прекращено» (и может быть полностью убрана в будущих обновлениях) с примечанием: «В настоящее время поддержка RDC не используется ни одним продуктом Microsoft»[4].

Примечания